C编程基础题训练答案 .doc
《C编程基础题训练答案 .doc》由会员分享,可在线阅读,更多相关《C编程基础题训练答案 .doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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+100#include u
2、sing 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 a,m;float s=0
3、;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;int t=1;int n;f
4、or(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()double sum=0.0; /结果
5、double now=1.0; /现在的1n!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=1; i=n; i+) ex += po
6、w(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 f(int n)in
7、t 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# includeusing 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:#include #includ
8、eusing namespace std; int main() int i,n,m;cout请输入一个数:n;m=sqrt(n);for(i=2;im) coutn是素数。endl; else coutn不是素数。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) +n; if (n
9、%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 std;
10、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;
11、j=a*b;j+) if(j%a=0&j%b=0) break; return j;14、 输入一个非0的一位整数x,输入一个整数n。输出n位整数x x xx。#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+aa,其中a是一个非0的一位整数。#include#includeusing
12、 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 na
13、mespace 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;do x=x*10+y%10; y=y
14、/10;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 std;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C编程基础题训练答案 编程 基础 训练 答案
限制150内