第04章习题解答.docx

上传人:b****1 文档编号:687397 上传时间:2023-04-29 格式:DOCX 页数:19 大小:31KB
下载 相关 举报
第04章习题解答.docx_第1页
第1页 / 共19页
第04章习题解答.docx_第2页
第2页 / 共19页
第04章习题解答.docx_第3页
第3页 / 共19页
第04章习题解答.docx_第4页
第4页 / 共19页
第04章习题解答.docx_第5页
第5页 / 共19页
第04章习题解答.docx_第6页
第6页 / 共19页
第04章习题解答.docx_第7页
第7页 / 共19页
第04章习题解答.docx_第8页
第8页 / 共19页
第04章习题解答.docx_第9页
第9页 / 共19页
第04章习题解答.docx_第10页
第10页 / 共19页
第04章习题解答.docx_第11页
第11页 / 共19页
第04章习题解答.docx_第12页
第12页 / 共19页
第04章习题解答.docx_第13页
第13页 / 共19页
第04章习题解答.docx_第14页
第14页 / 共19页
第04章习题解答.docx_第15页
第15页 / 共19页
第04章习题解答.docx_第16页
第16页 / 共19页
第04章习题解答.docx_第17页
第17页 / 共19页
第04章习题解答.docx_第18页
第18页 / 共19页
第04章习题解答.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第04章习题解答.docx

《第04章习题解答.docx》由会员分享,可在线阅读,更多相关《第04章习题解答.docx(19页珍藏版)》请在冰点文库上搜索。

第04章习题解答.docx

第04章习题解答

4.5习题

4.5.1概念题

1.例4-3程序中B行的if语句的控制式理应是(d>0),为什么可以用(d)?

答:

在if(d>=0)的条件下,d值只有d>0或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.试问下列程序会输出什么结果?

for语句的函数体是什么?

#include

usingnamespacestd;

intmain()

{

char*p="Output";

for(inti=0;*p;i++,p++);

cout<<"i="<

return0;

}

答:

输出结果为:

i=6。

for语句的函数体为空,什么也不干。

5.试分析下面的程序,看看会输出什么结果?

若一时看不出来,可用表格一步步分析其循环过程。

#include

usingnamespacestd;

intmain()

{

char*p="Welcome!

";

for(intj=1;*p;j++)cout<<*p++;

cout<

p--;

j--;

for(;j;j--)cout<<*p--;

cout<

return0;

}

答:

输出结果为:

Welcome!

!

emocleW

6.试问下列程序会输出什么结果?

#include

usingnamespacestd;

intmain()

{

inti,j;

for(i=0;i<8;i++){

for(j=0;j<7-i;j++)cout<<'';

for(j=0;j<2*i+1;j++){

if(j%2==0)cout<<'';

elsecout<<'#';

}

cout<

}

return0;

}

答:

输出结果如图4.36所示。

7.程序如下。

输出结果如何?

#include

#include

usingnamespacestd;

intmain()

{

inti,j;

cout<<'*';

for(j=1;j<=9;j++)cout<

cout<

for(i=1;i<=9;i++){

cout<

for(j=1;j<=i;j++)

cout<

cout<

}

return0;

}

答:

输出结果如下:

*123456789

11

224

3369

4481216

5510152025

661218243036

77142128354249

8816243240485664

991827364554637281

4.5.2程序设计题

1.试设计一程序。

输入x值,由下列代数式求出y值,输出x值和y值。

x≤3.6时y=1.6x-2.5

x>3.6时y=8.8x+18.2

(注意:

代数式中的运算符与C++程序中的运算符有所不同,在程序设计时要作适当变换。

#include

usingnamespacestd;

intmain()

{

doublex,y;

cout<<"请输入一实数。

"<

cin>>x;

if(x<=3.6)y=1.6*x-2.5;

elsey=8.8*x+18.2;

cout<<"x="<

return0;

}

2.试设计一程序,输入一整数,能判别出此整数是正还是负,是奇还是偶,并输出表明判别结果。

#include

usingnamespacestd;

intmain()

{

intn;

cout<<"请输入一整数。

"<

cin>>n;

if(n>0){

if(n%2==0)cout<<"这是一个正偶数。

"<

elsecout<<"这是一个正奇数。

"<

}

else{

if(n%2==0)cout<<"这是一个负偶数。

"<

elsecout<<"这是一个负奇数。

"<

}

return0;

}

3.某运输公司对所运的物品分段进行计费。

运输距离s越大,,则折扣d越大。

距离s与折扣d的关系如表4-8所示。

设每公里每吨的基本运费为p,货物重量为w,折扣为d%,则总运费f按下式计算:

f=p*w*s*(1-d/100.0)

试设计一程序,当输入p、w、s后,能输出其总运费。

#include

usingnamespacestd;

表4-8

运输距离与折扣的关系

运输距离s

折扣d%

s<250

0%

250≤s<500

2%

500≤s<1000

5%

1000≤s<2000

8%

2000≤s<3000

10%

s≥3000

15%

intmain()

{

ints;

doublep,w,d,f;

cout<<"请输入每公里每吨的基本运费p、货物重量w。

"<

cin>>p>>w;

cout<<"请输入运输距离s(整数)。

"<

cin>>s;

switch(s/250){

case0:

d=0;break;

case1:

d=2;break;

case2:

case3:

d=5;break;

case4:

case5:

case6:

case7:

d=8;break;

case8:

case9:

case10:

case11:

d=10;break;

case12:

default:

d=15;break;

}

f=p*w*s*(1-d/100.0);

cout<<"总运费为:

"<

return0;

}

4.试设计一程序,对两整数作一个四则算术运算。

程序中依次输入左操作数a、运算符oprt和右操作数b。

运算符oprt是如下四个字符中的一个:

‘+’‘-’‘*’‘/’

用以表明运算是加、减、乘或除。

根据所输入的oprt的字符值对两操作数a和b作相应的加、减、乘或除的运算,最后输出运算结果。

#include

usingnamespacestd;

intmain()

{

doublea,b;

charoprt;

cout<<"请依次输入左操作数、运算符(+、-、*或/)、右操作数。

"<

cin>>a>>oprt>>b;

switch(oprt){

case'+':

cout<

case'-':

cout<

case'*':

cout<

case'/':

cout<

<

<

x+=y+z;

y+=z+x;

z+=x+y;

if(i%3==0)cout<

i++;

}

return0;

}

10.试设计一程序,从键盘输入若干个整数,以输入0为结束。

分别统计出正数的个数和负数的个数,并求出正数之和、负数之和及总的平均值。

输出之。

#include

usingnamespacestd;

intmain()

{

doublen,sz=0,sf=0,av;

intkz=0,kf=0;

cout<<"请输入一个整数,想结束就输入0。

"<<'\n';

cin>>n;

while(n){

if(n>0){

kz++;sz+=n;

}

else{kf++;sf+=n;

}

cout<<"请输入一个整数,想结束就输入0。

"<<'\n';

cin>>n;

}

av=(sz+sf)/(kz+kf);

cout<<"正数个数="<

cout<<"正数和="<

cout<<"总平均值="<

return0;

}

11.试设计一程序,输入一任意整数,能反序输出其各位数字。

例如,输入2468,则输出8642。

#include

usingnamespacestd;

intmain()

{

intn,a,i=0,s=0;

cout<<"请输入一个四位整数。

"<<'\n';

cin>>n;

while(i<4){

a=n%10;

s=s*10+a;

n/=10;

i++;

}

cout<

return0;

}

12.试设计一程序,输入一任意整数,能输出其各位数字之和。

例如输入1234则输出10。

#include

usingnamespacestd;

intmain()

{

intn,a,b,c,d;

cout<<"请输入一个四位整数。

"<

cin>>n;

a=n/1000;

b=n/100%10;

c=n/10%10;

d=n%10;

cout<

return0;

}

13.试设计一程序,输入一正数a,用迭代法求

的近似值。

迭代公式如下:

以a的二分之一作为初始近似值。

在x1和x0之差的绝对值不大于1e-5时结束迭代。

#include

#include

usingnamespacestd;

intmain()

{

doublex0,x1,a;

cout<<"请输入一正数。

"<

cin>>a;

x1=a/2;

do{

x0=x1;

x1=2*x0/3+a/(3*x0*x0);

}

while(fabs(x1-x0)>1e-5);

cout<

"<

return0;

}

14.试用for语句设计程序,计算100以内的奇数和。

#include

#include

usingnamespacestd;

intmain()

{

ints=0;

for(inti=1;i<100;i+=2)s+=i;

cout<<"100以内的奇数和为:

"<

return0;

}

15.例4-14程序中用了指针自增走步。

试改为指针加整数走步,写出程序。

#include

usingnamespacestd;

intmain()

{

char*p="Youareateacher.";

for(inti=0;*(p+i);i++)cout<<*(p+i);

cout<

return0;

}

16.试设计一程序,输入一个整数,能输出其所有因子。

#include

usingnamespacestd;

intmain()

{

intn,k=0;

cout<<"请输入一个整数。

"<

cin>>n;

for(inti=1;i

if(n%i==0){

cout<

k++;

if(k%8==0)cout<

}

cout<

return0;

}

17.设计一程序,输出所有的水仙花数。

所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身。

例如:

153=13+53+33153就是水仙花数。

#include

usingnamespacestd;

intmain()

{

inta,b,c,i;

for(i=0;i<1000;i++){

a=i/100;b=i%100/10;c=i%10;

if(a*a*a+b*b*b+c*c*c==i)cout<

}

cout<

return0;

}

18.求满足以下条件的三位数n,它除以11(整数相除)所得的商等于n的各位数字的平方和,且其中至少有两位数字相同。

例如,131除以11的所得的商是11,而131的各位数字的平方和也为11,二者相等。

且131有两位数字相同。

所以131是满足条件的三位数。

#include

usingnamespacestd;

intmain()

{

inta,b,c,i;

for(i=0;i<1000;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)))

cout<

}

cout<

return0;

}

19.设计一程序,求出200~300之间的所有素数。

#include

#include

#include

usingnamespacestd;

intmain()

{

intn,k;

for(n=200;n<300;n++){

for(k=2;k<=sqrt(n);k++)if(n%k==0)break;

if(!

(k<=sqrt(n)))cout<

}

cout<

return0;

}

20.设计一程序,求出满足以下条件的最小的n值和s值:

s=1+2+3+···+n,且s≥600

#include

usingnamespacestd;

intmain()

{

for(intn=1,s=0;s<600;n++)s+=n;

cout<<"满足s>600,最小的n是:

"<

cout<<"满足s>600,最小的s是:

"<

return0;

}

21.求π/2的近似值的公式为:

····

····

其中,n=1、2、3····。

设计一程序,求出当n=1000时π的近似值。

#include

usingnamespacestd;

intmain()

{

doublea,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;

cout<<"pi="<

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2