欢迎来到天天文库
浏览记录
ID:56525111
大小:423.00 KB
页数:28页
时间:2020-06-27
《实验10 指针2 (修复地).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《C语言程序设计》实验报告实验时间:6月7号实验班级:计算机双学位1501实验报告总份(片)数:1份(片)实验教师:饶东宁计算机学院工一实验室工业大学《C语言程序设计》实验报告实验题目:实验10实验时间:6月7号实验班级:双学位1501实验人学号:3213010359实验人:梁雪卿实验教师:饶东宁计算机学院工一实验室工业大学实验10指针21实验目的(1)进一步掌握指针的应用(2)能正确使用数组的指针和指向数组的指针变量(3)能正确使用字符串的指针和指向字符串的指针变量(4)了解指向指针的指针的用法2实验容根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要的讨论分析。(1)
2、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的人。输入人数n算法说明:指针指向数组开头fori=0toi=n-1当mintmain(){inti,k,m,n,num[50],*p;scanf("n=%d",&n);p=num;for(i=0;i3、f(*(p+1)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("ThelastoneisNO.%d",*p);return0;}运行结果:分析与思考:以1到n为序给每个人编号,i为每次循环时计数变量,k为按1,2,3报数时的计数变量,m为退出人数,当退出人数比n-1少时执行循环体,对推村恩编号为0,报数到尾i恢复为0,循环继续。(1)将一个5*5的矩阵(二维数组)中最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用4、。算法说明:定义a[5][5],*p,I,jfori=0toi=4forj=0toj=4输入a[i][j]p=&a[0][0]调用函数change(p)forj=0toj=4fori=0toi=4输出a[i][j]change(int*p)定义i,j,temp,*pmax,*pminpmax=ppmin=pfori=0toi=4forj=itoj=4temp=*(p+12)*(p+12)=*pmax*pmax=temptemp=*p*p=*pmin*pmin=temppmin=p+1fori=0toi=4/真*pmax<*(p+5*i+j)假pmax=p+5*i+j真*pmin>*(p+5*i5、+j)假pmin=p+5*i+jforj=0toj=4continue真i==0&&j==0假真*pmin>*(p+5*i+j)假pmin=p+5*i+jtemp=*pmin*pmin=*(p+4)*(p+4)=temppmin=p+1fori=0toi=4forj=0toj=4真(i==0&&j==0)6、7、(i==0&&j==4)假temp=*pmin*pmin=*(p+20)*(p+20)=temppmin=p+1pmin=p+5*i+j真*pmin>*(p+5*i+j)假continuefori=0toi=4forj=0toj=4continue真(i==0&&j==0)8、9、(i==0&10、&j==4)11、12、(i==4&&j==0)假真*pmin>*(p+5*i+j)假temp=*pmin*pmin=*(p+24)*(p+24)=temppmin=p+5*i+j程序清单:#includeintmain(){voidchange(int*p);inta[5][5],i,j,*q;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);q=&a[0][0];change(q);for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%d",a[i][j]);printf("");}retu13、rn0;}voidchange(int*p){inti,j,temp;int*pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++){for(j=0;j<5;j++){if(*pmax<*(p+i*5+j))pmax=p+i*5+j;if(*pmin>*(p+5*i+j))pmin=p+i*5+j;}}temp=*(p+12);*(p+12)=*pmax;*pmax=t
3、f(*(p+1)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("ThelastoneisNO.%d",*p);return0;}运行结果:分析与思考:以1到n为序给每个人编号,i为每次循环时计数变量,k为按1,2,3报数时的计数变量,m为退出人数,当退出人数比n-1少时执行循环体,对推村恩编号为0,报数到尾i恢复为0,循环继续。(1)将一个5*5的矩阵(二维数组)中最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用
4、。算法说明:定义a[5][5],*p,I,jfori=0toi=4forj=0toj=4输入a[i][j]p=&a[0][0]调用函数change(p)forj=0toj=4fori=0toi=4输出a[i][j]change(int*p)定义i,j,temp,*pmax,*pminpmax=ppmin=pfori=0toi=4forj=itoj=4temp=*(p+12)*(p+12)=*pmax*pmax=temptemp=*p*p=*pmin*pmin=temppmin=p+1fori=0toi=4/真*pmax<*(p+5*i+j)假pmax=p+5*i+j真*pmin>*(p+5*i
5、+j)假pmin=p+5*i+jforj=0toj=4continue真i==0&&j==0假真*pmin>*(p+5*i+j)假pmin=p+5*i+jtemp=*pmin*pmin=*(p+4)*(p+4)=temppmin=p+1fori=0toi=4forj=0toj=4真(i==0&&j==0)
6、
7、(i==0&&j==4)假temp=*pmin*pmin=*(p+20)*(p+20)=temppmin=p+1pmin=p+5*i+j真*pmin>*(p+5*i+j)假continuefori=0toi=4forj=0toj=4continue真(i==0&&j==0)
8、
9、(i==0&
10、&j==4)
11、
12、(i==4&&j==0)假真*pmin>*(p+5*i+j)假temp=*pmin*pmin=*(p+24)*(p+24)=temppmin=p+5*i+j程序清单:#includeintmain(){voidchange(int*p);inta[5][5],i,j,*q;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);q=&a[0][0];change(q);for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%d",a[i][j]);printf("");}retu
13、rn0;}voidchange(int*p){inti,j,temp;int*pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++){for(j=0;j<5;j++){if(*pmax<*(p+i*5+j))pmax=p+i*5+j;if(*pmin>*(p+5*i+j))pmin=p+i*5+j;}}temp=*(p+12);*(p+12)=*pmax;*pmax=t
此文档下载收益归作者所有