C语言内涵教程练习5参考答案.doc

C语言内涵教程练习5参考答案.doc

ID:50852769

大小:517.00 KB

页数:23页

时间:2020-03-15

C语言内涵教程练习5参考答案.doc_第1页
C语言内涵教程练习5参考答案.doc_第2页
C语言内涵教程练习5参考答案.doc_第3页
C语言内涵教程练习5参考答案.doc_第4页
C语言内涵教程练习5参考答案.doc_第5页
资源描述:

《C语言内涵教程练习5参考答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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,也就是说表达式

2、i>0恒真,但是,计算机中整型构成一个环,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米计算)。(实际上一张纸最

3、多只能对折七次左右)答:5.4编程输出整数n的阶乘。(n!=n*(n-1)*…*2*1)答:与例5-4类似的:0的阶乘等于1,此程序能正确输出吗?for循环结构的程序。还可以用:与前面两个程序相比,少用了一个变量。5.5编程输出一个正整数各位上数字中零的个数。5.6编程输出正整数各位上数字中的最大数。或者(注意体会两者的区别)5.7以小僧的人数为循环变量求解例5-6,要求程序不仅没有逻辑错误而且无解时可以输出“问题没有解!”。答:注意:在用穷举法解决此类问题时要防止因四舍五入而出错的情况。如此题中设大僧每

4、人2个馍,小僧4人一个馍,则问题应该无解,但用例5-6的算法求解时程序却会给出错误的结果。当然了也可以加一个(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){ 

5、  {if(i%2==0)printf("%3d",i);printf("%3d",i);if(i%20==0)if(i%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)的

6、偶数,每行10个。5.12编程输出1-3+5-7+…-99+101的值。注:程序中变量i表示加数的绝对值,变量j表示加的是第几项,j为1时sum加第1项即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、+7+1,153,407等)。5.16编程判断一个正整数各位上数字的乘积是否大于各位上数字之和。5.17分析下面的程序,用Z5z2j3测试并改写为for循环结构#includevoidmain(){intn=0;charc;c=getchar(); while(c!=''){if(c>='0'&&c<='9')++n;c=getchar();}printf("%d",n);}程序用于统计用户输入的一串字符中数字的个数。改写后的程序为:5.18例5-11也可用下面的程序求解,请分析。

8、#includevoidmain(){intf1,f2;inti;f1=f2=1;for(i=1;i<=15;++i){printf("%11d%11d",f2,f1);if(i%2==0)printf("");f2=f1+f2;f1=f2+f1;}}分析过程略。5.19分析下面的程序。1.#include#includevoidmain(){intm,i,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。