实验10指针2 .docx

上传人:小飞机 文档编号:3435854 上传时间:2023-03-13 格式:DOCX 页数:14 大小:40.08KB
返回 下载 相关 举报
实验10指针2 .docx_第1页
第1页 / 共14页
实验10指针2 .docx_第2页
第2页 / 共14页
实验10指针2 .docx_第3页
第3页 / 共14页
实验10指针2 .docx_第4页
第4页 / 共14页
实验10指针2 .docx_第5页
第5页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《实验10指针2 .docx》由会员分享,可在线阅读,更多相关《实验10指针2 .docx(14页珍藏版)》请在三一办公上搜索。

1、实验10 指针2 C语言程序设计 实验报告 实验时间: 6月7号 实验班级: 计算机双学位1501 实验报告总份数: 1 份 实验教师: 饶东宁 计算机 学院 工一 实验室 广东工业大学 C语言程序设计 实验报告 实验题目: 实验10 实验时间: 6月7号 实验班级: 双学位1501 实验人学号: 3213010359 实验人姓名: 梁雪卿 实验教师: 饶东宁 计算机 学院 工一 实验室 广东工业大学 实验10 指针2 1 实验目的 进一步掌握指针的应用 能正确使用数组的指针和指向数组的指针变量 能正确使用字符串的指针和指向字符串的指针变量 了解指向指针的指针的用法 2 实验内容 根据题目要求

2、,编写程序,运行程序,分析结果,并进行必要的讨论分析。 有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是原来的第几号的人。 算法说明: 输入人数n 指针指向数组开头 for i=0 to i=n-1 *(p+i)=i+1 i=0 k=0 m=0 当mn-1 真 *(p+1)0 假 k+ 真 k=3 假 *=0 k=0 m+ i+ 真 i=n 假 i=0 当*p=0 p+ 输出结果 程序清单: #include int main int i,k,m,n,num50,*p; scanf(n=%d,&n); p=num; for(i=0;in;i+) *(p+i)

3、=i+1; i=0; k=0; m=0; while(mn-1) if(*(p+1)!=0) k+; if(k=3) *(p+i)=0; k=0; m+; i+; if(i=n) i=0; while(*p=0) p+; printf(The last one is NO.%dn,*p); return 0; 运行结果: 分析与思考: 以1到n为序给每个人编号,i为每次循环时计数变量,k为按1,2,3报数时的计数变量,m为退出人数,当退出人数比n-1少时执行循环体,对推村恩编号为0,报数到尾i恢复为0,循环继续。 将一个5*5的矩阵中最大元素放在中心,4个角分别放4个最小的元素,写一函数实现之

4、。用main函数调用。 算法说明: 定义a55,*p,I,j for i=0 to i=4 for j=0 to j=4 输入aij p=&a00 调用函数change(p) for i=0 to i=4 for j=0 to j=4 输出aij change(int *p) 定义 i,j,temp,*pmax,*pmin pmax=p pmin=p for i=0 to i=4 for j=i to j=4 真 *pmax*(p+5*i+j) 假 pmin=p+5*i+j temp=*(p+12) *(p+12)=*pmax *pmax=temp temp=*p *p=*pmin *pmin

5、=temp pmin=p+1 for i=0 to i=4 for j=0 to j=4 真 i=0&j=0 假 continue / 真 *pmin*(p+5*i+j) 假 pmin=p+5*i+j temp=*pmin *pmin=*(p+4) *(p+4)=temp pmin=p+1 for i=0 to i=4 for j=0 to j=4 真 (i=0&j=0)|(i=0&j=4) 假 continue 真 *pmin*(p+5*i+j) 假 pmin=p+5*i+j temp=*pmin *pmin=*(p+20) *(p+20)=temp pmin=p+1 for i=0 to

6、i=4 for j=0 to j=4 真 |(i=0&j=4)|(i=4&j=0) 假 continue 真 *pmin*(p+5*i+j) 假 pmin=p+5*i+j temp=*pmin *pmin=*(p+24) *(p+24)=temp 程序清单: #include int main void change(int *p); int a55,i,j,*q; for(i=0;i5;i+) for(j=0;j5;j+) scanf(%d,&aij); q=&a00; change(q); for(i=0;i5;i+) for(j=0;j5;j+) printf(%d ,aij); pri

7、ntf(n); return 0; void change(int *p) int i,j,temp; int *pmax,*pmin; pmax=p; pmin=p; for(i=0;i5;i+) for(j=0;j5;j+) if(*pmax*(p+5*i+j) pmin=p+i*5+j; temp=*(p+12); *(p+12)=*pmax; *pmax=temp; temp=*p; *p=*pmin; *pmin=temp; pmin=p+1; for(i=0;i5;i+) for(j=0;j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; *pmin=*(p

8、+4); *(p+4)=temp; pmin=p+1; for(i=0;i5;i+) for(j=0;j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; *pmin=*(p+20); *(p+20)=temp; pmin=p+1; for(i=0;i5;i+) for(j=0;j*(p+5*i+j) pmin=p+5*i+j; temp=*pmin; *pmin=*(p+24); *(p+24)=temp; 运行结果: 分析与思考: change函数实现元素值交换。找出最大最小之,最大值与中心元素呼唤,最小值与左上角的元素互换。找出全部元素中的次小值,第三小值,第四小值

9、,分别与剩下的三个角互换。元素地址均以元素做单位的地址。 有一个班4个学生,5门课程。 1, 求第一门课程的平均分。 2, 找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平军成绩。 3, 找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。 算法说明: 定义score45,aver4,*pscore,*paver,course510,(*pcourse)10 pcourse=course for i=0 to i=4 输入coursei for i=0 to i=4 输出coursei pscore=&score00 pnum=&num f

10、or i=0 to i=3 输入pnum+i for j=0 to j=4 输出pscore+5*i+j paver &aver0 调用avsco(pscore,paver) 调用avcour1(pcourse,pscore) 调用fali2(pcourse,pnum,pscore,paver) 调用good(pcourse,pnum,pscore,paver) avsco 定义I,j,sum,average for i=0 to i=3 sum=0.0 for j=0 to j=4 sum=sum+(*(pscore+5*i+j) average=sum/5 *(paver+i)=avera

11、ge avcour1 定义 I,sum,average1 sum=0.0 for i=0 to i=3 sum=sum+(*(pscore+5*i) average1= sum/4 输出*pcourse,average1 fali2 定义 I,j,k,label for i=0 to i=4 输出coursei for i=0 to i=3 label=0 for j=0 to j=4 * 真=2 假 输出numi for k=0 to k=4 输出* 输出averi 定义I,j,k,n for i=0 to i=4 输出coursei for i=0 to i=3 n=o for j=0 t

12、o j=4 真 *85.0 假 n+ 真 n=5|(averi=90) 假 输出numi for k=0 to k=4 输出* 输出averi 程序清单: #include int main void avsco(float *,float *); void avcour1(char (*)10,float *); void fali2(char course510,int *pscore,float aver4); void good(char course510,int *pscore,float aver4); int i,j,*pnum,num4; float score45,aver

13、4,*pscore,*paver; char course510,(*pcourse)10; printf(input course:n); num,float num4,float pcourse=course; for(i=0;i5;i+) scanf(%s,coursei); printf(input NO. and scores:n); printf(NO.); for(i=0;i5;i+) printf(,%s,coursei); printf(n); pscore=&score00; pnum=&num0; for(i=0;i4;i+) scanf(%d,pnum+i); for(

14、j=0;j5;j+) scanf(%f,pscore+5*i+j); paver=&aver0; printf(nn); avsco(pscore,paver); avcour1(pcourse,pscore); printf(nn); fali2(pcourse,pnum,pscore,paver); printf(nn); good(pcourse,pnum,pscore,paver); return 0; void avsco(float *pscore,float *paver) int i,j; float sum,average; for(i=0;i4;i+) sum=0.0; f

15、or(j=0;j5;j+) sum=sum+(*(pscore+5*i+j); average=sum/5; *(paver+i)=average; void avcour1(char (*pcourse)10,float *pscore) int i; float sum,average1; sum=0.0; for(i=0;i4;i+) sum=sum+(*(pscore+5*i); average1=sum/4; printf(course 1:%s average score:%7.2fn,*pcourse,average1); void fali2(char course510,in

16、t num,float *pscore,float aver4) int i,j,k,label; printf( =Student who is fail in two course= n); printf(NO. ); for(i=0;i5;i+) printf(%11s,coursei); printf( averagen); for(i=0;i4;i+) label=0; for(j=0;j5;j+) if(*(pscore+5*i+j)=2) printf(%d,numi); for(k=0;k5;k+) printf(%11.2f,*(pscore+5*i+k); printf(%

17、11.2fn,averi); void good(char course510,int num4,float *pscore,float aver4) int i,j,k,n; printf( =Students whose score is good= n); printf(NO. ); for(i=0;i5;i+) printf(%11s,coursei); printf( averagen); for(i=0;i4;i+) n=0; for(j=0;j85.0) n+; if(n=5)|(averi=90) printf(%d,numi); for(k=0;k0) 假 temp=*(p+

18、i) *(p+i)=*(p+j) *(p+j)=temp 程序清单: #include #include #define LINEMAX 20 #define N 5 int main void sort(char *p,int x); int i; char *p; char *pstrN; char strNLINEMAX; printf(输入5个字符串: ); for(i=0;iN;i+) pstri=stri; for(i=0;iN;i+) scanf(%s,pstri); p=pstr; sort(p,N); printf(n); for(i=0;iN;i+) printf(%sn,*pstri); return 0; void sort(char *p,int x) int i,j; char * term; for(i=0;ix;i+) for(j=i+1;j0) term=* (p+i); * (p+i)=* (p+j); * (p+j)=term; 运行结果: 思考与分析: 二维数组定义是不能包括变量,要定义宏;要给字符串留出足够的空间;调用字符串函数要包括头文件;用冒泡法对字符串排序。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号