C++编程基础题训练答案_第1页
C++编程基础题训练答案_第2页
C++编程基础题训练答案_第3页
C++编程基础题训练答案_第4页
C++编程基础题训练答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、.1、 入 3 个数,求最大数。#include using namespace std;int main()int a,b,c,max;cout 入三个数字:abc;max=(ab)?a:b;if(cmax)max=c;cout 最大 : maxendl;return 0;2、 信点兵:有一个数,用3 除余 2;用 5 除余 3;用 7 除余 2;求 足条件的最小数。#include using namespace std;int main()int a;for(a=1;a1000;a+)if(a%3=2&a%5=3&a%7=2)couta;break;return 0;3、求 1+2+3+

2、100#include using namespace std;int main()int s=0;int a=1;do.s=s+a;a=a+;while(a101);coutsendl;return 0;4、求 1-2+3-4+ -100#include using namespace std;int main()int a,s=0,s1=0,s2=0;for(a=1;a-101;a=a-2)s2=s2+a;s=s1+s2;coutsendl;return 0;5、求 1+1/2+1/3+ +1/100#include using namespace std;void main()float

3、 a,m;float s=0;for(a=1;a101;a+)m=1/a;s=s+m;couts=sendl;.6、求 入n,求 n !(需判断n 的合法性) 用#include using namespace std;int fac(int n)if(n=0)return 1;elsereturn fac(n-1)*n;int main()while(1)int x,y,n;coutx;fac(x);coutfac(x)endl;break;return 0;7、求 1! +2!+3! + +10!#include using namespace std;int main()int s=0;

4、int t=1;int n;for(n=1;n11;n+)t=t*n;s=s+t;cout1!+2!+3!+.+10!=sendl;return 0;.8、求 1+1/2!+1/3!+ 1/n! ,直到 1/n!1e-5 止第一种方法:#include using namespace std;void main()double s=0;double t=1;double n=1;dot=t*n;s=s+1/t;n+;while (t1e5);cout1/1!+1/2!+1/3!+.+1/n!=sendl;第二种方法:#include using namespace std;void main(

5、)double sum=0.0;/ 果double now=1.0;/ 在的 1 n!double cnt=2.0;/ 在的 nwhile(now=1e-5)sum+=now;now/=cnt;cnt+=1.0;coutsumendl;9、用公式求ex=1+x+x2/2!+x3/3!+ +xn/n! 。 n 取 20。#includeusing namespace std;int pow(int x, int n);int f1(int n);.int main(int argc, char* argv)int x, n;double ex = 1;cin x;cin n;for (int i

6、=1; i=n; i+)ex += pow(x, i) / (f1(i) * 1.0);cout ex endl;system(pause);return 0;int f1(int n)int s = 1;for (int i=2; i=n; i+)s *= i;return s;int pow(int x, int n)int s = 1;for (int i=1; i=n; i+)s *= x;return s;10、假定 f1=1,f2=1;fn=fn-1+fn-2 。输出前50 项的值,且要求每行输出5 个值#include#includeusing namespace std;int

7、 f(int n)int sum;if (n=2)return 1;else.sum=f(n-1)+f(n-2);return sum;coutn;f(n);for(i=1;i=n;i+)coutf(i): f(i);if(i%5=0)coutendl;return 0;11、判断一个数是否为素数方法 1:# include# include using namespace std;int main()int i,n,k;cout 请输入一个数:n;k=sqrt(n);for(i=2;ik)coutn 是素数。 endl;else coutn 不是素数。 endl;return 0;方法 2:

8、#include#include.using namespace std;int main()int i,n,m;cout 请输入一个数:n;m=sqrt(n);for(i=2;im)coutn 是素数。 endl;elsecoutn 不是素数。 endl;return 0;12、输出 2-1000 中的素数及个数。且要求每行输出8 个素数。方法 1:#include #include int main()int n=0, i, j,w,k;for(i=2;i=2000; i+)w=1;k=sqrt(i);for (j=2; j=k; j+)if (i%j=0)w=0;break;if (w)

9、+n;.if (n%8=0)coutiendl;elsecouti ;coutendl;cout 个数 n=nendl;return 0;方法 2:#include #include using namespace std;int main()int i,j,n=0;for(i=2;i2001;i+)for(j=2;j=i;j+)if(j=i)couti ;n+;if(n%8=0)coutendl;if(i%j=0)break;coutendl;cout 个数为 n:nendl;return 0;13、输入两个整数,求最大公约数和最小公倍数。#includeusing namespace st

10、d;.int fun1(int a,int b);int fun2(int a,int b);int main()int a,b;cout 入两个整数:ab;int fun1(int a,int b);int fun2(int a,int b);cout 最大公 数:fun1(a,b)endl;cout 最小公倍数:fun2(a,b)endl;return 0;int fun1(int a,int b)int m,i;m=a=1;i-)if(a%i=0&b%i=0)break;return i;int fun2(int a,int b)int n,j;n=ab?a:b;for(j=n;j=a*

11、b;j+)if(j%a=0&j%b=0)break;return j;14、 入一个非0 的一位整数x, 入一个整数n。 出 n 位整数 x x x x。#include#includeusing namespace std;.int main()int m,i,s,x,n,j;cout 入一个整数x: x;cout 入一个整数n: n;s=0;for(i=0;i=n;i+)j=pow(10,i);s=s+j;m=x*s;cout 果: mendl;return 0;15、 入 n、 a。求 sn=a+aa+aaa+a a,其中 a 是一个非 0 的一位整数。#include#includeu

12、sing namespace std;int fun(int a,int b);int main()int n,a,s,i,k;cout 入一个整数n: n;cout 入一个整数a: a;s=0;for(i=0;in;i+)k=fun(a,i);s=s+k;coutsn=sendl;return 0;.int fun(int a,int b)int m,i,s,j;s=0;for(i=0;i=b;i+)j=pow(10,i);s=s+j;m=a*s;return m;16、输入任意的正整数,将其各位分离出来;求它是几位数, 求各位上数字的和,求其逆值。#include#includeusing

13、 namespace std;void main()int x,y,m,n,i,j=1,k=0,a20;coutm;y=m;coutendl;for(i=1;i+)j*=10;n=m/j;ai=n;k+;if(n1)break;cout 您输入的位数是:kendl;int b=1,c,d=0;for(i=1;i=k;i+).b*=10;/coutbendl;cout0;i-) b=b/10; c=m/b; m=m-c*b; d+=c;coutc;coutendl;/cout 你输入的数字是k 位数 n;cout 各位上的数字之和为:dendl;x=0;dox=x*10+y%10;y=y/10;

14、while(y!=0);cout 逆序输出为:x;coutendl;17、一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3。求 1000以内所有的完数,每行5 个。#include #include using namespace std;int main()int m,i;cout1000 以内的完数有:;for(m=1;m1001;m+)int c=0,n=0;.for(i=1;im;i+)if(m%i=0)c=c+i;if (c=m)n+;coutc ;if(n%5=0)coutendl;coutendl;return 0;18、用迭代法求x=a 的平方根。求平方

15、根的迭代公式为xn+1=0.5(xn+a/xn)。要求前后两次求出的 x 的差的绝对值小于1e-5 为止。#include #include #include using namespace std;int main()double x1,x2,a,b;x2=0;x1=1.0;b=1.0;cina;while(b=1e-5)x2=(x1+a/x1)/ 2;b=fabs(x2-x1);x1=x2;coutx2endl;return 0;19、用牛顿迭代法求方程在1.5 附近的根2x3-4x2+3x-6=0.#include #include #include using namespace st

16、d;int main()double x=1.5,x0,f,f1;dox0=x;f=2*x0*x0*x0-4*x0*x0+3*x0-6;f1=6*x0*x0-8*x+3;x=x0-f/f1;while(fabs(x-x0)=1e-5);coutx0=x0endl;return 0;20、用二分法求上面的方程在(-10, 10)之间的根#include using namespace std;doublefun(double x)return 2*x*x*x-4*x*x+3*x-6;double judge(double e,double a,double b)double c;c=(a+b)/

17、2;if(b-a=e)return c;elseif(fun(c)=0)return c;else if(fun(a)*fun(c)0)/b=c;return judge(e,a,c);.else/a=c;return judge(e,c,b);int main()double e;cout 请输入精确度:e;coutjudge(e,-10,10)endl;return 0;21、打印形状为直角三角形的九九乘法表。#include using namespace std;int main()int i,j,k;for(i=1;i=9;i+)for(j=1;j=i;j+)coutjxi=;k=i

18、*j;coutk ;if(i=j)coutendl;return 0;22、百马百担问题。有 100 匹马,驮 100 担货,大马驮 3 担,中马驮 2 担,两匹小马驮 1 担,问有大中小马多少匹,共有多少组解?#include .using namespace std;int main()int x,y,z;int m=0;for(x=1;x100;x+)for(y=1;y100;y+)for(z=1;z100;z+)if(x+y+z=100)&(6*x+4*y+z=200) m+;cout 第 m 种方案。 endl;cout 大 : x ;cout 中 : y ;cout 小 : zen

19、dl;return 0;23、数列 1,2 ,2, 3, 3, 3, 4, 4, 4,4, 5, 第 100 是多少?#include using namespace std;int main()int i,m,n=0;for(i=1;i101;i+)for(m=1;m=i;m+)n+;if(n=100)cout 第 100 个数: iendl;return 0;24、求任意一个整数的十位上的数字。.#include using namespace std;int main()int m,n,x;coutm;n=m%10;m=(m-n)/10;x=m%10;coutendl;cout 其十位数

20、为:xendl;return 0;25、输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形。#include using namespace std;int main()int a,b,c;coutabc;if(a+b)c&(a+c)b&(b+c)a&(a-b)c&(a-c)b&(b-c)a)if(a=b|a=c|b=c)cout 是等腰三角形 ;else if(a=b&a=c)cout 是等边三角形 ;else if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)cout 是直角三角形 ;else cout 是普通三角形 ;else cout 不可以构

21、成三角形。endl;return 0;26、输入任意的a,b,c 求一元二次方程ax*x+bx+c=0 的根。#include .#include using namespace std;int main()int a,b,c;cout 请输入任意三个数a,b,c:abc;float x1,x2,d;d=sqrt(b*b-4*a*c);if(d=0)x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);coutx1=x1endl;coutx2=x2endl;else cout 无解 endl;return 0;27、将百分制成绩转换为五级制成绩#include using names

22、pace std;int main()int s;couts;if(s100|s0)cout0&s60)cout=60&s80)cout=80&s90)cout=90&s=100)cout 优秀 ;return 0;.28、输入年月日,判断它是该年的第多少天。#include using namespace std;int main()int year,month,day,days=0,i;cout 请输入年月日endl;coutyear;coutmonth;coutday;if(year10000|year0|month13|day31)cout 有误! endl;elseif(year%4

23、=0&year%100=0|year%400=0)for(i=1;imonth;i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)days+=31;else if(i=4|i=6|i=9|i=11)days+=30;elsedays+=29;elsefor(i=1;imonth;i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)days+=31;else if(i=4|i=6|i=9|i=11)days+=30;elsedays+=28;cout 它是该年的第days+day天。 endl;.return 0;29、假定 2007 年的一月一日是星期

24、三,求2009 年的 4 月 20 日是星期几。#include using namespace std;long alldays(int year,int month,int day);long alldays(int year,int month,int day)int i;long d=0;for(i=1;iyear;i+)if(year%4=0&year%100=0|year%400=0)d+=366;elsed+=365;for(i=1;imonth;i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)d+=31;elseif(i=4|i=6|i=9|i=11)d

25、+=30;elseif(year%4=0&year%100=0|year%400=0)d+=29;elsed+=28;return d+day;int main()int date,i,d;long x=alldays(2007,1,1);long y=alldays(2009,4,20);long z=alldays(2009,4,20)-alldays(2007,1,1)+1;coutendl;date=3; cout 间隔 z天 ;coutendl;d=z%7;for(i=1;i7)date=date-7;cout 星期 date;coutendl;return 0;30、我国古代著名的

26、孙子定理也称韩信点兵。/ 用现代语言讲是:有一个数,用3 除余 2,用 5 除余 3,用 7 除余 2,求满足条件的最小数。#include using namespace std;int main()int i;for(i=1;i+)if(i%3=2&i%5=3&i%7=2)break;else;coutiendl;return 0;31、求一个整数的各个数位上的数字之和并反序输出。#include using namespace std;int main()int m1,m2,j=10,i,d=0,a20;cout 请输入任意一个数m1;m2=m1;cout 反序输出各位数endl;for

27、(i=1;i+)m1=m2%j;m2=m2/j;ai=m1;coutm1 ;d+=m1;if(m21)break;.coutendl;cout 各位数之和 dendl;return 0;32、求 1+2+3+前 n 的和。#include using namespace std;int main()int i,n,s=0;cout 入一个n : n;for(i=1;i=n;i+)s+=i;cout 前 n 和 : sendl;return 0;33、求 1-3+5-7+的前100 的和。方法 1:#include using namespace std;int main()int i,n=1,

28、m=3,s,s1=0,s2=0;for(i=1;i=100;i+)s1+=n;n+=2;for(i=1;i=50;i+)s2+=m;m+=4;s=s1-2*s2;cout 前 100 和 : sendl;return 0;.方法 2:#includevoid main()int a=1,b=-1,i,j;int m=1,n=1,sum=0;for(i=1;i=100;i+)a*=b;n=m*a;sum+=n;m+=2;cout-sum;coutendl;34、求 1+( 1+2) +( 1+2+3) +( 1+2+3+4) +的前n 的和#include using namespace std

29、;int main()int i,n,s=0,s1=0;cinn;for(i=1;i=n;i+)s1+=i;s+=s1;cout 前 n 和: sendl;35、求 n!#include using namespace std;int main()int i,n;cinn;for(i=n-1;i=1;i-)n*=i;.coutn! : nendl;return 0;36、求 1!+2!+3!+ +n!#include using namespace std;int main()int i,n,s=0,m=1;cinn;for(i=1;i=n;i+)m*=i;s+=m;cout1!+2!+.+n

30、!=sendl;return 0;37、求 1!-3!+5!-7!+ 前 n 的和#include using namespace std;int main()int m,n=1,x=1,y=-1,sum=0;double a,b=1,s=0;cinm;for(int i=1;i=m;i+)n=2*i-1;a=1;for(int j=1;j=n;j+)x*=y;a*=j;b=a*(-x);sum+=b;coutsum endl;return 0;.38、求 1*2+2*3+3*4+ 前 n 的和#include using namespace std;int main()int m,i,n,s

31、=0;cinn;for(i=1;i=n;i+)m=i*(i+1);s+=m;couts endl;return 0;39、从 入一个整数,判断它是否 素数#include using namespace std;int main()int n,i,m;cinn;for(i=2;in;i+)m=n%i;if(m=0)break;if(m=0)cout 不是素数。 endl;elsecout 是素数。 endl;return 0;40、求 3 到 1000 之 的所有素数的和。#include #include using namespace std;int main().int n,i,k,s=

32、0,j=0;for(n=3;n=1000;n+)k=sqrt(n);for(i=2;ik)coutn ;s+=n;j+;if(j%8=0)coutendl;coutendl;couts=sendl;return 0;41、验证哥德巴赫猜想:一个大于2 的偶数总可以分解成两个素数的和。#include #include using namespace std;int f(int x);int f(int a)/ 判断是否是素数int i,j;j=sqrt(a);for(i=2;ij)return 1;elsereturn 0;void main().int n,m,i,k;cout 入一个大于2 偶数: m;if(m2|m%2!=0)cout 入有 ! endl;elsecout 偶数 m 可以拆成两个素数之和endl;for(i=1;i=m/ 2;i+)n=i;k=m-i;if(f(n)&f(k)cout n kendl;42、 s=1+1/2+1/3+ +1/n, 求与 8 最接近的s 的 及与之 的n 。#include #include usin

温馨提示

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

评论

0/150

提交评论