资源描述:
《c语言内涵教程练习5参考答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、练习55.1计算循环体的执行次数并上机验证。1.inti=0;2.shorti=1;while(1)while(i>0){{++i;++i;printf("%d",i);printf("%d",i);}}3.shorti=1;4.charc='a';while(i*i>=0)while(c>=0){{++i;--c;printf("d",i);printf("%c",c)}}答:1.表达式1恒真,因此循环体会执行无数次。2.在数学上,变量i的初值为1,每次自增1后会一直大于0,也就是说表达式i>0恒真,但是,计算机中整型
2、构成一个环,short型变量的取值范围为-32768~32767,当变量i的值自增到32767后再加1就变成了-32768,表达式i〉0为假,循环退出,因此循环体执行了32767次。3.表达式i*i>=0恒真,因此循环体会执行无数次。4.字符型变量c的值为97号字符’a’,因此从97至0,循环体共执行了98次。5.2画出例5-4的程序流程图。5.3对折一张厚1毫米的纸,每折一次,纸的厚度就翻一倍,理论上折多少次后厚度可以达到珠穆朗玛峰的高度(按8848米计算)。(实际上一张纸最多只能对折七次左右)答:5.4编程输出整数n的阶乘。(n!=
3、n*(n-1)*…*2*1)答:与例5-4类似的:0的阶乘等于1,此程序能正确输出吗?for循环结构的程序。还可以用:与前面两个程序相比,少用了一个变量。5.5编程输出一个正整数各位上数字中零的个数。5.6编程输出正整数各位上数字中的最大数。或者(注意体会两者的区别)5.7以小僧的人数为循环变量求解例5-6,要求程序不仅没有逻辑错误而且无解时可以输出“问题没有解!”。答:注意:在用穷举法解决此类问题时要防止因四舍五入而出错的情况。如此题中设大僧每人2个馍,小僧4人一个馍,则问题应该无解,但用例5-6的算法求解时程序却会给出错误的结果。
4、当然了也可以加一个(100-i)%3==0的条件来防止类似的错误。5.8鸡兔同在一个笼子里,从上面数有35个头,从下面数有94只脚。求笼中各有几只鸡和兔。或:5.9编程输出正整数n的所有因数。或:5.10有508个西瓜,第一天卖了一半多2个,以后每天卖剩下的一半多2个,问几天后能卖完?答:考虑无解的情况:5.11分析下面循环的作用。.1.for(i=1;i<100;++i)2.for(i=2;i<100;i+=2){ {if(i%2==0)printf("%3d",i);printf("%3d",i);if(i%20==0)if(i
5、%20==0)printf("");printf("");}}3.for(i=1;i<100;++i)4.for(i=1,j=1;i+j<100;++i,++j){{++i;printf("%3d",i+j);printf("%3d",i);if((i+j)%20==0)if(i%20==0)printf("");printf("");}}答:输出100以内(不含100)的偶数,每行10个。5.12编程输出1-3+5-7+…-99+101的值。注:程序中变量i表示加数的绝对值,变量j表示加的是第几项,j为1时sum加第1
6、项即1,j为2时sum加第2项即-3。或:或:或:5.13编程输出2000年至2100年间的闫年。5.14编程判断一个正整数是否为完全数。一个数如果恰好等于它的因数(自身除外)之和,则称该数为完全数(如6=1+2+3,28等)。5.15编程判断一个三位正整数是否为“水仙花数”。水仙花数是指一个n位数(n3),它每位上的数字的n次幂之和等于它本身(例如371=3+7+1,153,407等)。5.16编程判断一个正整数各位上数字的乘积是否大于各位上数字之和。5.17分析下面的程序,用Z5z2j3测试并改写为for循环结构#include
7、tdio.h>voidmain(){intn=0;charc;c=getchar(); while(c!=''){if(c>='0'&&c<='9')++n;c=getchar();}printf("%d",n);}程序用于统计用户输入的一串字符中数字的个数。改写后的程序为:5.18例5-11也可用下面的程序求解,请分析。#includevoidmain(){intf1,f2;inti;f1=f2=1;for(i=1;i<=15;++i){printf("%11d%11d",f2,f1);if(i%2==0)p
8、rintf("");f2=f1+f2;f1=f2+f1;}}分析过程略。5.19分析下面的程序。1.#include#includevoidmain(){intm,i,