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
char *p=\
for(int i=0;*p;i++,p++) ; cout<<\ return 0; }
答:输出结果为:i=6。for语句的函数体为空,什么也不干。 5.试分析下面的程序,看看会输出什么结果?若一时看不出来,可用表格一步步分析其循环过程。
#include
char *p=\
for(int j=1;*p;j++) cout<<*p++; cout< for(;j;j--) cout<<*p--; cout< 答:输出结果为: Welcome! !emocleW 6.试问下列程序会输出什么结果? #include 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 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 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 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 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 int main() { double a,b; char oprt; cout<<\请依次输入左操作数、运算符(+、-、* 或/)、右操作数。\ cin>>a>>oprt>>b;