第5章 循环结构程序设计习题解答.docx
- 文档编号:2871977
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:19
- 大小:46.67KB
第5章 循环结构程序设计习题解答.docx
《第5章 循环结构程序设计习题解答.docx》由会员分享,可在线阅读,更多相关《第5章 循环结构程序设计习题解答.docx(19页珍藏版)》请在冰豆网上搜索。
第5章循环结构程序设计习题解答
第5章循环结构程序设计习题解答
1.输入n个整数,求这n个数之中的偶数平均值,并输出。
#include
voidmain()
{
intn,i,x,k=0,s=0;
printf("Inputanumber(n):
");
scanf("%d",&n);
printf("Input%dnumbers:
",n);
for(i=0;i { scanf("%d",&x); if(x%2==0){s+=x;k++;} } s/=k; printf("average=%d\n",s); } 2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。 #include voidmain() { intn=0,m=0; charc; printf("Inputastringcharacter: "); do { scanf("%c",&c); if(c>='0'&&c<='9') n++; elseif(c>='A'&&c<='Z'||c>='a'&&c<='z') m++; }while(c! ='*'); printf("number_char=%d\n",n); printf("letter_char=%d\n",m); } 3.从键盘输入一正整数n,计算该数各位数字之和并输出。 例如,输入数是5246,则计算5+2+4+6=17并输出。 #include voidmain() { intn,r,m=0,s=0; printf("Inputanumber(int): "); scanf("%d",&n); do { r=n%10; s=s+r; n/=10; if(m==0) printf("%d",r);//加式中的第1项不带“+” else printf("+%d",r); m++; }while(n>0); printf("=%d\n",s); } 4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。 #include voidmain() { charc; printf("Inputastringcharacter('*'end): "); do { scanf("%c",&c); if(c>='A'&&c<='Z') c+=32; elseif(c>='a'&&c<='z') c-=32; printf("%c",c); }while(c! ='*'); putchar('\n'); } 注: 可以使用逐位异或运算^,实现大小字母变为小写字母,小写字母变为大写字母: #include voidmain() { charc; printf("Inputastringcharacter('*'end): "); do { scanf("%c",&c); if(c>='A'&&c<='Z'||c>='a'&&c<='z') c^=0x20;//大、小写转换 printf("%c",c); }while(c! ='*'); putchar('\n'); } 5.设某县2000年工业总产值为200亿元,如果该预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值超过500亿元? #include voidmain() { doublex=200; inti; for(i=0;x<=500;i++) x*=(1+0.045); printf("%dyeares%f\n",i,x); } 6.输出1~999中能被3整除,而且至少有一位数字是5的所有数字。 #include voidmain() { inti,a1,a2,a3,m,n=0; for(i=1;i<1000;i++) { a1=i%10,m=i/10; a2=m%10,m=m/10; a3=m%10,m=m/10; if(i%3==0&&(a1==5||a2==5||a3==5)) { printf("%4d",i); n++; if(n==10) { putchar('\n'); n=0; } } } putchar('\n'); } 7.求爱因斯坦数学题。 有一条长阶,若每步跨2阶,则最后剩1价;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6价,则最后剩5阶;若每步跨7阶,最后正好一阶不剩。 求该长阶有多少级台阶。 为了方便编程,设长阶的级数不超过1000级。 #include voidmain() { inti; for(i=7;i<1000;i++) if(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) printf("%d\n",i); } 8.输入一个3位数,判断是不是一个水仙花数。 水仙花数是指3个数的各位数字的立方和等于这个3位数本身。 例如,153=1*1*1+5*5*5+3*3*3。 #include voidmain() { inti,k,s=0,a,r; for(i=100;i<1000;i++) { a=i; for(k=0;k<3;k++) { r=a%10; s=s+r*r*r; a=a/10; } if(s==i) printf("%d\n",i); s=0; } } 9.计算斐波那契分数序列前n项之和(n是某个常数,斐波那契分数列为 )。 分析: 从已知的各项可以得到一个递推关系: #include voidmain() { inti,n; floatx=2,s=0; printf("Inputanumber(n): "); scanf("%d",&n); for(i=2;i<=n;i++) { x=1+1/x; s=s+x; } printf("s=%f\n",s); } 10.输入一个正整数,各输出n行的正(倒)三角宝塔图案。 正三角宝塔图: #include voidmain() { inti,j,n; printf("Inputanumbern(>3): "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=n-i;j>0;j--) putchar('');//输出空格 for(j=1;j<=i*2-1;j++) printf("*");//输出"*" putchar('\n');//换行 } } 倒三角宝塔图: #include voidmain() { inti,j,n; printf("Inputanumbern(>3): "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=i;j>0;j--) putchar('');//输出空格 for(j=1;j<=2*n-2*i+1;j++) printf("*");//输出"*" putchar('\n');//换行 } } 11.输出九九表。 #include voidmain() { inti,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf("%d*%d=%d",i,j,i*j); putchar(''); } putchar('\n'); } } 12.输入一串数字,直到输入一个0为止,统计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负数的平均值(原题有误,误为一串字符)。 #include voidmain() { inta,n=0,m=0,ps=0,ns=0; printf("Inputnumber(0end): "); do { scanf("%d",&a); if(a>0) { ps+=a; n++; } elseif(a<0) { ns+=a; m++; } }while(a! =0); ps/=n; ns/=m; printf("Positiveintegernumber=%d,average=%d\n",n,ps); printf("Negativeintegernumber=%d,average=%d\n",m,ns); } 13.一个整数等于该数所有因子之和,则称该数是一个完数。 例如,6和28都是完数。 因为6=1+2+3,28=1+2+4+7+14。 输出1000以内的所有完数。 #include voidmain() { inti,j,s; for(i=1;i<1000;i++) { s=1; for(j=2;j<=i/2;j++) { if(i%j==0) s+=j; } if(s==i)//是完数输出各因数 { printf("%d=",i); for(j=2;j<=i/2;j++) { if(i%j==0) printf("%d+",j); } printf("%d\n",1); } } } 14.编写程序,按下列公式计算e的值(精度为1.0e-6)。 #include voidmain() { inti=1; longt=1; doublee=1.0; do { t*=i; e+=1.0/t; i++; }while(1.0/t>1.0e-6); printf("e=%1.6lf\n",e); } 15.用二分法求方程2x3-4x2+3x=0在(-10,10)附近的根(二分法: 先找到a、b,使f(a)、f(b)异号,说明在区间(a,b)内一定有零点,然后求f((a+b)/2)<0,则在区间((a+b)/2,b)内有零点,按上述方法再求盲从该区间中点的函数值,通过每次把f(x)的零点所在的小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。 分析: 方程可以写为x(2x2-4x+3)=0,可以知道0是f(x)的零点,是一个根,另外两个根都是(2x2-4x+3)的零点,若x<=0,f(x)=(2x2-4x+3)>0,在程序中从0求使f(x)变号的x值。 f(0)=3,且二次系数a=2>0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 循环结构程序设计习题解答 循环 结构 程序设计 习题 解答