华北电力大学c++实验指导数组的应用习题参考答案.docx
- 文档编号:8119176
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:26
- 大小:21.52KB
华北电力大学c++实验指导数组的应用习题参考答案.docx
《华北电力大学c++实验指导数组的应用习题参考答案.docx》由会员分享,可在线阅读,更多相关《华北电力大学c++实验指导数组的应用习题参考答案.docx(26页珍藏版)》请在冰豆网上搜索。
华北电力大学c++实验指导数组的应用习题参考答案
P126数组的应用习题解答
1.改错题
见文件“实验指导改错题习题解答”。
2.填空题(在空白处填入适当内容,将程序补充完整,并上机调试)
(1)求Fibonachi数列(1,1,2,3,5,8,13,……)的前10项。
#include
voidmain()
{intf[11]={0,1,1},n;
for(n=3;n<=10;n++)
f[n]=
(1);
for(
(2);n<=10;n++)
cout< } 参考答案 (1)f[n]=f[n-1]+f[n-2] (2)n=10 (2)从键盘上输入若干学生的成绩,统计出平均成绩,并输出低于平均分的学生成绩,输入负数结束数据的输入。 #include voidmain() {floatx[100],sum=0.0,ave,a; intn=0,i; cin>>a; while( (1)) {sum+=a; x[n]=a; (2); cin>>a;} ave=sum/n;; cout<<"ave="< for(i=0;(3);i++) if((4)) cout< } 参考答案 (1)a>=0 (2)n++(3)i (3)计算一个3X3矩阵的各列元素的平均值。 #include"iostream.h" #defineM3 voidmain() {inta[M][M]={1,2,3,4,5,6,7,8},i,j; floatave[M]; for(i=0;i { (1); for(j=0;j ave[i]=ave[i]+ (2); ave[i]=(3); } for(i=0;i cout<<""< } 参考答案 (1)ave[i]=0 (2)a[j][i](3)ave[i]/M (4)找出一个5x5矩阵中的最小值及其在数组中的位置。 #include"iostream.h" #defineM5 voidmain() {inta[M][M],i,j,h,l; for(i=0;i for(j=0;j (1); h=0;l=0; for(i=0;i for(j=0;j if( (2)>a[i][j]) {h=i; (3); } cout<<"最小值: "<<(4)< cout<<"位置: 行: "< "< } 参考答案 (1)cin>>a[i][j] (2)a[h][l](3)l=j(4)a[h][l] (5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。 #include voidmain() {charstr1[100],str2[100]; inti,s; printf("请输入第一个字符串: "); gets(str1); printf("请输入第二个字符串: "); gets(str2); i=0; while( (1)) i++; s= (2); printf("%d",s); } 参考答案 (1)str1[i]==str2[i]&&str1[i]! ='\0' (2)str1[i]-str2[i] 思考: 1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么? 根据这个结果判断字符’\0’的ASCII码是多少? 答: 运行结果为-99。 依此判断字符’\0’的ASCII码为0 2.对于字符数组str1,关系表达式str1[i]! =’\0’与str1[i]! =0是否等价? 答: 等价。 (6)子函数的功能是将十进制数转换成二进制数。 在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。 #include voidmain() {inty,n,j,a[8]; (1); cin>>y; n= (2); for(j=(3);j>=0;j--) cout< } intzh(inta[],intx) {inti; i=0; do {a[i]=(4);i++; x=x/2; } while(x>=1); (5); } 参考答案 (1)intzh(int[],int) (2)zh(a,y)(3)n-1(4)x%2(5)returni (一)编写程序 1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。 程序如下: #include voidmain() {inta[50],n,min,max,b,i; printf("输入数据个数: "); scanf("%d",&n); printf("输入数据: "); for(i=0;i scanf("%d",&a[i]); max=0;min=0; for(i=1;i {if(a[i]>a[max]) max=i; if(a[i] min=i; } b=a[0];a[0]=a[min];a[min]=b; b=a[n-1];a[n-1]=a[max];a[max]=b; for(i=0;i printf("%5d",a[i]); } 2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。 程序如下: #include voidmain() {intn,i,b; floata[50],x,s=0; cout<<"输入实数: "; n=0; cin>>x; while(x>0) {a[n]=x; n++; cin>>x;} for(i=0;i s+=a[i]; s/=n; b=0; for(i=0;i {if(a[i]>=s) b++;} cout<<"大于等于平均值的实数个数: "< } 3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。 程序如下: #include voidmain() {intn,i,a[50]; n=0; for(i=1;i<=100;i++) if(i%7==0||i%11==0) {a[n]=i;n++;} for(i=0;i {if(i%10==0)printf("\n"); printf("%5d",a[i]); } } 4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。 程序如下: #include voidmain() {inta[50],i,x,n; cout<<"输入数列: "; n=0; cin>>a[n]; while(a[n]! =0) {n++; cin>>a[n]; } cout<<"输入要查找的数: "; cin>>x; for(i=0;i if(x==a[i]) {cout< break;} if(i==n) cout< } 5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。 方法一: #include voidmain() {inta[50],n,x,i,j; printf("输入数列: "); n=0; scanf("%d",&a[n]); while(a[n]! =0) {n++; scanf("%d",&a[n]); } printf("输入要查的数: "); scanf("%d",&x); for(i=0;i if(a[i]==x) {for(j=i+1;j a[j-1]=a[j]; n--; i--; } printf("处理结果"); for(i=0;i printf("%5d",a[i]); } 方法二: #include voidmain() {inta[50],b[50],n,x,i,j; printf("输入数列: "); n=0; scanf("%d",&a[n]); while(a[n]! =0) {n++; scanf("%d",&a[n]); } printf("输入要查的数: "); scanf("%d",&x); j=0; for(i=0;i if(a[i]! =x) {b[j]=a[i]; j++; } printf("处理结果"); for(i=0;i printf("%5d",b[i]); } 6.将一个数组中的数循环右移,例如,数组中原来的数为: 12345,移动后变成51234。 程序如下: #include voidmain() {intt[10],i,k,n; printf("输入数据个数: "); scanf("%d",&n); printf("输入%d数据: ",n); for(i=0;i scanf("%d",&t[i]); k=t[n-1]; for(i=n-2;i>=0;i--) t[i+1]=t[i]; t[0]=k; for(i=0;i printf("%5d",t[i]); } 7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。 程序如下: #include voidmain() {inta[11],i,j,m; printf("输入数列: "); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) for(j=i+1;j<=9;j++) if(a[i] {m=a[i];a[i]=a[j];a[j]=m;} printf("输入要插入的数: "); scanf("%d",&m); for(i=0;i<10;i++) if(m>a[i])break; for(j=9;j>=i;j--) a[j+1]=a[j]; a[i]=m; for(i=0;i<=10;i++) printf("%5d",a[i]); } 8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。 程序如下: #include voidmain() {inta[50],gs,m,i,j,n,w,b,s; n=0;s=0; cout<<"输入一组正整数,输入0或负数结束输入操作: "; cin>>m; while(m>0) {gs=0; for(i=1;i<=m;i++) if(m%i==0)gs++; if(gs==2) {a[n]=m;s+=a[n]; n++;} cin>>m; } for(i=0;i {w=i; for(j=i+1;j if(a[w] if(w! =i) {b=a[w];a[w]=a[i];a[i]=b;} } cout<<"素数之和: "< for(i=0;i cout< } 9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。 例如: 输入整数347,重新组合成的新整数为743。 要求: 程序能处理9位之内的任意正整数。 程序如下: #include voidmain() {inta[15],m1,m2,n,i,j; cout<<"输入一个正整数"; cin>>m1; n=0; while(m1! =0) {a[n]=m1%10; m1=m1/10; n++; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北电力 大学 c+ 实验 指导 数组 应用 习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)