第5章 循环结构程序设计习题解答
1.输入n个整数,求这n个数之中的偶数平均值,并输出。 #include
int n,i,x,k=0,s=0;
printf(\ scanf(\
printf(\ for(i=0;i scanf(\ if(x%2==0){s+=x;k++;} } s/=k; printf(\} 2.输入一串字符,直到输入一个星号*为止,统计(输出)其中字母个数和数字字符个数。 #include int n=0,m=0; char c; printf(\ do { scanf(\ if(c>='0'&&c<='9') n++; else if(c>='A'&&c<='Z'||c>='a'&&c<='z') m++; }while(c!='*'); printf(\ printf(\} 3.从键盘输入一正整数n,计算该数各位数字之和并输出。例如,输入数是5246,则计算5+2+4+6=17并输出。 #include int n,r,m=0,s=0; printf(\ scanf(\ do { r=n; s=s+r; n/=10; if(m==0) printf(\加式中的第1项不带“+” else printf(\ m++; }while(n>0); printf(\ } 4.输入一个字符串,将其中的大写字母改为小写字母,小写字母改为大写字母,然后输出。 #include char c; printf(\ do { scanf(\ if(c>='A'&&c<='Z') c+=32; else if(c>='a'&&c<='z') c-=32; printf(\ }while(c!='*'); putchar('\\n'); } 注:可以使用逐位异或运算^,实现大小字母变为小写字母,小写字母变为大写字母: #include char c; printf(\ do { scanf(\ if(c>='A'&&c<='Z' || c>='a'&&c<='z') c^=0x20; //大、小写转换 printf(\ }while(c!='*'); putchar('\\n'); } 5.设某县2000年工业总产值为200亿元,如果该预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值超过500亿元? #include double x=200; int i; for(i=0;x<=500;i++) x*=(1+0.045); printf(\} 6.输出1~999中能被3整除,而且至少有一位数字是5的所有数字。 #include int i,a1,a2,a3,m,n=0; for(i=1;i<1000;i++) { a1=i,m=i/10; a2=m,m=m/10; a3=m,m=m/10; if(i%3==0 && (a1==5 || a2==5 || a3==5)) { printf(\ n++; if(n==10) { putchar('\\n'); n=0; } } } putchar('\\n'); } 7.求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩1价;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6价,则最后剩5阶;若每步跨7阶,最后正好一阶不剩。求该长阶有多少级台阶。 为了方便编程,设长阶的级数不超过1000级。 #include void main() { int i; for(i=7;i<1000;i++) if(i%2==1 && i%3==2 && i%5==4 && i%6==5 && i%7==0) printf(\} 8.输入一个3位数,判断是不是一个水仙花数。水仙花数是指3个数的各位数字的立方和等于这个3位数本身。例如,153=1*1*1+5*5*5+3*3*3。 #include int i,k,s=0,a,r; for(i=100;i<1000;i++) { a=i; for(k=0;k<3;k++) { r=a; s=s+r*r*r; a=a/10; } if(s==i) printf(\ s=0; } } 9.计算斐波那契分数序列前n项之和(n是某个常数,斐波那契分数列为分析:从已知的各项可以得到一个递推关系: xn?1?1?2358。 ,,,?) 12351 xn#include int i,n; float x=2,s=0; printf(\ scanf(\ for(i=2;i<=n;i++) { x=1+1/x; s=s+x; } printf(\} 10.输入一个正整数,各输出n行的正(倒)三角宝塔图案。 正三角宝塔图: #include int i,j,n; printf(\ scanf(\ 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 int i,j,n; printf(\ scanf(\ 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