1.通过地址运算符&获得地址值
#include<stdio.h>
main()
{
int a,*p1;
p1=&a;
*p1=123;
printf("%d,%d\n",a,*p1);
scanf("%d",p1);
printf("%d,%d\n",a,*p1);
}
2.输入a,b,按从小到大的顺序输出
#include<stdio.h>
main()
{
int a,b,*p=&a,*q=&b,*t;
scanf("%d,%d",p,q);
if(*p<*q){
t=p;p=q;q=t;
}
printf("a=%d,b=%d\n",a,b);
printf("最大值=%d,最小值=%d\n",*p,*q);
}
3
3.用指针法访问数组元素
#include<stdio.h>
main()
{
int a[10],i,*p=a;
for(i=0;i<10;i++)
scanf("%d",p+i);
for(i=0;i<10;i++)
printf("%4d",*(p+i));
printf("\n");
}
4.从键盘输入10个整数,放入一堆数组a中,然后将该数组中的元素值依次输出
#include<stdio.h>
main()
{
int *p,i,a[10];
p=&a[0];
for(i=0;i<10;i++)
scanf("%d",p++);
p=&a[0];
for(i=0;i<10;i++)
printf("%4d",*p++);
printf("\n");
}
5.将10个数的最小值换到最前面的位置
#include<stdio.h>
main()
{
int t,a[10],*p,*q;
for(p=a;p<=a+9;p++)
scanf("%d",p);
for(q=a,p=a+1;p<=a+9;p++)
if(*p<*q)q=p;
printf("最小值:%d\n",*q);
printf("最小值的位置:%d\n",q-a);
t=*a;*a=*q;*q=t;
printf("交换之后的10个数是:\n");
for(p=a;p<a+10;p++)
printf("%4d",*p);
printf("\n");
}
6.求二维数组元素的最大值
#include<stdio.h>
main()
{
int a[3][4]={{5,1,-8,11},{26,-7,10,129},{2,18,7,16}},*p,max;
for(p=&a[0][0],max=*p;p<&a[0][0]+12;p++)
if(*p>max)max=*p;
printf("MAX=%d\n",max);
}
7.用指针法实现字符串的复制
#include<stdio.h>
main()
{
char a[80],b[80];
char *p1,*p2;
gets(a);
for(p1=a,p2=b;*p1!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
printf("字符串a中的内容:%s\n",a);
printf("字符串b中的内容:%s\n",b);
}
8.将具有10个元素的整数型数组中的元素值按逆序存放后输出
#include<stdio.h>
void swap(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
main()
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<=4;i++)
swap(&a[i],&a[10-i-1]);
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
}
9.用一个函数求10个学生成绩的最高分,最低分和平均成绩
#include<stdio.h>
float fun(int *x,int n,int *p1,int *p2)
{
int i;
float s=0;
*p1=*p2=x[0];
for(i=0;i<n;i++)
{
s=s+x[i];
if(*p1<x[i]) *p1=x[i];
else if(*p2>x[i])*p2=x[i];
}
return s/n;
}
main()
{
int i,a[10],max,min;
float ave;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%4d",a[i]);
ave=fun(a,10,&max,&min);
printf("\n 平均值=%6.2f,最大值=%d,最小值=%d\n",ave,max,min);
}
10.求10个数中的最大值,通过函数返回最大值元素的地址的方法来实现
#include<stdio.h>
int *fun(int *x,int n)
{
int i,*y;
y=x;
for(i=1;i<n;i++)
if(*(x+i)>*y)y=x+i;
return y;
}
main()
{
int a[10],*p,i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=fun(a,10);
printf("最大值=%d\n",*p);
}
文章来源:https://www.toymoban.com/news/detail-757846.html
文章来源地址https://www.toymoban.com/news/detail-757846.html
到了这里,关于有关C语言指针的经典例题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!