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

下载本文档

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

文档简介

1、1、输入 3 个数,求最大数。#include <iostream>using namespace std;int main()(int a,b,c,max;cout?" 请输入三个数字: "?endl;cin?a?b?c;max=(a>b)?a:b;if(c>max)max=c;cout?" 最大值: "?max?endl;return 0;2、韩信点兵:有一个数,用 3 除余 2;用 5除余 3;用 7 除余 2;求满足条件的最小数。 include <iostream> using namespace std;i

2、nt main()int a;for(a=l;a<1000;a+)(if(a%3=2&&a%5=3&&a%7=2)(cout?a;break;return 0;)3、求 1+2+3+100#include <iostream>using namespace std;int main()(int s=0;int a=l;dos=s+a;a=a+;while(a<101);cout?s?endl;return 0;)4、求 1 -2+3-4+ -100include <iostream>using namespace std;in

3、t main()(int a,s=0,sl=0,s2=0;for(a=l;a<101;a+,a+)(sl+=a;)for(a=-2;a>-101;a=a-2)(s2=s2+a;)s=sl+s2;cout?s?endl;return 0;)5、求 l+"+S+?+V100include <iostream>using namespace std;void main()(float a,m;float s=0;for(a=l;a<101;a+)(m=/a ;s=s+m;)cout?"s="?s?endl;)6、求输入n,求n!(需判断n的

4、合法性)递归调用 include <iostream>using namespace std;int fac(int n)( if(n=O)return 1;elsereturn fac(n-l)*n;)int main()(while(l)(int x,y,n;cout?" 输入一个整数: n"cin?x;fac(x);cout?fac(x)?endl;break;)return 0;)7、求 1! +2! +3! + +10!include <iostream>using namespace std;int main()(int s=0;int

5、t=l;int n;for(n=l;n<ll;n+)(t=t*n;s=s+t;) cout?"l!+2!+3!+.+10!="<<s?endl;return 0;)8、求 l+V2!+iy3!+ ? l/n!, 直到 "n!vlE-5 为止 第一种方法:include <iostream>using namespace std;void main()(double s=0;double t=l;double n=l;dot=t*n;s=s+/t ;n+;)while (t<le5);coutvv"l/l!+/2!+S!

6、+.+ n!= ” <<svvendl;第二种方法: include <iostream> using namespace std;void main()(double sum=0.0; 结果double now=1.0; / 现在的 1 / n !double cnt=2.0; 现在的 nwhile(now>=le-5)( sum+=now; now/=cnt; cnt+=1.0;)cout?sum?endl;9、用公式求 ex=l+x+x2/2!+x3/3!+ ,+xn/n!o n 取 20。 #include<iostream>using nam

7、espace std;int pow(int x, int n);int fl(int n);int main(int argc, char* argv)int x, n;double ex = 1;cin ? x;cin ? n;for (int i=l; i<=n; i+)ex += pow(x, i) / (fl(i) * 1.0);cout? ex ? endl;system("pause");return 0;)int fl(int n)(int s = 1;for (int i=2; i<=n; i+)s *= i;return s;)int pow

8、(int x, int n)(int s = 1;for (int i=l; i<=n; i+)s *= x;return s;5 个值10、假定 fl=l,f2=l;fn=fn-l+fn- 2,输出前 50 项的值 ,且要求每行输出#include<iostream>#include<iomanip>using namespace std;int f(int n)(int sum;if (n<=2)return 1;elsesum=f(n-l)+f(n-2);return sum;cout?sum;; int main()(int i,n;cin?n;f(

9、n);for(i=l;i<=n ;i+)(cout?"f(”?i?"): ”?f(i)?"if(i%5=0)(cout?e ndl;return 0;11、判断一个数是否为素数方法1:# in clude<iostream># in clude<cmath>using n amespace std;int mai n()(int i,n,k;cout?"请输入一个数:"?endl;cin?n;k=sqrt (n);for(i=2;i<=k;i+)if(n %i=0)break;if(i>k)cout?n

10、?"是素数。"?endl;else cout?n?"不是素数。"?endl;return 0;方法2 :#in clude<iostream>#include<cmath> us ing n amespace std; int main() int i,n,m;cout?"请输入一个数:"?endl;cin?n;m=sqrt (n);for(i=2;i<=m;i+) if(n %i=O)break;if(i>m)cout?n?" 是素数。 "?endl;elsecout?n?&q

11、uot; 不是素数。 "?endl;return 0;8 个素数。12 、输出 2-1000 中的素数及个数。且要求每行输出 方法 1 :include <iostream.h>include <math.h>int main()(int n=0, i, j,w,k;for(i=2;i<=2000; i+)w=l;k=sqrt ;for (j=2; j<=k; j+)if (i%j=0)(w=0;break;if (w)(+n;if (n%8=0)cout?i?endl;elsecout?i?")cout?endl;cout?"

12、 个数 n="?n?endl;return 0;方法 2 :include <iostream>include <cmath> using namespace std;int main()(int i,j,n=0; for(i=2;i<2001;i+)( for(j=2;j<=i;j+)if(j=i)cout?i?"n+; if(n%8=0) cout?endl; if(j%j=0) break;) cout?endl;cout?" 个数为 n: "?n?endl; return 0;)13、输入两个整数,求最大公约数

13、和最小公倍数。#include<iostream> using namespace std; int funl(int a,int b); int fun2(int a,int b);int main()(int a,b;cout?" 请输入两个整数: "?endl; cin?a?b;int funl(int a,int b);int fun2(int a,int b);cout?" 最大公约数: "?funl(a zb)?endl;cout?" 最小公倍数: "?fun2(a,b)?endl; return 0;int

14、funl(int a,int b)int mJ;m=a<b?a:b;for(i=m;i>=l;i-) if(a%i=0&&b%i=0) break;return i;int fun2(int a,int b)(int n,j; n=a<b?a:b; for(j=n;j<=a*b;j+) if(j%a=0&&j%b=0) break;return j;14>输入一个非。的一位整数x,输入一个整数n。输岀n位整数xxx?x#include<iostream> #include<cmath> using names

15、pace std;int main()(int m,i,s,x,n,j;cout?" 输入一个整数 x: "?endl;cin?x;cout?" 输入一个整数n: "?endl;cin?n;s=0;for(i=0;i<=n;i+)(j=pow(10,i); s=s+j;)m=x*s;cout?" 结果: "?m?endl;return 0;)15、输入n、a。求sn=a+aa+aaa+a-a其中a是一个非。的一位整数 #include<iostream>#include<cmath> using name

16、space std;int fun(int a,int b);int main()(int n,a,s,i,k;cout?"输入一个整数n : "?endl;cin?n;cout?" 输入一个整数a: "?endl;cin?a;s=0; for(i=0;i<n;i+) k=fun(a,i);s=s+k;cout?"Sn="?s?endl; 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;

17、return m;)16、输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。#include<iostream>#include<cmath>using namespace std;void main()(int x,y,m,n,i,j=l,k=0,a20;cout?" 请输入一个数:cin?m;Y=m;cout?endl;for(i=l;i+)(j*=10;n=m/j;ai=n;k+;if(n<l)break;cout?" 您输入的位数是 : "?k?endl;int b=l,c,d=O;for(i=l;

18、i<=k;i+)b*=10;/cout?b?endl;cout?" 你输入的数字各位分别是: " ;for(i=k;i>0;i-) b=b/10;c=m/b;m=m-c*b;d+=c;cout?c?")cout?endl;/coutvv你输入的数字是” <vk?位数n cout?" 各位上的数字之和为: "?d?endl; x=0;dox=x*10+y%10;y=y/io ;)while(y!=0);cout?" 逆序输出为 : "?x;cout?endl;62+2+3 。求 1000 以内17、一个正整数

19、如果恰好等于它的因子之和,这个数称为“完数”,如 所有的完数,每行 5 个。include <iostream>include <cmath> using namespace std;int main()(int m,i; cout?"1000 以内的完数有: "for(m=l;m<1001;m+) int c=0,n=0; for(i=l;i<m;i+) (if(m%i=O) c=c+i; if (c=m)n+;cout?c?" if(n%5=0)( cout?endl; )cout?endl;return 0;)18、用迭代

20、法求 x=a 的平方根。求平方根的迭代公式为 xn+l=0.5(xn+a/xn) 。要求前后两次 求出 的 x 的差的绝对值小于 le-5 为止。 include <iostream> include <cmath> include <cstdio> using namespace std;int main()(double xl,x2,a,b;x2=0;xl=1.0;b=1.0;cin?a;while(b>=le-5)(x2=(xl+a/xl)/2;b=fabs(x2-xl);xl=x2;)cout?x2?endl;return 0;)19 、用牛顿

21、迭代法求方程在 1.5 附近的根 2x3-4x2+3x-6=0 include <iostream> include <cmath> include <cstdio>using namespace std;int main()(double x=1.5,x0,f,fl;doxO=x; f=2*x0*x0*x0-4*x0*x0+3*x0-6;fl=6*x0*x0-8*x+3; x=xO-f/fl;)while(fabs(x-x0)>=le-5);co u t? "x0=" ?xO?e n d I;return 0;)20、用二分法求上

22、面的方程在 (-10, 10)之间的根include <iostream> using namespace std;double fun(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)/2; if(b-a<=e) return c;else( if(fun(c)=0) return c;else if(fun(a)*fun(c)<0)/b=c; return judge(e,a,c);else/a=c;return judge(

23、e,c,b);)int main()(double e;cout?" 请输入精确度: "<<endl;cin?e; cout?judge(e,-10,10)?endl;return 0;21、打印形状为直角三角形的九九乘法表。#include <iostream>using namespace std;int main()(int ij,k;for(i=l;i<=9;i+)(for(j=l;j<=i;j+)(cout?j?"x"?i<<"="k=i*j;cout?k?"if(i

24、=j)( cout?endl;)return 0;1 担,22 、百马百担问题。有 100 匹马,驮 100 担货,大马驮 3 担,中马驮 2 担,两匹小马驮 问有大中小马多少匹,共有多少组解?include <iostream>using namespace std;int main()(int x,y,z;int m=0;for(x=l;x<100;x+)(for(y=l;y<100;y+)(for(z=l;z<100;z+)if(x+y+z=100)&&(6*x+4*y+z=200)m+;cout?" 种方案。 "?end

25、l;cout?" 大马: H?x?"cout?" 中马: "?y?"cout?" 小马 : "?z?endl;) return 0;)100 是多少?23、数列 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5,问第include <iostream> using namespace std;int main()(for(m=l;m<=i;m+)int i,m,n=0; for(i=l;i<101;i+)n+;if(n=100)cout?" 第 100 个数: "?i

26、?endl;)return 0;() 24、求任意一个整数的十位上的数字 include <iostream> using namespace std;int main()(int m,n,x;cout?" 请输入一个数: cin?m;n=m%10;m=(m-n)/10;x=m%10;cout?endl;cout?" 其十位数为 : "?x?endl; return 0;)25、输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形 include <iostream>using namespace std;int main()(

27、int a,b,c;cout?" 请输入任意三个数:cin?a?b?c; if(a+b)>c&&(a+c)>b&&(b+c)>a&&(a-b)<c&&(a-c)<b&&(b-c)<a)(if(a=b 11 a=c| | b=c)cout? H 是等腰三角形“;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? H 是直角三角形

28、“;else cout?" 是普通三角形”;else coutv ”不可以构成三角形。 "?endl;return 0;)26 、输入任意的 a,b,c 求一元二次方程 ax*x+bx+c=0 的根。 include <iostream>include <cmath> using namespace std;int main()(int a,b,c;cout?" 请输入任意三个数 a,b,c:"?endl;cin?a?b?c;float xl,x2,d;d=sqrt(b*b-4*a*c);if(d>=0)xl=(-b+d)/

29、(2*a);x2=(-b-d)/(2*a);cout?"xl="?xl?endl;cout?"x2="?x2?endl;else coutv< 无”解 "vvendl; return 0;)27 、将百分制成绩转换为五级制成绩include <iostream>using namespace std;int main()(int s;cout?" 请输入分数:cin?s;if(s>100| |s<0)cout? H 输入有误!”; else if(s>0&&s<60) cout

30、?" 不及格”; else if(s>=60&&s<80) cout?" 及格”;else if(s>=80&&s<90) cout?" 良好”; else if(s>=90&&s<=100) cout?" 优秀 return 0;28、输入年月日,判断它是该年的第多少天。include <iostream>using namespace std;int main()(int year,month,day,days=0,i; cout?" 请输入年月

31、日” vvendl;cout?" 请输入年 : ”; cin?year;cout?" 请输入月 :" cin?month;coutvv 请”输入日 : ”;cin?day;?endl;if(year>10000| |year<0| |month<0| |month>13| |day<0| |day>31) cout?"有误!elseif(year%4=0&&year%100=01 |year%400=0)(for(i=l;i<month;i+)if(i=l| |j=3| |j=51 |j=7| |

32、i=8| |i=101 |i=12) days+=31;else if(i=4| |i=6| |i=9| |i=ll) days+=30;else days+=29;)else(for(i=l;i<month;i+)jf(j=l| |i=3| |j=51 |j=7| |i=81 |i=101 |i=12) days+=31;else if(i=4| |i=6| |i=9| |i=ll) days+=30;else days+=28;cout?" 它是该年的第 "?days+day?" 天。 "?endl;return 0;)29 、假定 2007

33、年的一月一日是星期三,求 2009 年的 4 月 20 日是星期几。 include <iostream> using namespace std;long alldays(int yearjnt month,int day);long alldays(int yearjnt month,int day)(int i;long d=0; for(i=l;i<year;i+)if(year%4=0&&year%100=01 |year%400=0) d+=366;elsed+=365;for(i=l;i<month;i+)(if(j=l| |j=3| |i

34、=51 |i=7| |i=8| |i=101 |i=12) d+=31;elseif(i=4| |i=6| |i=9| |i=ll) d+=30;else if(year%4=0&&year%100=01 |year%400=0) d+=29;else d+=28;) return d+day;)int main()(int date,i,d;long x=alldays(2007,l,l) ;long y=alldays(2009,4,20);long z=alldays(2009 z4,20)-alldays(2007,l,l)+l;cout?endl;date=3;cou

35、t?"间隔"?z?"天"coutvvendl;d=z%7; for(i=l;i<=d;i+)date+;) if(date>7)date=date-7;coutvv "星期"<vdate;cout<ve ndl;return 0;) 30、我国古代著名的孙子定理也称韩信点兵。用现代语言讲是:有一个数,用 3 除余 2,用 5 除余 3,用 7 除余 2,求满足条件的最小数。 include <iostream> using namespace std;int main()(int i;for(i=l

36、;i+) if(i%3=2&&i%5=3&&i%7=2) break;else)cout?i?endl; return 0;31 、 求一个整数的各个数位上的数字之和并反序输出 include <iostream> using namespace std;int main()(int ml,m2,j=10,i,d=0,a20;cout?" 请输入任意一个数 "?endl;cin?ml;m2=ml;coutvv “反序输出各位数 '?endl; for(i=l;i+) ml=m2%j; m2=m2/j; ai=ml; cou

37、t?ml?" d+=ml; if(m2<l) break;)cout?endl;cout?" 各位数之和为 "vvdvvendl; return 0;)32 、 求 1+2+3+ 前 n 项的和。include <iostream> using namespace std;int main()(int i,n,s=0;cout?" 请输入一个 n 值: "?endl; cin?n;for(i=l;i<=n;i+)s+=i;cout?" 前 n 项和为 : "?s?endl;return 0;)33、

38、求 1-3+5-7+ 的前 100 项的和方法 1:include <iostream> using namespace std; int main() (int i,n=l,m=3,s,sl=0,s2=0; for(i=l;i<=100;i+)sl+=n; n+=2; for(i=l;i<=50;i+)s2+=m; m+=4; s=sl-2*s2;cout?" 前 100 项和为: "?s?endl; return 0; 方法 2 : #include<iostream.h> void main()(int a=l,b=-l,i,j;i

39、nt m=l,n=l,sum=0; for(i=l;i<=100;i+)a*=b; n=m*a; sum+=n; m+=2;cout?-sum; cout?endl;)的前 n 项的和34、 求 1+ (1+2) + (1+2+3) + (1+2+3+4) + include <iostream> using namespace std; int main()(int i,n,s=0,sl=0; cin?n;for(i=l;i<=n;i+) sl+=i; s+=sl; cout?" 前 n 项和: "?s?endl;)35 、 求 n!include

40、 <iostream> using namespace std; int main() (int i,n; cin?n; for(i=n-l;i>=l;i-)n*=i;)cout?"n! : "?n?endl; return 0;36 、 求 l!+2!+3!+ +n! include <iostream> using namespace std;int main()(int i,n,s=0,m=l; cin?n;for(i=l;i<=n;i+)m*=i; s+=m;cout?"l!+2!+.+"?n?"!=

41、"?s?endl; return 0;)37 、 求 l!-3!+5!-7!+ 前 n 项的和 include <iostream>using namespace std;int main()(int m,n=l,x=l,y=-l,sum=0;double a,b=l,s=0;cin?m;for(int i=l;i<=m;i+)(n=2*i-l;a=l;for(int j=l;j<=n;j+)x*=y;a*=j ;b=a*(-x); sum+=b;cout?sum?" "?endl;return 0;38 、 求 1*2+2*3+3*4+

42、前 n 项的和include <iostream> using namespace std;int main()(int m,i,n,s=O;cin?n; for(i=l;i<=n;i+) m=i*(i+l); s+=m;cout?s?" "?endl;return 0;)39 、 从键盘输入一个整数,判断它是否为素数 include <iostream> using namespace std;int main()(int n,i,m; cin?n;for(i=2;i<n;i+)m=n%i;if(m=0)break;if(m=0)cou

43、t?" 不是素数。 "?endl;elsecout?" 是素数。 "?endl;return 0;)40 、 求 3 到 1000 之间的所有素数的和。include <iostream>include <cmath>using namespace std;int main()int n,i,k,s=O,j=O;for(n=3;n<=1000;n+)k=sqrt(n);for(i=2;i<=k;i+)if(n%i=O)break;if(i>k)(cout?n?"s+=n;j+;if(j%8=0)cout

44、?endl;)cout?endl;cout?"s="?s?endl;return 0;)41 、验证哥德巴赫猜想:一个大于2 的偶数总可以分解成两个素数的和include <iostream> include <cmath> using namespace std;int f(int x);int f(int a)/ 判断是否是素数 (int i,j;j=sqrt(a);for(i=2;i<=j;i+)(if(a%i=0)break;)return 1;elsereturn 0;int n,m,i,k;cout?"请输入一个大于 2偶

45、数:“?endl;cin?m;if(m<2| |m%2!=0)cout?" 输入有误 ! ” v<endl;else(cout?" 偶数 "<<m<< "可以拆成两个素数之和 "?endl;for(i=l;i<=m/2;i+)(n=i;k=m-i;if(f(n)&&f(k)cout?" "?n?" "?k?endl;)42、 设s=l+V2+S+? “ +V求与8最接近的s的值及与之对应的n值。include <iostream>include <cmath>using namespace std;void main()(float i

温馨提示

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

评论

0/150

提交评论