第5章 循环结构程序设计习题解答
更新时间:2024-01-26 14:46:01 阅读量: 教育文库 文档下载
第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 int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { printf(\ putchar(' '); } putchar('\\n'); } } 12.输入一串数字,直到输入一个0为止,统计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负数的平均值(原题有误,误为一串字符)。 #include int a,n=0,m=0,ps=0,ns=0; printf(\ do { scanf(\ if(a>0) { ps+=a; n++; } else if(a<0) { ns+=a; m++; } }while(a!=0); ps/=n; ns/=m; printf(\ printf(\} 13.一个整数等于该数所有因子之和,则称该数是一个完数。例如,6和28都是完数。因为6=1+2+3,28=1+2+4+7+14。输出1000以内的所有完数。 #include int i,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(\ for(j=2;j<=i/2;j++) { if(i%j==0) printf(\ } printf(\ } } } 14.编写程序,按下列公式计算e的值(精度为1.0e-6)。 e?1?1111????? 1!2!3!n! #include void main() { int i=1; long t=1; double e=1.0; do { t*=i; e+=1.0/t; i++; }while(1.0/t>1.0e-6); printf(\} 32 15.用二分法求方程2x-4x+3x=0 在(-10,10)附近的根(二分法:先找到a、b,使f(a)、f(b)异号,说明在区间(a,b)内一定有零点,然后求f((a+b)/2)<0,则在区间((a+b)/2,b)内有零点,按上述方法再求盲从该区间中点的函数值,通过每次把f(x)的零点所在的小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即 是方程的根)。 2 分析:方程可以写为x(2x-4x+3)=0,可以知道0是f(x)的零点,是一个根,另外两个根都 22 是(2x-4x+3)的零点,若x<=0,f(x)= (2x-4x+3)>0,在程序中从0求使f(x)变号的x值。f(0)=3,且二次系数a=2>0,开口向上,没有其它的零点,所以题目是没有其它的解的。 实验5 循环结构程序设计 6.程序填空。 ⑴求出100以内的整数中最大的可被13整除的数是哪一个数。 #include int i; for(i=100;i>0;i--) { if(i==0)break; } printf(\ return 0; } ⑵以下程序用“辗转相除法”来求两个正整数的最大公约数,请填空。 #include int m,n,r; do { printf(\ scanf(\ }while(m<=0||n<=0); do { r=m%n;m=n;n=r; }while(r!=0); printf(\ return 0; } ⑶以下程序打印如下图案,程序运行后输入4给变量n,请填空。 #include int i,j,n; printf(\ scanf(\&n); for(i=1;i<=n;i++) //控制输出前年n行 { for(j=1;j<=10;j++)putchar(S); for(j=1;j<=n-i;j++)putchar(S);//每行的启始空格越来越少 for(j=1;j for(i=1;i<=n-1;i++) //控制输出后n-1行 { for(j=1;j<=10;j++)putchar(S); for(j=1;j<=i;j++)putchar(S); //每行的启始空格越来越多 for(j=1;j<(n-i)*2;j++)putchar('*');//每行的'*'越来越少 putchar('\\n'); } } 注:各星号之间带空格: 程序如下: #include int i,j,n; printf(\ scanf(\ for(i=1;i<=n;i++) //控制输出前n行 { for(j=1;j<=10;j++)putchar(S); for(j=1;j<=n-i;j++){putchar(S);putchar(S);}//每行的启始空格越来越少 for(j=1;j for(i=1;i<=n-1;i++) //控制输出后n-1行 { for(j=1;j<=10;j++)putchar(S); for(j=1;j<=i;j++){putchar(S);putchar(S);}//每行的启始空格越来越多 for(j=1;j<(n-i)*2;j++){putchar('*');putchar(' ');}//每行的'*'越来越少 putchar('\\n'); } } 7.编程。 ⑴求: ?k??k111001002 #include int i,k; long s,s1=0,s2=0; printf(\ scanf(\ for(i=1;i<=100;i++) s1+=k; for(i=1;i<=200;i++) s2+=k*k; s=s1+s2; printf(\ } ⑵从键盘输入一个整数,判断它是否为素数。 #include int m,i,k; short prime; printf(\ scanf(\ prime=1; k=(int)(sqrt(m)); for(i=2;i<=k;i++) if(m%i==0) { prime=0; break; } if(prime) printf(\ else printf(\ return 0; } ⑶求3~150之间的所有素数之和。 #include int i,k,j,s=0,n=0; short prime; for(i=3;i<=150;i+=2) { prime=1; k=(int)(sqrt(i)); for(j=2;j<=k;j++) if(i%j==0) { prime=0; break; } if(prime) { s=s+i; printf(\ n++; if(n==0)putchar('\\n'); } } printf(\~150_prime:%d\\n\ return 0; } ⑷有一个八层灯塔,每层所点灯数都等于上一层的两倍,一共有765盏灯,求塔底灯数。 分析: 设最高层为x盏灯,则: x+2*x+4*x+8*x+16*x+32*x+64*x+128*x=765 x*(1+2+4+8+16+32+64+128)=765 塔底灯数=x*2 #include int x,y,i,n=1,s=0; for(i=1;i<8;i++) { n*=2; s+=n; } x=765/s; y=x*pow(2,7); printf(\ return 0; } ⑸如果要用15个小圆圈排成三角形,三角形的第一行只有一个小圆圈,第二行有两个小圆圈,以此类推。构成有n行的小圆圈的总数=1+2+3+??+n,即为“三角数”。 7 注:用“*”代替小圆圈。 #include int i,j,k,n; printf(\ scanf(\ for(i=1;i<=n;i++) { for(k=1;k<=10;k++)putchar(' '); //每行都先输出10个空格,把图形右移 for(k=0;k ⑹求[1,100]间有奇数个不同因子的整数共有多小个,其中最的是哪一个。 #include int i,j,n,k=1,max=0,m; for(i=1;i<=100;i++) { for(j=1,n=0;j printf(\ if(i>max){max=i;m=n;} k++; } if(k==0){putchar('\\n');k=1;} } putchar('\\n'); printf(\:%d:%d\\n\ return 0; } ⑺已知A>B>C>0, A,B,C为整数,且A+B+C<100,求满足少组。 满足的条件两边同乘ABC可以改写为:BC?AC?AB #include int A,B,C,n=0; for(A=1;A<=100;A++) for(B=1;B<=100;B++) for(C=1;C<=100;C++) if(A+B+C<100 && B*B*C*C+A*A*C*C==A*A*B*B) { n++; printf(\ } printf(\:%d\\n\ return 0; } 222222222111 的A,B,C共有多??222ABC
正在阅读:
第5章 循环结构程序设计习题解答01-26
办公用品领用登记表09-04
3.14国民革命的洪流学案6(北师大版八年级上册)05-05
医院院长任期经济责任审计述职报告材料04-22
侯玉英-机械原理习题集答案10-10
2015四川公务员考试申论备考:名言警句在申论作文中的应用指导07-29
2019届高考地理重要考点练习卷:经纬网和地图 Word版含答案03-10
2012高三生物教学计划03-08
浙江省2016年4月高等教育自学考试05-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 习题
- 程序设计
- 解答
- 循环
- 结构
- 2018年国家公务员考试行测答题技巧:资料分析三大陷阱
- 核电建设社会稳定风险评估管理的路径分析与建议
- 18春华师《电子商务概论》在线作业
- 车轮与轮胎 - 图文
- 尔雅当代中国经济答案
- 自卸汽车司机安全培训试题2
- 《农村合作金融机构信贷资产风险分类指引》-银监发23号
- 2015辽宁省中考化学总复习考点素能检测:第9讲化学方程式+含答案
- 学生课内外阅读一体化的研究
- 实验四 双闭环三相异步电动机调压调速系统
- 八年级数学期末试卷命题意图
- 昭平县三欧宗亲理事会章程
- 汉语言文字学基础2名词解释和简答题部分
- 自动控制理论(答案)(夏德铃)
- 9.2班级公约,我们来定
- 记叙文升格训练 素材积累
- 朱家峪之第一篇村域
- 以思想大解放作风大转变 促进五洞经济社会跨越式发展
- 人事资源管理系统毕业论文
- 航空天气报文详解