ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:31KB ,
资源ID:20105469      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20105469.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第04章习题解答.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第04章习题解答.docx

1、第04章习题解答4.5习题4.5.1 概念题1.例4-3程序中B行的if语句的控制式理应是(d0),为什么可以用(d)?答:在if(d=0)的条件下,d值只有d0或d=0两种可能。即d非0或d为0。这种情况,根据“0为0,非0为1”的逻辑值确定规则,在后续的if语句中,可分别用(d)或(!d)作为控制式,进行流程控制。2.例4-7中,设置初值s为0,n为1,行不行?s为1,n为0,行不行?答:设置初值s必须为0,n为0或为1都行。3.试说明下列for语句的执行步骤和过程:for(初值式;控制式;修正式) 语句S答:(见第四章4.3.4小节,图4.26(B))4.试问下列程序会输出什么结果?fo

2、r语句的函数体是什么?#includeusing namespace std;int main() char *p=Output; for(int i=0;*p;i+,p+) ; couti=iendl; return 0;答:输出结果为:i=6。for语句的函数体为空,什么也不干。5.试分析下面的程序,看看会输出什么结果?若一时看不出来,可用表格一步步分析其循环过程。#includeusing namespace std;int main() char *p=Welcome!; for(int j=1;*p;j+) cout*p+; coutendl; p-; j-; for(;j;j-)

3、cout*p-; coutendl; return 0;答:输出结果为:Welcome!emocleW6.试问下列程序会输出什么结果?#includeusing namespace std;int main() int i,j; for(i=0;i8;i+) for(j=0;j7-i;j+) cout ; for(j=0;j2*i+1;j+) if(j%2=0) cout ; else cout#; coutendl; return 0;答:输出结果如图4.36所示。7.程序如下。输出结果如何?#include#includeusing namespace std;int main() int

4、 i,j; cout*; for(j=1;j=9;j+) coutsetw(4)j; coutendl; for(i=1;i=9;i+) couti; for(j=1;j=i;j+) coutsetw(4)i*j; coutendl; return 0;答:输出结果如下:* 1 2 3 4 5 6 7 8 91 12 2 43 3 6 94 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 814.5.2程序设计题1.试设

5、计一程序。输入x值,由下列代数式求出y值,输出x值和y值。x3.6时 y=1.6x-2.5 x3.6时 y=8.8x+18.2 (注意:代数式中的运算符与C+程序中的运算符有所不同,在程序设计时要作适当变换。)#includeusing namespace std;int main() double x,y; cout请输入一实数。x; if(x=3.6) y=1.6*x-2.5; else y=8.8*x+18.2; coutx=x y=yendl; return 0;2.试设计一程序,输入一整数,能判别出此整数是正还是负,是奇还是偶,并输出表明判别结果。#includeusing name

6、space std;int main() int n; cout请输入一整数。n; if(n0) if(n%2=0) cout这是一个正偶数。endl; else cout这是一个正奇数。endl; else if(n%2=0) cout这是一个负偶数。endl; else cout这是一个负奇数。endl; return 0;3.某运输公司对所运的物品分段进行计费。运输距离s 越大,,则折扣d越大。距离s与折扣d的关系如表4-8所示。设每公里每吨的基本运费为p,货物重量为w,折扣为d%,则总运费f按下式计算:f=p*w*s*(1-d/100.0)试设计一程序,当输入p、w、s后,能输出其总运

7、费。#includeusing namespace std;表4-8运输距离与折扣的关系运输距离s折扣d%s2500%250s5002%500s10005%1000s20008%2000s300010%s300015%int main() int s; double p,w,d,f; cout请输入每公里每吨的基本运费p、货物重量w。pw; cout请输入运输距离s(整数)。s; switch(s/250) case 0: d=0; break; case 1: d=2; break; case 2: case 3: d=5; break; case 4: case 5: case 6: ca

8、se 7: d=8; break; case 8: case 9: case 10: case 11: d=10; break; case 12: default: d=15; break; f=p*w*s*(1-d/100.0); cout总运费为:fendl; return 0;4.试设计一程序,对两整数作一个四则算术运算。程序中依次输入左操作数a、运算符oprt和右操作数b。运算符oprt是如下四个字符中的一个: + - * /用以表明运算是加、减、乘或除。根据所输入的oprt的字符值对两操作数a和b作相应的加、减、乘或除的运算,最后输出运算结果。#includeusing namesp

9、ace std;int main() double a,b; char oprt; cout请依次输入左操作数、运算符(+、-、* 或/)、右操作数。aoprtb; switch(oprt) case +: couta+b=a+b; break; case -: couta-b=a-b; break; case *: couta*b=a*b; break; case /: couta/b=a/b; break; default:cout运算符错!; break; coutendl; return 0;5.试设计一程序。按下式计算t值。输出之。t=1*2*3*10#includeusing na

10、mespace std;int main() int n=1,t=1; while(n=10) t*=n+; coutt=tendl; return 0;6.试设计一程序。输入一整数n,能按下式计算s,并输出计算结果。s=1+#includeusing namespace std;int main() int n,i=1; double s=0; cout请输入一个整数。n; while(i=n) s+=1.0/i; i+; couts=sendl; return 0;7.试设计一程序,求下面的无穷级数S。S=忽略比1E-7小的项。#includeusing namespace std;int

11、 main() int n=1; double m,s=0; m=1.0/(n*(n+1); while(m=1E-7) s+=m; n+; m=1.0/(n*(n+1); couts=sendl; return 0;8.试设计一程序。输入一整数n的值,按下式求出y的值,并输出n和y的值。y=1!+2!+3!+n!。#includeusing namespace std;int main() int m=1,i=1,y=0,n; cout请输入一整数。n; while(i=n) m*=i; y+=m; i+; coutn=nendl; couty=yendl; return 0;9.已知一数列

12、的开始头三项依次为0、1、2,从第四项开始的每一项均为其前三项之和。试设计一程序,求该数列的前18项。#includeusing namespace std;int main() int x=0,y=1,z=2,i=1; while(i=6) coutxt yt zt; x+=y+z; y+=z+x; z+=x+y; if(i%3=0) coutendl; i+; return 0;10. 试设计一程序,从键盘输入若干个整数,以输入0为结束。分别统计出正数的个数和负数的个数,并求出正数之和、负数之和及总的平均值。输出之。#includeusing namespace std;int main(

13、) double n,sz=0,sf=0,av; int kz=0,kf=0; cout请输入一个整数,想结束就输入0。n; while(n) if(n0) kz+; sz+=n; else kf+; sf+=n; cout请输入一个整数,想结束就输入0。n; av=(sz+sf)/(kz+kf); cout正数个数=kz 负数个数=kfn; cout正数和=sz 负数和=sfn; cout总平均值=avn; return 0;11.试设计一程序,输入一任意整数,能反序输出其各位数字。例如,输入2468,则输出8642。#includeusing namespace std;int main(

14、) int n,a,i=0,s=0; cout请输入一个四位整数。n; while(i4) a=n%10; s=s*10+a; n/=10; i+; coutsendl; return 0;12.试设计一程序,输入一任意整数,能输出其各位数字之和。例如输入1234则输出10。#includeusing namespace std;int main() int n,a,b,c,d; cout请输入一个四位整数。n; a=n/1000; b=n/100%10; c=n/10%10; d=n%10; couta+b+c+dendl; return 0;13. 试设计一程序,输入一正数a,用迭代法求

15、的近似值。迭代公式如下: 以a的二分之一作为初始近似值。在x1和x0之差的绝对值不大于1e-5时结束迭代。#include#includeusing namespace std;int main() double x0,x1,a; cout请输入一正数。a; x1=a/2; do x0=x1; x1=2*x0/3+a/(3*x0*x0); while(fabs(x1-x0)1e-5); couta的立方根等于:x1endl; return 0;14.试用for语句设计程序,计算100以内的奇数和。#include#includeusing namespace std;int main() in

16、t s=0; for(int i=1;i100;i+=2) s+=i; cout100以内的奇数和为:sendl; return 0;15.例4-14程序中用了指针自增走步。试改为指针加整数走步,写出程序。#includeusing namespace std;int main() char *p=You are a teacher.; for(int i=0;*(p+i);i+) cout*(p+i); coutendl; return 0;16.试设计一程序,输入一个整数,能输出其所有因子。#includeusing namespace std;int main() int n,k=0;

17、cout请输入一个整数。n; for(int i=1;in;i+) if(n%i=0) coutit; k+; if(k%8=0) coutendl; coutendl; return 0;17.设计一程序,输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33 153就是水仙花数。#includeusing namespace std;int main() int a,b,c,i; for(i=0;i1000;i+) a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c=i) coutit;

18、coutendl; return 0;18.求满足以下条件的三位数n,它除以11(整数相除)所得的商等于n的各位数字的平方和,且其中至少有两位数字相同。例如,131除以11的所得的商是11,而131的各位数字的平方和也为11,二者相等。且131有两位数字相同。所以131是满足条件的三位数。#includeusing namespace std;int main() int a,b,c,i; for(i=0;i1000;i+) a=i/100; b=i%100/10; c=i%10; if(i/11)=(a*a+b*b+c*c)&(a=b)|(b=c)|(c=a) coutit; coutend

19、l; return 0;19.设计一程序,求出200300之间的所有素数。#include#include#includeusing namespace std;int main() int n,k; for(n=200;n300;n+) for(k=2;k=sqrt(n);k+) if(n%k=0) break; if(!(k=sqrt(n) coutsetw(4)n; coutendl; return 0;20.设计一程序,求出满足以下条件的最小的n值和s值:s=1+2+3+n,且s600#includeusing namespace std;int main() for(int n=1,s=0;s600;n+) s+=n; cout600,最小的n是:nendl; cout600,最小的s是:sendl; return 0;21.求/2 的近似值的公式为:其中,n=1、2、3 。设计一程序,求出当n=1000时的近似值。#includeusing namespace std;int main() double a,n,pi,p=1; for(n=1;n=1000;n+) a=2*n/(2*n-1)*2*n/(2*n+1); p*=a; pi=p*2; coutpi=piendl; return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1