c++ 编程初学者练习题以及解析代码.doc
《c++ 编程初学者练习题以及解析代码.doc》由会员分享,可在线阅读,更多相关《c++ 编程初学者练习题以及解析代码.doc(40页珍藏版)》请在三一文库上搜索。
1、程序设计基本功练习题输入3个数,求最大数。将百分制成绩转换成五级制成绩。(分别用if、嵌套、switch完成)韩信点兵:有一个数,用3除余2;用5除余3;用7除余2;求满足条件的最小数。求1+2+3+100求1-2+3-4+-100求1+1/2+1/3+1/100求输入n,求n!(需判断n的合法性)求1!+2!+3!+10!求1+1/2!+1/3!+1/n!,直到1/n!1E-5为止用公式求ex=1+x+x2/2!+x3/3!+xn/n!。n取20。假定f1=1,f2=1;fn=fn-1+fn-2。输出前50项的值,且要求每行输出5个值。判断一个数是否为素数输出2-1000中的素数及个数。且要
2、求每行输出8个素数。输入两个整数,求最大公约数和最小公倍数。输入一个非0的一位整数x,输入一个整数n。输出n位整数x x xx。输入n、a。求sn=a+aa+aaa+aa,其中a是一个非0的一位整数。输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3。求1000以内所有的完数,每行5个。用迭代法求x=a的平方根。求平方根的迭代公式为xn+1=0.5(xn+a/xn) 。要求前后两次求出的x的差的绝对值小于1e-5为止。用牛顿迭代法求方程在1.5附近的根 2x3-4x2+3x-6=0用二分法求上面
3、的方程在(-10,10)之间的根。打印形状为直角三角形的九九乘法表。百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大中小马多少匹,共有多少组解?数列1,2,2,3,3,3,4,4,4,4,5,问第100是多少?*1.3求任意一个整数的十位上的数字。1.4 输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形。1.5输入任意的a,b,c求一元二次方程ax*x+bx+c=0的根。*1.6 将百分制成绩转换为五级制成绩1.7 输入年月日,判断它是该年的第多少天。*1.8 假定2007年的一月一日是星期三,求2009年的4月20日是星期几。1.9 我
4、国古代著名的孙子定理也称韩信点兵。用现代语言讲是:有一个数,用3除余2,用5除余3,用7除余2,求满足条件的最小数。*2.1 求一个整数的各个数位上的数字之和并反序输出。2.2 求1+2+3+前n项的和。*2.3 求1-3+5-7+的前100项的和。2.4 求1+(1+2)+(1+2+3)+(1+2+3+4)+的前n项的和*2.5 求n!2.6 求1!+2!+3!+n!2.7 求1!-3!+5!-7!+前n项的和*2.8 求1*2+2*3+3*4+前n项的和*2.9 从键盘输入一个整数,判断它是否为素数2.10求3到1000之间的所有素数的和。2.11验证哥德巴赫猜想:一个大于2的偶数总可以分
5、解成两个素数的和。*2.12设s=1+1/2+1/3+1/n,求与8最接近的s的值及与之对应的n值。2.13假定2007年的一月一日是星期三,打印出该年的日历(仿照台历或挂历样式)3.1鸡兔同笼一共有40只脚,求鸡兔各有多少只,总共有多少种组合。*3.2换零钱.把一元钱全兑换成硬币(1分2分5分),有多少种兑换方法/*/输入3个数,求最大数。#includevoid main()int a,b,c,max;coutabc;if(ab) max=a;else if(bc) max=b; else max=c; couta b c 三个数中 max 最大!n; */*/将百分制成绩转换成五级制成绩
6、。(分别用if、嵌套、switch完成)#includevoid main()while(1)float score;coutscore;if(score100) cout输入有误n90) cout优n80) cout70) cout=60) cout及格n; else cout不及格,要努力!n; coutendl; */*/韩信点兵:有一个数,用3除余2;用5除余3;用7除余2;求满足条件的最小数。#includevoid main()int x,a;for(x=0;x100;x+) if (x%3=2)&(x%5=3)&(x%7=2) coutx; coutendl; break; */
7、*/求1+2+3+100#includevoid main()int x,sum=0;for(x=1;x=100;x+) sum+=x;coutsum;coutendl;*/另一种方法/*#includevoid main()int sum;sum=(1+100)*(100/2);coutsumendl;*/*/求1-2+3-4+-100#includevoid main()int x,sum=0,sum1=0,sum2=0;for(x=1;x=-100;x-,x-) sum2+=x;sum=sum1+sum2;cout1+3+5+98=sum1endl;/正数之和cout-2-4-6-100
8、=sum2endl;/负数之和cout1-2+3-4-100=sum;/总和coutendl;*/*/求1+1/2+1/3+1/100#includevoid main()float n,m,sum=0;for(n=1;n=100;n+) m=1/n; cout1/n=ttmendl; sum+=m; cout1/1+1/n=tsumendl;cout*n;cout1/1+1/100=tsumendl;*/*/求输入n,求n!(需判断n的合法性)#includelong fact(int n)/例用递归调用求n的阶乘。if(n=0) return 1;return fact(n-1)*n;vo
9、id main()while(1)int x,y,n;coutx;fact(x);coutfact(x); */*/求1!+2!+3!+10!#includelong double fact(int n)if(n=0) return 1;return fact(n-1)*n;void main()int x,y,sum=0;for(x=1;x=10;x+) fact(x); y=fact(x); sum+=y; coutx!=yendl; cout1!+2!+10!=sumendl;*/ /*/求1+1/2!+1/3!+1/n!,直到1/n!1E-5为止#includelong double
10、fact(int n)if(n=0) return 1;return fact(n-1)*n;void main()while(1)long double x,y,m,n,sum1=0,sum2=0;/x控制循环,y接收阶乘值,m接收1/n!值,n待求阶乘的数, /sum1接收阶乘之和,sum2接收阶乘分之一的和。coutn;for(x=1;x=n;x+) fact(x); y=fact(x); m=1/y; coutx!=tyt*t; cout1/x!=tmendl; sum1+=y; sum2+=m; coutendl;cout*n;cout1!+n!=tsum1endl;cout1/1!
11、+1/n!=tsum2endl;cout*n; cout*nn; /if(m1E-5)break;/控制结束。/若将此句移动for()语句前呢?*/*/用公式求ex=1+x+x2/2!+x3/3!+xn/n!。n取20。 */*/假定f1=1,f2=1;fn=f(n-1)+f(n-2)。输出前50项的值,且要求每行输出5个值。/此程序运算速度非常慢,效率太低,应想法改进。#includelong fibo(int n);void main()int a;long f;cina;/用a来接受50的输入。int n;for (n=1;n=a;n+) fibo(n); f=fibo(n); cout
12、f(n)= f ; if (n%5=0) coutendl; long fibo(int n)if(n=1) return 1;else if(n=2) return 1;else return fibo(n-1)+fibo(n-2);*/*/判断一个数是否为素数。#include#includevoid main()while(1) int m,i,k; coutm; k=sqrt(m); for(i=2;ik) coutm是一个素数n*n; else coutm不是一个素数n*n;*/*/输出2-1000中的素数及个数。且要求每行输出8个素数。#include#includevoid ma
13、in()while(1) int m,n,i,j=0,k; coutm; cout1到m之间的素数有:n; for(n=1;n=m;n+) k=sqrt(n); for(i=2;ik) coutnt; j+; if (j%8=0)coutendl; coutendl; cout一共有; coutj; cout个。n*n; */*/输入两个整数,求最大公约数和最小公倍数。#includevoid main()int x,y,a,b;coutxy;for(a=x;a0;a-)/通过循环求最大公约数。 if ( (x%a=0)&(y%a=0) coutx和y的最大公约数是:t; couta; cou
14、tendl; b=(x*y)/a; /两数的最小公倍数等于两数的乘积除以两数的最大公约数。 coutx和y的最小公倍数是:t; coutbendl; break; */*/输入一个非0的/ 一位 /整数x,输入一个整数n。输出n位整数x x xx。#includevoid main()while(1) int m,n=0,i,j=1; coutm;if(m=10) cout输入有误n; else for(i=1;i=m;i+) n+=m*j; j*=10; coutnendl; */*/输入n、a。求sn=a+aa+aaa+aa,其中a是一个非0的一位整数。#includevoid main(
15、)while(1)int n,a,i,j=0,k=1,sn=0;couta;coutn;for(i=1;i=n;i+) j+=k*a; k*=10; sn+=j;coutsn;coutendl;*/*/输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。#includevoid main()int m,n,i,j=1,k=0,a20,x,y;coutm;y=m;for(i=1;i+) j*=10; n=m/j; ai=n; k+; if(n1) break; int b=1,c,d=0;for(i=1;i=k;i+) b*=10; /coutbendl; cout0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 编程初学者练习题以及解析代码 编程 初学者 练习题 以及 解析 代码
链接地址:https://www.31doc.com/p-3257773.html