1、第四次 数组部分补充习题第三次作业没有完成的程序题2.9 从键盘输入一组非0整数,以输入0标志结束,求这组整数的平均值,并统计其中正数和负数的个数。#include using namespace std;int main()int n;int u=0,v=0;int sum=0;int count=0;/算是一个计数器double average;cout输入任意的一个整数n; /先输入一个值,否则系统会随机给定一个值while(n!=0) count=count+n; if(n0) u=u+1; else /else(nn;/继续进行判断cout负数有:v正数有:uendl;average
2、=sum/count;cout这组数的平均值为:averageendl;return 0;2.6 编程输出下列图形,中间一行英文字母由输入得到。AB B BC C C C C D D D D D D D C C C C C B B B A还是不懂后面的#include using namespace std;int main() char in; int i,j; do coutin; if(in=97)&(in=122) in-=32;/小写改大写 while(in90); int line=in-A; for (i=0;i0;j-) cout ;/前方空格 for(j=1;j=2*i+1;
3、j+) cout char(i+A); cout0;i-) /下三角(少一行) for(j=0;j=line-i;j+) cout ; for(j=1;j=2*i-1;j+) cout char(i-1+A); coutendl; return 0; 2.5 编程打印如下图形: * * * * * * * * * * * * * * * * * * * * * * * * *#include using namespace std;int main()int i,j;for(i=1;i0;j-) cout ;for(j=1;j=2*i-1;j+) cout*;coutendl;for(i=1;
4、i4;i+)cout *n; return 0;2.12 将100元换成用10元、5元和1元的组合,共有多少种组合方法。#include using namespace std;int main()int i,j,k,count=0;for(i=0;i=10;i+)/控制是十元的个数 for(j=0;j=0) coutitjtkendl; count+; /计数器 coutcountendl;return 0; 2.11 编程求1000之内的所有完全数。所谓完全数指的是一个数恰好等于它的所有因子和。例如6=1+2+3,就是一个完全数。#include using namespace std;i
5、nt main()int i,j,sum_yz;for(i=1;i=1000;i+)/找从1到1000的满足题意的数 sum_yz=0; for(j=1;j=i;j+)/找其因子 if(i%j=0) sum_yz=sum_yz+j; if(i=sum_yz) coutit; return 0; 以下作业截止提交时间为:2012年4月30日 23:00一、 没有全部完成第三章编程题的或程序有错的,首先完成第三章的程序作业。 第四章 数组部分补充习题二 程序设计1. 若有一字符串正反读都一样(如 level、madam),称之为回文。请编写一程序验证输入的字符串是否为回文。#include usi
6、ng namespace std;int main()char hui10;int n;cout请输入您要验证的数组:endl;for(int i=0;ihuii; if(huii=z) n=i-1; break; cout您所输入的字符串为:;for(i=0;in;i+) couthuii;for(i=0;i=(n+1)/2;i+) int j=n-i; if(huii=huij) continue;/如果对应相等则继续进行判断 else /else后一定不能跟着表达式 cout您所输入的不是回文=(n+1)/2)/从循环中跳出来有两种可能,一种是不是回文,一种是i(n+1)/2cout您所
7、输入的是回文;return 0;结果:能正常运行并得出想要的结果。2. 将一个数组中的值按由小到大重新存放。例如,原来顺序8,3,5,4,1。要求改为1,3,4,5,8。编程实现之。#include using namespace std;int main() const int M=100; int numM; int n; cout输入一组数,并且以0结束,这组数为:endl; for(int u=0;unumu; if(numu=0) n=u-1; break; for(int i=0;ii;j-) if(numj-1numj) int x=numj-1; numj-1=numj; nu
8、mj=x; cout结果是:endl; for(int k=0;k=n;k+) coutnumk; coutendl; return 0;结果:能正常运行,并得到想要的结果。3. 设有下列矩阵: A = 请编程序找出符合下列特征的所有元素,并打印出他们在矩阵中的位置:(1) 它们既是所在行的最小值,又是所在列的最小值; #include using namespace std; int main() int min,tmp,MIN; int P=0,q=0; int a44= 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16; for(int i=0;i4;i
9、+) for(int j=0;j4;j+)/找到一行中的最小值,确定列数 min=aij; for(int k=j;kmin) P+; if(P!=3-j) continue; else for(int n=0;n4;n+) MIN=anj; for(int u=n;uMIN) q+; if(q!=3-n) continue; else if(i!=n) continue; else cout第i+1行第j+1列aijendl; return 0;结果:能正常运行,并得出想要的结果。自己编的程序不对,看了同学的。(2) 它们既是所在行的最大值,又是所在列的最大值;#includeusing n
10、amespace std;int main() int max,tmp,MIN; int p=0,q=0; int a44= 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 ; for(int i=0;i4;i+) for(int j=0;j4;j+) max=aij; for(int k=j;k4;k+) if(aikmax) p+; if(p!=3-j) continue; else for(int n=0;n4;n+) max1=anj; for(int u=n;u4;u+) if(aujMIN) q+; if(q!=3-n) continue; el
11、se if(i!=n) continue; else cout第i+1行第j+1列aijendl; return 0;结果:能正常运行,并得出想要的结果。(3) 它们是所在行的最小值,却是所在列的最大值;#includeusing namespace std;int main() int min,tmp,MIN; int p=0,q=0; int a44= 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16 ; for(int i=0;i4;i+) for(int j=0;j4;j+) min=aij; for(int k=j;kmin) p+; if(p!=3
12、-j) continue; else for(int n=0;n4;n+) MIN=anj; for(int u=n;u4;u+) if(aujMIN) q+; if(q!=3-n) continue; else if(i!=n) continue; else cout第i+1行第j+1列aijendl; return 0;结果:能运行,但没有显示结果。(4) 它们是所在行的最大值,却是所在列的最小值。#includeusing namespace std;int main() int max,tmp,MIN; int p=0,q=0; int a44= 1,2,3,4, 5,6,7,8, 9
13、,10,11,12, 13,14,15,16 ; for(int i=0;i4;i+) for(int j=0;j4;j+) max=aij; for(int k=j;k4;k+) if(aikmax) p+; if(p!=3-j) continue; else for(int n=0;n4;n+) MIN=anj; for(int u=n;uMIN) q+; if(q!=3-n) continue; else if(i!=n) continue; else cout第i+1行第j+1列aijendl; return 0;结果:能正常运行并的出想要的结果。4.编写程序,将上题中的矩阵用二维数组
14、存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。#include using namespace std;int main()int A44;int x;cout请输入您要转置的4*4阶行列式:endl;for(int i=0;i4;i+) for(int j=0;jAij; cout您输入的4*4阶行列式为:endl;for(i=0;i4;i+) for(int j=0;j4;j+) coutAijt; coutendl; cout转置后的行列式为:endl;for(i=0;i4;i+) for(int v=i;v4;v+) x=Aiv; Aiv=Avi;/如果有多条语句,一定要用括起来
15、 Avi=x; cout转置后的行列式为:endl; for(i=0;i4;i+) for(int j=0;j4;j+)/为什么前面已经定义了j后面还要在定义一次? coutAijt; coutendl;/一定要注意放的位置,不然无法输出4*4阶行列式 return 0;结果:能正常运行并得出想要的结果。5.编写程序,将两个字符串连接起来,要求不使用strcat()函数。#include using namespace std;int main()char A20;int n;cout输入一个字符串A并以z为结束endl;for(int i=0;iAi; if(Ai=z) n=i; break
16、; char B20;int m;cout输入一个字符串B并以z为结束endl;for(int j=n;jBj; if(Bj=z) m=j;/这里是m=j-1 break; char C100;for(int v=0;vm;v+)/这里vm改为v=m,为什么运行结果少了最后一个字符 if(vn) Cv=Av; else Cv=Bv; cout连接后的字符串C为:endl;for(int x=0;xm;x+)coutCx;coutendl;return 0;结果:能正常运行并得到想要的结果。6.输入三个字符串,请使用字符串比较函数strcmp()将这三个字符串排序后按从小到大的顺序输出。#inc
17、lude#includeusing namespace std;int main() char a10,b10,c10; char d10,e10,f10; couta; cinb; cinc; if(strcmp(a,b)0)&(strcmp(a,c)0)/第一种情况如果ab,ac if(strcmp(b,c)0)/比较b,c的大小,如果bc for(int i=0;ibc分别赋值给d,e,f. else for(int i=0;icb di=ai,ei=ci,fi=bi; else if(strcmp(b,a)0)&(strcmp(b,c)0)/如果ba,bc. if(strcmp(a,c)0)/bac分别赋值给d,e,f. for(int j=0;jca分别赋值给d,e,f. for(int j=0;j0) for(int k=0;k10;k+) dk=ck,ek=ak,fk=bk; else for(int k=0;k10;k+) dk=ck,ek=bk,fk=ak; cout排序后的字符串排列为:f e dendl; return 0;结果:能正常运行,得出想要的结果,不知道理解的对不对。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1