• / 55
  • 下载费用:10 金币  

第十章 习题课 V2.ppt

关 键 词:
第十章 习题课 V2.ppt
资源描述:
1,输入3个数,求平均数 4个指针变量指向这4个一般变量 所有的操作(输入、计算、输出)都用指针变量完成。不能出现4个一般变量的名字 将指针变量内存放的地址输出,并分析,main() {float f(float *x,float *y,float *z);float a,b,c,d,*p1,*p2,*p3,*p4;p1=},2,输入3个数,求平均数 输入、输出在主函数内实现 具体算法另外写一个函数实现。 函数参数:传递3个地址给被调用函数,指针变量作为函数行参。 函数返回值:为一般变量,float ave(float *x,float *y,float*z) {,3,输入3个整数,按照从大到小的顺序输出 用指针变量控制,main() {int a,b,c,t,*p1,*p2,*p3;p1= },main() {int a,b,c,t,*p1,*p2,*p3;scanf(“%d,%d,%d“,p1,p2,p3);if(*p1*p2){t=*p1;*p1=*p2;*p2=t;}if(*p1*p3){t=*p1;*p1=*p3;*p3=t;}if(*p2*p3){t=*p2;*p2=*p3;*p3=t;}printf(“%d,%d,%d“,*p1,*p2,*p3); },4,输入10个数,并反序输出 用指针与数组配合使用 除了数组和一个指针变量外,不能出现其它变量 循环不是用i控制,要用指针变量控制,main() {int a[10],*p;for(p=a;p=a;p--)printf(“%d “,*p); },5,输入10个数,求最大数 输入、输出在main中实现 挑选过程另外建立一个函数实现 函数参数 实参:数组名or指针变量(地址) 形参:数组名or指针变量(地址) 函数返回值:一般变量or用全局变量解决or一个地址(存放最大数的地址),main() {int *max(int *x);int a[10],*p;for(p=a;pa+10;p++)scanf(“%d“,p);p=max(a);printf(“MAX=%d“,*p); },int *max(int *x) {int *i,*j;for(i=j=x;ix+10;i++)if(*j*i)j=i;return j; },int *max(int *x) {int *i,*j;for(i=j=x;ix+10;i++)if(*j*i)j=i;return j; },6,输入10个整数,将最小的一个与第一个互换,将最大的一个与最后一个互换。 用指针处理,main() {,main() {int a[10],t,*p,*q;for(p=a;p*q)q=p;t=*(a+9);*(a+9)=*q;*q=t;for(p=a;pa+10;p++)printf(“%d “,*p); },7,输入10个整数,将最小的一个与第一个互换,将最大的一个与最后一个互换。 用指针处理 将输入、输出、和算法三部分都分别写成一个函数实现。,main() {int a[10];in(a);f(a);out(a); } void in(int *x) {int *p;for(p=x;px+10;p++)scanf(“%d“,p); },void out(int *x) {int *p;for(p=x;p*i)j=i;t=*j;*j=*x;*x=t; },main() {void in(int *x), jisuan(int *y),out(int *z);int a[10];in(a);jisuan(a);out(a); } void in(int *x) {int *p1;for(p1=x;p1x+10;p1++)scanf(“%d“,p1); },void jisuan(int *y) {int t,*p2,*q;for(p2=q=y;p2*p2)q=p2;t=*y;*y=*q;*q=t;for(p2=q=y;p2y+10;p2++)if(*q*p2)q=p2;t=*(y+9);*(y+9)=*q;*q=t; } void out(int *z) {int *p3;for(p3=z;p3z+10;p3++)printf(“%d “,*p3); },8,二维数组与指针配合实现下面输出: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 两种指针实现,main() {,9,二维数组与指针配合实现下面输出: 1 2 3 . . n 2 3 4 . . . 3 4 5 . . . . . . . . . . . . . . . n . . . . .,main() {int a[24][24],(*p)[24],i,j,n=0;while(n24)scanf(“%d“, },main() {int a[24][24],(*p)[24],i,j,n=0;while(n24)scanf(“%d“,} },main() {int i,j,n;scanf(“%d“,} },10,将输入的两个字符串连接起来 主函数内解决字符串a、b的输入,连接后的字符串c的输出 调用一个参数为字符串a、b和c的地址的函数,解决连接问题 用指针变量实现,main() {void f(char *x,char *y,char *z);char a[20],b[20],c[40];gets(a);gets(b);f(a,b,c);puts(c);getch();printf(“\n\n“); } void f(char *x,char *y,char *z) {for(;*x!='\0';x++,z++)*z=*x;for(;*y!=0;y++,z++)*z=*y;*z=0; },main() {,main() {void f(char *x,char *y,char *z);char a[20],b[20],c[40];gets(a);gets(b);f(a,b,c);puts(c); },void f(char *x,char *y,char *z) {for(;*x!=0;x++,z++)*z=*x;for(;*y!=0;y++,z++)*z=*y;*z=0; },11,用递归函数实现:,n从键盘输入 用指向函数的指针调用函数,main() {int f(int x);int (*p)();int n,sum;scanf(“%d“, },main() {int n,sum;scanf(“%d“, },12,输入20个整数,将奇数与偶数分开,并且分别按从小到大的顺序输出,void in(int x[]) {int *p;for(p=x;px+20;p++)scanf(“%d“,p);}int f(int x[],int y[],int z[]) {int *p,*q,*o,m=0;for(p=x,q=y,o=z;px+20;p++)if(*p%2==1){*q++=*p;m++;}else *o++=*p;return m; },void w(int x[],int y[],int m) {int i,j,t;for(j=1;jx[i+1]){t=x[i];x[i]=x[i+1];x[i+1]=t;}for(j=1;jy[i+1]){t=y[i];y[i]=y[i+1];y[i+1]=t;} },void out(int x[],int y[],int m) {int *p;for(p=x;px+m;p++)printf(“%d“,*p);printf(“\n“);for(p=y;py+20-m;p++)printf(“%d“,*p);getch();printf(“\n\n“); },main() {int n,a[20],b[20],c[20];in(a);n=f(a,b,c);w(b,c,n);out(b,c,n); },main() {int a[20],b[20],c[20],m;in(a);m=f1(a,b,c);f2(b,c,m);out(b,c); } void in(int x[]) {int *p;for(p=x;px+20;p++)scanf(“%d“,p); },int f1(int x[],int y[],int z[]) {int *p,*i=y,*j=z,n=0;for(p=x;px+20;p++){if(*p%2!=0){*i++=*p;n++;}else *j++=*p;}return n; },void f2(int x[],int y[],int z[]) {int *p,*i=y,*j=z;for(p=x;px+20;p++){if(*p%2!=0)*i++=*p;else *j++=*p;}},13,任务:编写程序实现,输入半径,求圆周长、面积、体积。 输入、输出部分在主函数内部实现,计算部分,另外编写自定义函数实现。 参数的传递:半径(基本变量)、周长等通过数组传递。 使用宏代换解决π值的问题,main() {,14,输入一行字符,统计大写字母、小写字母、数字、空格、其他字符各有多少个 输入:一行字符串(放到字符型数组里) 输出:大写字母、小写字母、数字、空格、其他字符的个数(用一个5元素整型数组) 用指针实现,main() {,main() {char a[30],*p; int b[5]={0},*q;gets(a);q=b;for(p=a;*p!='\0';p++){if(*p=65 },15,编码器:将输入的字符按照编码规则编码。 规则:,,其它字符不变 main中实现输入输出,具体编码过程另外写一个函数(函数参数传递地址) 90-(*p-65) 122-(*p-97),main() {void f(char *p);char a[100];gets(a);f(a);puts(a);getch();printf(“\n\n“); } void f(char *p) {for(;*p!=0;p++){if(*p=65} },16,从一行杂乱的字符串中挑出所有整数(正整数),并将这些整数相加后的数值输出,用指针实现杨氏三角数的输出。输出的行数n是从键盘输入的。,main() {char f1(char *p,char (*q)[100]);int f2(char (*p)[100],char x);char a[100],b[100][100],i;int j;gets(a);i=f1(a,b);j=f2(b,i);printf(“The sum is %d“,j);getch();printf(“\n\n“); },char f1(char *p,char (*q)[100]) {char x=0,y=0;for(;*p!=0;p++)if(*p=48 },int f2(char (*p)[100],char x) {int sum=0,y=0,z=0;printf(“The numbers are:\n“);for(x--;x=0;x--,p++){printf(“\t\t“);puts(p);for(y=0;*(*p+y)!=0;y++)z=z*10+*(*p+y)-48;sum+=z;z=0;}return sum; },,用指针实现杨氏三角数的输出。输出的行数n是从键盘输入的。,
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第十章 习题课 V2.ppt
链接地址:https://www.weizhuannet.com/p-10071165.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开