指针典型例题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2007-06-2611:46指针应用程序设计1、用间接引用求出两个数中的最大数。main(){intx,y,max,*p1,*p2;p1=&x;p2=&y;scanf(%d%d,p1,p2);/*或scanf(%d%d,&x,&y);*/if(*p1*p2)max=*p1;elsemax=*p2;printf(max=%d\n,max);}2、用间接引用求出三个数中的最大数。main(){intx,y,z,max,*p1,*p2,*p3;p1=&x;p2=&y;p3=&z;scanf(%d%d%d,p1,p2,p3);/*或scanf(%d%d%d,&x,&y,&z);*/if(*p1*p2)max=*p1;elsemax=*p2;if(*p3max)max=*p3;printf(max=%d\n,max);}3、用间接引用将两个数按升序排序并输出。main(){floata,b,t,*p1,*p2;p1=&a;p2=&b;scanf(%f%f,p1,p2);/*或scanf(%f%f,&a,&b);*/if(*p1*p2){t=*p1;*p1=*p2;*p2=t;}printf(%f,%f\n,*p1,*p2);}4、用间接引用将三个数按升序排序并输出。main(){floata,b,c,t,*p1,*p2,*p3;p1=&a;p2=&b;p3=&c;scanf(%f%f%f,p1,p2,p3);/*或scanf(%f%f%f,&a,&b,&c);*/if(*p1*p2){t=*p1;*p1=*p2;*p2=t;}if(*p1*p3)/*不能写作elseif(*p1*p3)*/{t=*p1;*p1=*p3;*p3=t;}if(*p2*p3)/*不能写作elseif(*p2*p3)*/{t=*p2;*p2=*p3;*p3=t;}printf(%f,%f,%f\n,*p1,*p2,*p3);}5、编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值(不能使用全局变量传递数据)。voidswap(int*p1,int*p2){intt;t=*p1;*p1=*p2;*p2=t;}main(){inta,b;scanf(%d%d,&a,&b);swap(&a,&b);printf(a=%d,b=%d\n,a,b);}5A、编写交换两个变量值的函数,并调用该函数对三个数按升序排序(不能使用全局变量传递数据)。voidswap(float*p,float*q){floatt;t=*p;*p=*q;*q=t;}main(){floata,b,c;scanf(%f%f%f,&a,&b,&c);if(ab)swap(&a,&b);if(ac)swap(&a,&c);/*不能写作elseif(ac)*/if(bc)swap(&b,&c);/*不能写作elseif(bc)*/printf(%f,%f,%f\n,a,b,c);}6、编写求两个数中最大数的函数,并调用该函数求出主函数中两个数中的最大数(不能使用全局变量或return语句传递数据)。voidmax(intx,inty,int*p){intm;if(xy)m=x;elsem=y;*p=m;}main(){inta,b,r;scanf(%d%d,&a,&b);max(a,b,&r);printf(r=%d\n,r);}7、编写求三个数中最大数的函数,并调用该函数求出主函数中三个数中的最大数(不能使用全局变量或return语句传递数据)。voidmax(intx,inty,intz,int*p){intm;if(xy)m=x;elsem=y;if(zm)m=z;*p=m;}main(){inta,b,c,r;scanf(%d%d%d,&a,&b,&c);max(a,b,c,&r);printf(r=%d\n,r);}8、从键盘输入十个整数存入一维数组中,再按反序输出(要求用指针访问数组元素)。方法一:main(){intx[10],i;for(i=0;i=9;i++)scanf(%d,x+i);/*scanf(%d,&x[i]);*/for(i=9;i0;i--)printf(%d,,*(x+i));/*printf(%d,,x[i]);*/}方法二:main(){intx[10],i,*p=x;for(i=0;i=9;i++)scanf(%d,p+i);/*p值不变*/for(i=9;i0;i--)printf(%d,,*(p+i));}方法三:main(){intx[10],*p;for(p=x;p=x+9;p++)/*p值变化*/scanf(%d,p);for(p=x+9;p=x;p--)/*p值变化*/printf(%d,,*p);}方法四:main(){intx[10],i,*p;p=x;for(i=0;i=9;i++){scanf(%d,p);/*p值变化*/p++;}p=x+9;for(i=9;i0;i--){printf(%d,,*p);/*p值变化*/p--;}}9、从键盘输入十个整数存入一维数组中,求出其中的最大数并输出(要求用指针访问数组元素)。方法一:main(){inta[10],max,i;for(i=0;i=9;i++)scanf(%d,a+i);/*或scanf(%d,&a[i]);*/max=*(a+0);/*或max=*a;*/for(i=1;i=9;i++){if(*(a+i)max)max=*(a+i);}printf(max=%d\n,max);}方法二:main(){inta[10],*p=a,max,i;for(i=0;i=9;i++)scanf(%d,p+i);/*或scanf(%d,&a[i]);*/max=*(p+0);/*或max=*p;*/for(i=1;i=9;i++)if(*(p+i)max)max=*(p+i);printf(max=%d\n,max);}10、从键盘输入11个整数存入一维数组中,再将该数组的内容前后倒置并输出(要求用指针访问数组元素)。方法一:main(){inta[11],i,j,t,*p;p=a;for(i=0;i=10;i++)scanf(%d,p+i);/*或scanf(%d,&a[i]);*/i=0;j=10;while(ij){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;i++;j--;}for(i=0;i=10;i++)printf(%d,,*(p+i));}方法二:main(){inta[11],t,*p,*q;for(p=a;p=a+10;p++)scanf(%d,p);/*或scanf(%d,&a[i]);*/p=a;q=a+10;while(pq){t=*p;*p=*q;*q=t;p++;q--;}for(p=a;p=a+10;p++)printf(%d,,*p);}11、从键盘输入十个整数存入一维数组中,求出它们的和及平均值并输出(要求用指针访问数组元素)。main(){inta[10],i;floatsum=0,p;for(i=0;i=9;i++)scanf(%d,a+i);/*scanf(%d,&a[i]);*/for(i=0;i=9;i++)sum=sum+*(a+i);p=sum/10;printf(sum=%f,p=%f\n,sum,p);}11A、编写求n个数平均值的函数,并调用此函数求从键盘输入的100个数的平均值(要求用指针访问数组元素)。floatave(float*p,intn){floats=0,r;inti;for(i=0;in;i++){s=s+*(p+i);}r=s/n;return(r);}main(){floata[100],pj;inti;for(i=0;in;i++){scanf(%f,a+i);}pj=ave(a,100);printf(pj=%f\n,pj);}12、从键盘输入一个字符串存入数组a中,再将a的内容前后倒置后重新存入数组a中并输出(要求用指针访问数组元素)。#includestring.hmain(){chara[80],t,*p,*q;intn;gets(a);n=strlen(a);p=0;q=a+n-1;while(pq){t=*p;*p=*q;*q=t;/*交换对应元素的值*/p++;q--;}puts(a);}13、从键盘输入一个字符串,判断是否是回文(要求用指针访问数组元素)。main(){chara[100],*p,*q;intn;gets(a);n=strlen(a);p=a;q=a+n-1;while(pq){if(*p==*q){p++;q--;}elsebreak;}if(p=q)printf(yes.\n);elseprintf(no.\n);}14、编写字符串复制的函数(要求用指针实现),并调用此函数复制一个字符串。voidscopy(char*b,char*a){while(*a!='\0'){*b=*a;/*未复制'\0'*/a++;b++;}*b='\0';}main(){chara[80],b[80];gets(a);scopy(b,a);puts(b);}15、编写连接两个字符串的函数(要求用指针实现),并调用此函数连接两个字符串。voidscat(char*a,char*b){while(*a!='\0')a++;while(*b!='\0'){*a=*b;/*未复制'\0'*/a++;b++;}*a='\0';}main(){chara[80],b[80];gets(a);gets(b);scat(a,b);puts(a);}16、编写将一个字符串前后倒置的函数(要求用指针实现),并调用此函数将一个字符串前后倒置。voidsrev(char*p){chart,*q;intn;n=strlen(p);q=p+n-1;while(pq){t=*p;*p=*q;*q=t;/*交换对应元素的值*/p++;q--;}}main(){chara[80];gets(a);srev(a)puts(a);}

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功