1、C编程基础题训练答案1、输入3个数,求最大数。#includeusingnamespacestd;intmain()inta,b,c,max;cout请输入三个数字:abc;max=(ab)a:b;if(cmax)max=c;cout最大值:maxendl;return0;2、韩信点兵:有一个数,用3除余2;用5除余3;用7除余2;求满足条件的最小数。#includeusingnamespacestd;intmain()inta;for(a=1;a1000;a+)if(a%3=2&a%5=3&a%7=2)couta;break;return0;3、求1+2+3+100#includeusing
2、namespacestd;intmain()ints=0;inta=1; do s=s+a;a=a+; while(a101);coutsendl;return0;4、求1-2+3-4+-100#includeusingnamespacestd;intmain() inta,s=0,s1=0,s2=0;for(a=1;a-101;a=a-2)s2=s2+a; s=s1+s2; coutsendl;return0;5、求1+1/2+1/3+1/100#includeusingnamespacestd;voidmain() floata,m; floats=0;for(a=1;a101;a+)m=
3、1/a;s=s+m;couts=sendl;6、求输入n,求n!(需判断n的合法性)递归调用#includeusingnamespacestd;intfac(intn) if(n=0) return1; else returnfac(n-1)*n;intmain()while(1)intx,y,n;coutx;fac(x);coutfac(x)endl;break;return0;7、求1!+2!+3!+10!#includeusingnamespacestd;intmain()ints=0;intt=1;intn;for(n=1;n11;n+)t=t*n;s=s+t;cout1!+2!+3!
4、+.+10!=sendl;return0;8、求1+1/2!+1/3!+1/n!,直到1/n!1E-5为止第一种方法:#includeusingnamespacestd;voidmain()doubles=0;doublet=1;doublen=1;dot=t*n;s=s+1/t;n+;while(t1e5);cout1/1!+1/2!+1/3!+.+1/n!=sendl;第二种方法:#includeusingnamespacestd;voidmain()doublesum=0.0;/结果doublenow=1.0;/现在的1n!doublecnt=2.0;/现在的nwhile(now=1e-
5、5)sum+=now;now/=cnt;cnt+=1.0;coutsumendl;9、用公式求ex=1+x+x2/2!+x3/3!+xn/n!。n取20。#includeusingnamespacestd;intpow(intx,intn);intf1(intn);intmain(intargc,char*argv)intx,n;doubleex=1;cinx;cinn;for(inti=1;i=n;i+)ex+=pow(x,i)/(f1(i)*1.0);coutexendl;system(pause);return0;intf1(intn)ints=1;for(inti=2;i=n;i+)s
6、*=i;returns;intpow(intx,intn)ints=1;for(inti=1;i=n;i+)s*=x;returns;10、假定f1=1,f2=1;fn=fn-1+fn-2。输出前50项的值,且要求每行输出5个值#include#includeusingnamespacestd;intf(intn) intsum;if(n=2)return1;elsesum=f(n-1)+f(n-2);returnsum;coutn;f(n);for(i=1;i=n;i+)coutf(i):f(i);if(i%5=0) coutendl;return0;11、判断一个数是否为素数方法1:#in
7、clude#includeusingnamespacestd;intmain()inti,n,k;cout请输入一个数:n;k=sqrt(n);for(i=2;ik)coutn是素数。endl;elsecoutn不是素数。endl;return0;方法2:#include#includeusingnamespacestd;intmain()inti,n,m;cout请输入一个数:n;m=sqrt(n);for(i=2;im)coutn是素数。endl;elsecoutn不是素数。endl;return0;12、输出2-1000中的素数及个数。且要求每行输出8个素数。方法1:#include#i
8、ncludeintmain() intn=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) +n; if(n%8=0) coutiendl; else couti; coutendl; cout个数n=nendl; return0;方法2:#include#includeusingnamespacestd;intmain()inti,j,n=0;for(i=2;i2001;i+)for(j=2;j=i;j+)if(j=i) couti;n+;if(n%8=0) co
9、utendl; if(i%j=0) break;coutendl;cout个数为n:nendl;return0;13、输入两个整数,求最大公约数和最小公倍数。#includeusingnamespacestd;intfun1(inta,intb);intfun2(inta,intb);intmain()inta,b; cout请输入两个整数:ab; intfun1(inta,intb); intfun2(inta,intb);cout最大公约数:fun1(a,b)endl; cout最小公倍数:fun2(a,b)endl; return0;intfun1(inta,intb)intm,i;m=
10、a=1;i-)if(a%i=0&b%i=0)break;returni;intfun2(inta,intb)intn,j;n=aba:b;for(j=n;j=a*b;j+)if(j%a=0&j%b=0)break;returnj;14、输入一个非0的一位整数x,输入一个整数n。输出n位整数xxxx。#include#includeusingnamespacestd;intmain() intm,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;
11、return0;15、输入n、a。求sn=a+aa+aaa+aa,其中a是一个非0的一位整数。#include#includeusingnamespacestd;intfun(inta,intb);intmain() intn,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; return0;intfun(inta,intb)intm,i,s,j; s=0; for(i=0;i=b;i+) j=pow(10,i); s=s+j; m=a*s;returnm;16、
12、输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。#include#includeusingnamespacestd;voidmain() intx,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;intb=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
13、;cout各位上的数字之和为:dendl;x=0;dox=x*10+y%10;y=y/10;while(y!=0);cout逆序输出为:x;coutendl;17、一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3。求1000以内所有的完数,每行5个。#include#includeusingnamespacestd;intmain()intm,i;cout1000以内的完数有:;for(m=1;m1001;m+)intc=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
14、; coutendl;return0;18、用迭代法求x=a的平方根。求平方根的迭代公式为xn+1=0.5(xn+a/xn)。要求前后两次求出的x的差的绝对值小于1e-5为止。#include#include#includeusingnamespacestd;intmain()doublex1,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;return0;19、用牛顿迭代法求方程在1.5附近的根2x3-4x2+3x-6=0#include#include#incl
15、udeusingnamespacestd;intmain()doublex=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;return0;20、用二分法求上面的方程在(-10,10)之间的根#includeusingnamespacestd;doublefun(doublex)return2*x*x*x-4*x*x+3*x-6;doublejudge(doublee,doublea,doubleb) doublec
16、; c=(a+b)/2; if(b-a=e)returnc; else if(fun(c)=0) returnc; elseif(fun(a)*fun(c)0) /b=c; returnjudge(e,a,c); else /a=c; returnjudge(e,c,b); intmain() doublee;cout请输入精确度:e;coutjudge(e,-10,10)endl;return0;21、打印形状为直角三角形的九九乘法表。#includeusingnamespacestd;intmain()inti,j,k;for(i=1;i=9;i+)for(j=1;j=i;j+)coutj
17、xi=;k=i*j;coutk;if(i=j) coutendl; return0;22、百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大中小马多少匹,共有多少组解?#includeusingnamespacestd;intmain()intx,y,z;intm=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小马:zendl; return0;23、数列1,2,2
18、,3,3,3,4,4,4,4,5,问第100是多少?#includeusingnamespacestd;intmain()inti,m,n=0;for(i=1;i101;i+) for(m=1;m=i;m+) n+; if(n=100) cout第100个数:iendl;return0;24、求任意一个整数的十位上的数字。#includeusingnamespacestd;intmain()intm,n,x;coutm;n=m%10;m=(m-n)/10;x=m%10;coutendl;cout其十位数为:xendl;return0;25、输入三个实数,判断能否构成三角形;若能,再说明是何种类
19、型的三角形。#includeusingnamespacestd;intmain()inta,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是等腰三角形; elseif(a=b&a=c) cout是等边三角形; elseif(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a) cout是直角三角形; elsecout是普通三角形;elsecout不可以构成三角形。endl;return0;26、输入任意的a,b,c求一元二次方程ax*x+bx+c=0的根。#inclu
20、de#includeusingnamespacestd;intmain()inta,b,c;cout请输入任意三个数a,b,c:abc;floatx1,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; elsecout无解endl;return0;27、将百分制成绩转换为五级制成绩#includeusingnamespacestd;intmain() ints;couts; if(s100|s0) cout0&s60) cout=60&s80) cout=
21、80&s90) cout=90&s=100) cout优秀;return0;28、输入年月日,判断它是该年的第多少天。#includeusingnamespacestd;intmain()intyear,month,day,days=0,i;cout请输入年月日endl;coutyear;coutmonth;coutday;if(year10000|year0|month13|day31) cout有误!endl;else if(year%4=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
22、) days+=31; elseif(i=4|i=6|i=9|i=11) days+=30; else days+=29; else for(i=1;imonth;i+) if(i=1|i=3|i=5|i=7|i=8|i=10|i=12) days+=31; elseif(i=4|i=6|i=9|i=11) days+=30; else days+=28; cout它是该年的第days+day天。endl;return0;29、假定2007年的一月一日是星期三,求2009年的4月20日是星期几。#includeusingnamespacestd;longalldays(intyear,intmonth,intday);longalldays(intyear,intmont
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1