您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C实验报告6参考答案
1《高级语言程序设计》实验报告班级:学号:姓名:成绩:实验6数组程序设计一、实验目的1.掌握一维数组和二维数组的定义、赋值和输入输出的方法。2.掌握字符数组和字符串函数的使用。3.掌握与数组有关的算法。二、实验内容1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。)(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c保存。#includestdio.hvoidmain(){intn=10,i,sum=0;inta[n];inta[10];for(i=0;i10;i++){scanf(%d,a[i]);scanf(%d,&a[i]);sum=sum+a[i];}printf(sum=%d\n,sum);}(2)下列程序的功能为:将字符串b连接到字符串a。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2.c保存。#includestdio.hvoidmain(){chara[]=wel,b[]=come;chara[20]=wel,b[]=come;inti,n=0;while(!a[n])n++;while(a[n]!='\0')n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];a[n+i]=’\0’;printf(%s\n,a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3.c保存。#includestdio.h#defineN4#defineM4main()该程序的输出结果:该程序的输出结果:2{inti,j,k,flag1,flag2,a[N][M],max,maxj;for(i=0;iN;i++)for(j=0;jM;j++)scanf(%d,&a[i][j]);flag2=0;for(i=0;iN;i++){max=a[j][0];max=a[i][0];for(j=0;jM;j++)if(a[i][j]max)if(a[i][j]=max){max=a[i][j];maxj=j;}for(k=0,flag1=1;kN&&flag1;k++)if(maxa[k][maxj])flag1=0;if(flag1){printf(\nThesaddlepointis:a[%d][%d]=%d\n,i,maxj,max);flag2=1;}}if(flag2)if(!flag2)printf(\nThereisnosaddlepointintheMatrix\n);}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c保存。#includestdio.h#defineN10main(){inta[]={0,1,2,3,4,5,6,7,8,9},k;intlow=0,high=N-1,mid,find=0;printf(请输入欲查找的值:\n);scanf(%d,&k);while(low=high){mid=(low+high)/2;if(a[mid]==k){printf(找到位置为:%d\n,mid+1);find=1;}if(a[mid]k)_high=mid-1;else_low=mid+1_____;}该程序的输出结果:3if(!finD.printf(%d未找到\n,k);`}(2)以下程序的功能是:求3个字符串(每串不超过20个字符)中的最大者。补充完善程序,以实现其功能。程序以文件名sy6_5.c保存。#includestdio.h#includestring.hvoidmain(){charstring[20],str[3][20];inti;for(i=0;i3;i++)gets(str[i]);if(strcmp(str[0],str[1])0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(string,str[2])0)strcpy(string,str[2]);puts(string);}(3)下列程序的功能为:从键盘输入20个整数,统计非负数个数,并计算非负数之和。补充完善程序,以实现其功能。程序以文件名sy6_6.c保存。#includestdio.hmain(){inti,a[20],sum=0,count;count=0;for(i=0;i20;i++)scanf(%d,&a[i]);for(i=0;i20;i++){if(a[i]0)continue;sum+=a[i];count++;}printf(s=%d\tcount=%d\n,sum,count);}3.编程题(写出程序运行结果)(1)从键盘输入10个数,用选择排序法将其按由大到小的顺序排序;然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。程序以文件名sy6_7.c存盘。#defineN11#includestdio.hvoidmain(){inta[N],i,j,k,t,p;printf(请输入%d个整数:\n,N);for(i=0;iN-1;i++)scanf(%d,&a[i]);for(i=0;iN-2;i++)//选择排序{k=i;for(j=i+1;jN-1;j++)if(a[k]a[j])4k=j;if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}printf(\n排序后:\n);for(i=0;iN-1;i++)printf(%5d,a[i]);printf(\n请输入插入整数:);scanf(%d,&p);j=9;while(j=0&&a[j]p)//找插入位置{a[j+1]=a[j];j--;}a[j+1]=p;//插入printf(\n插入后:\n);for(i=0;iN;i++)printf(%5d,a[i]);printf(\n);}(2)从键盘输入两个矩阵A、B的值,求C=A+B。程序以文件名sy6_8.c存盘。#includestdio.hvoidmain(){inta[2][3],b[2][3],c[2][3],i,j;for(i=0;i2;i++)for(j=0;j3;j++)scanf(%d,&a[i][j]);for(i=0;i2;i++)for(j=0;j3;j++)scanf(%d,&b[i][j]);for(i=0;i2;i++)for(j=0;j3;j++)c[i][j]=a[i][j]+b[i][j];for(i=0;i2;i++){for(j=0;j3;j++)printf(%3d,c[i][j]);printf(\n);}}(3)从键盘输入一个字符串,删除其中某个字符。如输入字符串“abcdefededff”,删除其中的字符e,则输出的字符串为“abcdfddff”。程序以文件名sy6_9.c存盘。//方法一:#includestdio.h#includestring.hvoidmain(){inti,j;61312753A161361084B5chars[80],c;printf(输入一行字符:);gets(s);printf(输入要删除字符:);scanf(%c,&c);for(i=0,j=0;s[i]!='\0';i++)if(s[i]!=c)s[j++]=s[i];s[j]='\0';puts(s);}//方法二:#includestdio.h#includestring.hvoidmain(){charline[80];charch;inti,j;intlen;printf(输入一行字符:);gets(line);printf(输入要删除字符:);ch=getchar();i=0;while(line[i]!='\0'){while(line[i]!='\0'&&line[i]!=ch)i++;len=strlen(line);for(j=i;jlen-1;j++)line[j]=line[j+1];line[j]='\0';}puts(line);}
本文标题:C实验报告6参考答案
链接地址:https://www.777doc.com/doc-2908514 .html