您好,欢迎访问三七文档
C++编程题1、求Sn=a+aa+aaa+aaaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数。程序如下:例如:2+22+222+2222(此时a=2,n=4)#includeiostreamusingnamespacestd;intmain(){inta,n,b=0,s=0;cinan;for(inti=1;i=n;i++){b=b*10+a;s+=b;}coutsendl;return0;}2、从键盘上输入一个正整数,判别它是否为一回文数。如:123321程序如下:#includeiostreamusingnamespacestd;intmain(){longi,n,m;cout请输入一个整数endl;cinm;coutm;i=m;n=m;m=0;while(i){m=m*10+i%10;i=i/10;}if(m==n)cout是回文数;elsecout不是回文数;coutendl;return0;}3、n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序如下:#includeiostream#includecmathusingnamespacestd;intmain(){unsignedlonginti,x,y,z;for(i=1;i1000000;i++){x=(sqrt(i+100));y=(sqrt(i+268));if(x*x==i+100&&y*y==i+268){coutiendl;}}return0;}4、求1000之内的完全数。说明:完全数就是:除了它本身以外所有因子之和等于其本身,例如:6=1+2+3。程序如下:#includeiostreamusingnamespacestd;intmain(){inti,j,t;cout1000以内的完全数为endl;for(i=1;i=1000;i++){t=0;for(j=1;ji;j++)if(i%j==0)t+=j;if(t==i)coutiendl;}return0;}5、求出[900,1000]间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个?程序如下:#includeiostream#includecmathusingnamespacestd;voidmain(){inti,w=0,j=0;floata;for(i=900;i=1000;i++){a=sqrt(i);if(a*a==i)j++;elsew++;if(w==1)cout[900,1000]间有偶数个因子的数的个数为iendl;}cout[900,1000]中最小的有偶数因子的数是;coutwendl;}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(M1||N1)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++;coutx=xy=yendl;}}}return(count?count:-1);}7、写一个函数:找出一个整数数组中,第二大的数.程序如下:intfind_sec_max(intdata[],intcount){intmaxnumber=data[0];intsec_max=data[0];for(inti=1;icount;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为所要处理的字符串。函数返回值:所给字符串中数字字符的个数。程序如下:intCalcDigital(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。#includeiostreamusingnamespacestd;intf(charx,intN);intmain(){f('*',5);return0;}程序如下:#includeiostreamusingnamespacestd;intf(charx,intN);intmain(){f('*',5);return0;}intf(charx,intN){for(inti=0;iN;i++){for(intj=0;j=i;j++)coutx;coutendl;}return0;}10、编写一个自定义函数:intf(intN),f()的功能是:对给定的正整数N,打印一个N行N列的由A、B、C以及空格符号组成的方阵图案。比如,当N为5时,打印的图案如本题图所示。且函数值返回1。#includeiostreamusingnamespacestd;intf(intN);voidmain(){f(5);}程序如下:#includeiostreamusingnamespacestd;intf(intN);voidmain(){f(5);}intf(intN){inti,j;for(i=0;iN;i++){for(j=0;jN;j++){if(j==0||j==i)coutA;elseif(ij)coutB;elsecoutC;}coutendl;}return1;}11、编写函数f(),计算具有n个元素的一维数组a中每组相邻两个数的差,找出其中的最大差作为函数值返回。#includeiostreamusingnamespacestd;#defineM5intf(inta[],intn);voidmain(){inti,a[M];for(i=0;iM;i++)cina[i];coutTheresultisf(a,M)endl;}程序如下:#includeiostreamusingnamespacestd;#defineM5intf(inta[],intn);voidmain(){inti,a[M];for(i=0;iM;i++)cina[i];coutTheresultisf(a,M)endl;}intf(inta[],intn){inti,t;t=abs(a[0]-a[1]);for(i=1;in-1;i++)if(tabs(a[i]-a[i+1]))t=abs(a[i]-a[i+1]);returnt;}12、根据下列要求和提示,编写一个函数f(N)判断某数N是否为“完全数”,N由主函数给出;如果N是“完全数”则函数值返回1,N不是“完全数”则函数值返回0。“完全数”定义如下:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。#includeiostreamusingnamespacestd;intf(intN);voidmain(){intN;cinN;if(f(N)==1)coutNShiWanQuanShu!endl;elsecoutNBuShiWanQuanShu!endl;}程序如下:#includeiostreamusingnamespacestd;intf(intN);voidmain(){intN;cinN;if(f(N)==1)coutNShiWanQuanShu!endl;elsecoutNBuShiWanQuanShu!endl;}intf(intN){inti,s=0;for(i=1;iN;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。程序如下:#includeiostreamusingnamespacestd;intmain(){inti=0;doublej=1,e=1;while(1/j1e-6){i=i+1;j=j*i;e=e+1/j;}coute=eendl;return0;}14、有十进制数字a,b,c,d和e,求满足式子:abcd*e=dcba(a非0,e非0非1)的四位数中:(1)共有多少个?(2)最小的abcd;(3)与之相对应的e。程序如下:#includeiostreamusingnamespacestd;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)coutabcdeendl;f=1;}coutsendl;return0;}15、有一个7层灯塔,每层所点灯数都等于该层上一层的两倍,灯的总数是381盏,求:塔底灯数?第几层的灯数为48?程序如下:#includeiostreamusingnamespacestd;voidmain(){inti,j,t,s;for(i=1;;i++){t=i;s=0;for(j=1;j=7;j++){s=s+t;if(t==48)coutj层的灯数为48endl;t=t*2;}if(s==381)break;}cout塔底灯数=t/2endl;}16、有3个红球,5个白球,6个黑球,从中任意取出8个球,且其中必须有白球,请求出共有多少种取法?程序如下:#includeiostreamusingnamespacestd;voidmain(){intr,w,b,c=0;for(r=0;r=3;r++)for(w=1;w=5;w++)for(b=0;b=6;b++)if(r+w+b==8)c++;coutcendl;}17、求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7……。求:第40项的值;值为17的第1个数是数列中第几项?程序如下:#includeiostreamusingnamespacestd;voidmain(){inti,j,c=0;for(i=1;;i+=2){if(i==17){cout值
本文标题:C++编程题及答案
链接地址:https://www.777doc.com/doc-6914851 .html