第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 using namespace std; int main() {

char *p=\

for(int i=0;*p;i++,p++) ; cout<<\ return 0; }

答:输出结果为:i=6。for语句的函数体为空,什么也不干。 5.试分析下面的程序,看看会输出什么结果?若一时看不出来,可用表格一步步分析其循环过程。

#include using namespace std; int main() {

char *p=\

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

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

答:输出结果为:

Welcome! !emocleW

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

#include using namespace std;

int main() {

int i,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<<' '; else cout<<'#'; }

cout<

return 0; }

答:输出结果如图4.36所示。 7.程序如下。输出结果如何?

#include #include using namespace std; int main() {

int i,j; cout<<'*';

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

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

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

cout<

return 0; }

答:输出结果如下:

* 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 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 using namespace std;

int main() {

double x,y;

cout<<\请输入一实数。\ cin>>x;

if(x<=3.6) y=1.6*x-2.5; else y=8.8*x+18.2; cout<<\ return 0; }

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

#include using namespace std;

int main() {

int n;

cout<<\请输入一整数。\ cin>>n; if(n>0){

if(n%2==0) cout<<\这是一个正偶数。\ else cout<<\这是一个正奇数。\ } else{

if(n%2==0) cout<<\这是一个负偶数。\ else cout<<\这是一个负奇数。\ }

return 0; }

3.某运输公司对所运的物品分段进行计费。运输距离s 越大,,则折扣d越大。距离s与折扣d的关系如表4-8所示。

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

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

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

#include using namespace std;

int main() {

int s;

double p,w,d,f;

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

cout<<\请输入运输距离s(整数)。\ cin>>s;

表4-8 switch(s/250){

运输距离与折扣的关系 case 0: d=0; break;

运输距离s 折扣d% case 1: d=2; break;

s<250 0% case 2:

250≤s<500 2% case 3: d=5; break;

case 4: 500≤s<1000 5% case 5: 1000≤s<2000 8% case 6: 2000≤s<3000 10% case 7: d=8; break; s≥3000 15% 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<<\总运费为:\ return 0; }

4.试设计一程序,对两整数作一个四则算术运算。程序中依次输入左操作数a、运算符oprt和右操作数b。运算符oprt是如下四个字符中的一个:

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

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

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

#include using namespace std;

int main() {

double a,b; char oprt;

cout<<\请依次输入左操作数、运算符(+、-、* 或/)、右操作数。\ cin>>a>>oprt>>b;