C++编程题及答案_第1页
C++编程题及答案_第2页
C++编程题及答案_第3页
C++编程题及答案_第4页
C++编程题及答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

n表示C++编程题n表示1、 求Sn二a+aa+aaa+aaaa aa・・・a(n个a)之值,其中a是-一个数字,a的位数。程序如下:例如:2+22+222+2222(此时a=2,n=4)#include<iostream>usingnamespacestd;intmain(){inta,n,b=0,s=0;cin>>a>>n;for(inti=1;i<=n;i++){b=b*10+a;s+=b;}cout<<s<<endl;return0;}2、 从键盘上输入一个正整数,判别它是否为一回文数。如:123321程序如下:#include<iostream>usingnamespacestd;intmain(){longi,n,m;cout<〈"请输入一个整数"<<endl;cin>>m;cout<<m<<"";i=m;n=m;m=0;while(i){m=m*10+i%10;i=i/10;}if(m二二n)cout<<"是回文数";elsecout<<"不是回文数";cout<<endl;return0;}3、n为一个整数(小于10万),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序如下:#include<iostream>#include<cmath>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<<i<<endl;}}return0;}4、求1000之内的完全数。说明:完全数就是:除了它本身以外所有因子之和等于其本身,例如:6=1+2+3。程序如下:#include<iostream>usingnamespacestd;intmain(){inti,j,t;cout<<"1000以内的完全数为"<<endl;for(i=1;i<=1000;i++){t=0;for(j=1;j<i;j++)if(i%j==0)t+=j;if(t==i)cout<<i<<endl;}return0;}5、求出[900,1000]间有偶数个因子(这里因子不含1和自身)的数有多少个,其中最小的一个?程序如下:#include<iostream>#include<cmath>usingnamespacestd;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]间有偶数个因子的数的个数为"<<i<<endl;}cout<<"[900,1000]中最小的有偶数因子的数是";cout<<w<<endl;}6、编写一个自定义函数:intf(intM,intN),f()的功能是:对给定的正整数M和N,找出满足方程“7x+4y=M”的正整数解中x是偶数且y是奇数的解,其中:x,y属于[1,N]的范围。要求:若M和N不都是正整数,则结束函数并返回一1;只有M和N都是正整数时,才继续求解操作,用二重循环进行求解:在函数中输出满足条件的正整数解x和y,并且使函数值返回满足条件的正整数解的组数。程序如下:(可参考第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="<<x<<"y="<<y<<endl;}}return(count?count:-1);}7、写一个函数:找出一个整数数组中,第二大的数.程序如下:intfind_sec_max(intdata[],intcount){intmaxnumber=data[0];intsec_max=data[0];for(inti=1;i<count;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时,打印的图案如本题图所示。且函数值返回#include<iostream>usingnamespacestd;intf(charx,intN);intmain(){f('*',5);return0;}程序如下:#include<iostream>usingnamespacestd;intf(charx,intN);intmain(){f('*',5);return0;}intf(charx,intN){for(inti=0;i<N;i++){for(intj=0;j<=i;j++)cout<<x;cout<<endl;}return0;10、编写一个自定义函数:intf(intN),f()的功能是:对给定的正整数N,打印一个N行N列的由〃A〃、〃B〃、〃C〃以及空格〃〃符号组成的方阵图案。比如,当N为5时,打印的图案如本题图所示。且函数值返回1。#include<iostream>usingnamespacestd;intf(intN);voidmain(){玖5);}程序如下:#include<iostream>usingnamespacestd;intf(intN);voidmain(){玖5);}intf(intN){inti,j;for(i=0;i<N;i++){for(j=0;j<N;j++){if(j==0||j==i)cout<<"A";elseif(i<j)cout<<"B";elsecout<<"C";}cout<<endl;}return1;}11、编写函数f(),计算具有n个元素的一维数组a中每组相邻两个数的差,找出其中的最大差作为函数值返回。#include<iostream>usingnamespacestd;#defineM5intf(inta[],intn);voidmain(){inti,a[M];for(i=0;i<M;i++)cin>>a[i];cout<<"Theresultis"<<f(a,M)<<endl;程序如下:#include<iostream>usingnamespacestd;#defineM5intf(inta[],intn);voidmain(){inti,a[M];for(i=0;i<M;i++)cin>>a[i];cout<<"Theresultis"<<f(a,M)<<endl;}intf(inta[],intn){inti,t;t=abs(a[0]-a[1]);for(i=1;i<n-1;i++)if(t<abs(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是个“完全数”。#include<iostream>usingnamespacestd;intf(intN);voidmain(){intN;cin>>N;if(f(N)==1)cout<<N<<"ShiWanQuanShu!"<<endl;elsecout<<N<<"BuShiWanQuanShu!"<<endl;}程序如下:#include<iostream>usingnamespacestd;intf(intN);voidmain(){intN;cin>>N;if(f(N)==1)cout<<N<<"ShiWanQuanShu!"<<endl;elsecout<<N<<"BuShiWanQuanShu!"<<endl;}intf(intN)inti,s=0;for(i=1;i<N;i++)if(N%i==0)s=s+i;if(s==N)return1;return0;}13、编写程序,求e的值,e~l+l/l!+l/2!+l/3!+l/4!+...,最后一项的值小于1e-6。程序如下:#include<iostream>usingnamespacestd;intmain(){inti=0;doublej=1,e=1;while(1/j>1e-6){i=i+1;j=j*i;e=e+1/j;}return0;14、有十进制数字a,b,c,d和e,求满足式子:abed*e=dcba(a非0,e非0非1)的四位数中:共有多少个?最小的abed;与之相对应的e。程序如下:#include<iostream>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)cout<<a<<b<<c<<d<<""<<e<<endl;f=1;cout<<s<<endl;return0;}15、有一个7层灯塔,每层所点灯数都等于该层上一层的两倍,灯的总数是381盏,求:塔底灯数?第几层的灯数为48?程序如下:#include<iostream>usingnamespacestd;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)cout<<j<<"层的灯数为48"<<endl;t=t*2;}if(s==381)break;

cout<〈"塔底灯数二"<<t/2<<endl;}16、有3个红球,5个白球,6个黑球,从中任意取出8个球球,请求出共有多少种取法?程序如下:#include<iostream>usingnamespacestd;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++;cout<<c<<endl;}17、求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,项的值;值为17的第1个数是数列中第几项?程序如下:#include<iostream>usingnamespacestd;voidmain(){且其中必须有白。求:第40且其中必须有白。求:第40if(i==17){cout<<"值为17的第1个数的项数为"<<c+l<<endl;break;}for(j=1;j<=i;j++){c++;if(c==40)cout<〈"第40项的值二"<<i<<endl;}}}18、计算p的近似值,直到最后一项的绝对值小于10-8为止,近似公式为程序如下:#include"stdafx.h"#include<iostream>usingnamespacestd;intmain(intargc,char*argv[]){doublepi=1,t=1,i=1;while(1/>=1e-8){t=-t;i=i+2;pi=pi+t/i;}cout<<"pi="<<4*pi<<endl;return0;}19、用牛顿迭代法求方程3x'3-4x'2-5x+13=0在x=1附近的根,要求精度为10-6。牛顿迭代公式为:x1=xO-f(xO)/f"(xO)程序如下:#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublediedai(doublea,doubleb,doublec,doubled,doublex);doublea,b,c,d;doublex=10000.0;cout<<"请依次输入方程四个系数:";cin>>a>>b>>c>>d;x=diedai(a,b,c,d,x);cout<<x<<endl;return0;}doublediedai(doublea,doubleb,doublec,doubled,doublex)while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001){x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);}returnx;}20、编写一个自定义函数:intf(intM,intN),函数f的功能是:对给定的正整数M和N,找出满足方程〃5x+6y=M〃的正整数解中x和y都是偶数的解。要求:若M和N不都是正整数,则结束函数并返回一1;只有M和N都是正整数时,且x,y$[1,N],才继续求解操作,并用二重循环进行求解:(1)在函数中输出满足条件的正整数解x和y,(2)使函数值返回满足条件的正整数解的组数。#include<iostream>usingnamespacestd;intf(intM,intN);voidmain(){cout<<f(500,650)<<endl; }程序如下:#include<iostream>usingnamespacestd;intf(intM,intN);voidmain(){cout<<f(500,650)<<endl; }{intx,y;intn=0;if(M<0||N<0)return-1;for(x=1;x<M;x++)for(y=1;y<M;y++){if(5*x+6*y==M&&x%2==0&&y%2==0){n=n+1;cout<<"x="<<x<<",y="<<y<<endl;}}returnn;}21、编写一个自定义函数:intf(longa[],intn,longx),f()的功能是:对给定的含有n个元素的一维数组a及某个指定数x,查找数组a中是否存在元素值等于x的元素,若存在,则函数值返回找到的下标最大的那个元素的下标;若不存在,则函数值返回-1。#include<iostream>usingnamespacestd;intf(longa[],intn,longx);voidmain(){longx=7;longa[5]={3,5,2,7,9};cout<<f(a,5,x)<<endl;}程序如下:#include<iostream>usingnamespacestd;intf(longa[],intn,longx);voidmain(){longx=7;longa[5]={3,5,2,7,9};cout<<f(a,5,x)<<endl;}intf(longa[],intn,longx){inti;intmaxi=-1;for(i=1;i<n;i++)if(a[i]==x)maxi=i;if(maxi>=0)returnmaxi;elsereturn-1;}22、求s=2+22+222+...+222...2的和,即第n个加数是一个n位的整数,且各数位上的数字均为2,例如当n=4时,s=2+22+222+2222。要求设计一个函数intf(intn)求每一个加数,在main()中用累加求和方式求出总和。#include"stdafx.h"#include<iostream.h>intmain(intargc,char*argv[])ints=0,i,n;cout<<"Inputn:";cin>>n;for(i=1;i<=n;i++)s=s+f(i);cout<<"2+22+222+...="<<s<<endl;return0;}程序如下:#include<iostream.h>intf(intn);intmain(intargc,char*argv[]){ints=0,i,n;cout<<"Inputn:";cin>>n;for(i=1;i<=n;i++)s=s+f(i);cout<<"2+22+222+...="<<s<<endl;return0;}inti,j=0;for(i=1;i<=n;i++)j=2+j*10;returnj;}23、所有能被13整除又能被17整除且末位不是偶数的三位数有几个?最大的一个?程序如下:#include<iostream>usingnamespacestd;intmain(intargc,char*argv[]){inti,j=0;for(i=999;i>=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论