C++编程题及答案.docx
- 文档编号:27608054
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:23
- 大小:22.10KB
C++编程题及答案.docx
《C++编程题及答案.docx》由会员分享,可在线阅读,更多相关《C++编程题及答案.docx(23页珍藏版)》请在冰豆网上搜索。
C++编程题及答案
C++编程题
1、求Sn=a+aa+aaa+aaaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数。
程序如下:
例如:
2+22+222+2222(此时a=2,n=4)
#include
usingnamespacestd;
intmain()
{
inta,n,b=0,s=0;
cin>>a>>n;
for(inti=1;i<=n;i++)
{
b=b*10+a;
s+=b;
}
cout<
return0;
}
2、从键盘上输入一个正整数,判别它是否为一回文数。
如:
123321
程序如下:
#include
usingnamespacestd;
intmain()
{
longi,n,m;
cout<<"请输入一个整数"< cin>>m; cout< i=m;n=m;m=0; while(i) { m=m*10+i%10; i=i/10; } if(m==n)cout<<"是回文数"; elsecout<<"不是回文数"; cout< return0; } 3、n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序如下: #include #include usingnamespacestd; intmain() { unsignedlonginti,x,y,z; for(i=1;i<1000000;i++) { x=(sqrt(i+100)); y=(sqrt(i+268)); if(x*x==i+100&&y*y==i+268) { cout< } return0; } 4、求1000之内的完全数。 Ÿ说明: 完全数就是: 除了它本身以外所有因子之和等于其本身,例如: 6=1+2+3。 程序如下: #include usingnamespacestd; intmain() { inti,j,t; cout<<"1000以内的完全数为"< for(i=1;i<=1000;i++) { t=0; for(j=1;j if(i%j==0)t+=j; if(t==i) cout< } return0; } 5、求出[900,1000]间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个? 程序如下: #include #include usingnamespacestd; voidmain() { inti,w=0,j=0; floata; for(i=900;i<=1000;i++) { a=sqrt(i); if(a*a==i) j++; else w++; if(w==1) cout<<"[900,1000]间有偶数个因子的数的个数为"< } cout<<"[900,1000]中最小的有偶数因子的数是"; cout< } 6、编写一个自定义函数: intf(intM,intN),f()的功能是: 对给定的正整数M和N,找出满足方程“7x+4y=M”的正整数解中x是偶数且y是奇数的解,其中: x,y属于[1,N]的范围。 Ÿ要求: 若M和N不都是正整数,则结束函数并返回-1;只有M和N都是正整数时,才继续求解操作,用二重循环进行求解: (1)在函数中输出满足条件的正整数解x和y, (2)并且使函数值返回满足条件的正整数解的组数。 程序如下: (可参考第20题) intf(intM,intN) { intx,y,count=0; if(M<1||N<1)return-1; for(x=2;x<=N/7;x+=2) { for(y=1;y<=M/4;y+=2) { if(7*x+4*y==M) { count++; cout<<"x="< } } } return(count? count: -1); } 7、写一个函数: 找出一个整数数组中,第二大的数. 程序如下: intfind_sec_max(intdata[],intcount) { intmaxnumber=data[0]; intsec_max=data[0]; for(inti=1;i { if(data[i]>maxnumber) { sec_max=maxnumber; maxnumber=data[i]; } else { if(data[i]>sec_max) sec_max=data[i]; } } returnsec_max; } 8、写一个函数,找出给定字符串中数字字符(即’0’—‘9’这10个数字)的个数(如字符串“olympic2000”中数字字符的个数为4个。 函数的原型为: intCalcDigital(char*str); 函数参数: str为所要处理的字符串。 函数返回值: 所给字符串中数字字符的个数。 程序如下: int CalcDigital(char*str) { if(str==NULL) return0; intnum_of_digital=0; for(inti=0;str[i]! =0x0;i++) if(str[i]<=9&&str[i]>=0) num_of_digital++; returnnum_of_digital; } 9、编写一个自定义函数: intf(charx,intN),f()的功能是: 对给定的字符c和整数N,用c代表的符号打印一个N行的图案,每行开头没有任何空格。 比如,当c为"*"且N为5时,打印的图案如本题图所示。 且函数值返回1。 #include usingnamespacestd; intf(charx,intN); intmain() { f('*',5); return0; } 程序如下: #include usingnamespacestd; intf(charx,intN); intmain() { f('*',5); return0; } intf(charx,intN) { for(inti=0;i { for(intj=0;j<=i;j++) cout< cout< } return0; } 10、编写一个自定义函数: intf(intN),f()的功能是: 对给定的正整数N,打印一个N行N列的由"A"、"B"、"C"以及空格""符号组成的方阵图案。 比如,当N为5时,打印的图案如本题图所示。 且函数值返回1。 #include usingnamespacestd; intf(intN); voidmain() {f(5);} 程序如下: #include usingnamespacestd; intf(intN); voidmain() {f(5);} intf(intN) { inti,j; for(i=0;i { for(j=0;j { if(j==0||j==i)cout<<"A"; elseif(i else cout<<"C"; } cout< } return1; } 11、编写函数f(),计算具有n个元素的一维数组a中每组相邻两个数的差,找出其中的最大差作为函数值返回。 #include usingnamespacestd; #defineM5 intf(inta[],intn); voidmain() {inti,a[M]; for(i=0;i cin>>a[i]; cout<<"Theresultis"< } 程序如下: #include usingnamespacestd; #defineM5 intf(inta[],intn); voidmain() {inti,a[M]; for(i=0;i cin>>a[i]; cout<<"Theresultis"< } intf(inta[],intn) { inti,t; t=abs(a[0]-a[1]); for(i=1;i if(t returnt; } 12、根据下列要求和提示,编写一个函数f(N)判断某数N是否为“完全数”,N由主函数给出;如果N是“完全数”则函数值返回1,N不是“完全数”则函数值返回0。 “完全数”定义如下: 如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。 如: 6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。 #include usingnamespacestd; intf(intN); voidmain() {intN; cin>>N; if(f(N)==1) cout< "< else cout< "< } 程序如下: #include usingnamespacestd; intf(intN); voidmain() {intN; cin>>N; if(f(N)==1) cout< "< else cout< "< } intf(intN) { inti,s=0; for(i=1;i if(N%i==0)s=s+i; if(s==N)return1; return0; } 13、编写程序,求e的值,e≈1+1/1! +1/2! +1/3! +1/4! +...,最后一项的值小于1e-6。 程序如下: #include usingnamespacestd; intmain() { inti=0; doublej=1,e=1; while(1/j>1e-6) { i=i+1; j=j*i; e=e+1/j; } cout<<"e="< return0; } 14、有十进制数字a,b,c,d和e,求满足式子: abcd*e=dcba(a非0,e非0非1)的四位数中: (1)共有多少个? (2)最小的abcd; (3)与之相对应的e。 程序如下: #include usingnamespacestd; intmain() { inta,b,c,d,e; ints=0,f=0; for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(e=2;e<=9;e++) if((a*1000+b*100+c*10+d)*e==d*1000+c*100+b*10+a) {s++; if(f==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编程 答案