1.通过地址运算符&获得地址值
#includemain(){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,按从小到大的顺序输出
#includemain(){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.用指针法访问数组元素
#includemain(){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中,然后将该数组中的元素值依次输出
#includemain(){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个数的最小值换到最前面的位置
#includemain(){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
6.求二维数组元素的最大值
#includemain(){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;pmax)max=*p;printf("MAX=%d\n",max);}
7.用指针法实现字符串的复制
#includemain(){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个元素的整数型数组中的元素值按逆序存放后输出
#includevoid 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个学生成绩的最高分,最低分和平均成绩
#includefloat 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(*p1x[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个数中的最大值,通过函数返回最大值元素的地址的方法来实现
#includeint *fun(int *x,int n){int i,*y;y=x;for(i=1;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);}