21天学通C++(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.6 习题

1.C++程序中有如下语句:

该语句是否是合法的?如果合法,运行结束后n和i的值分别为多少?

【解答】该习题考查逗号运算符和赋值语句。上述表达式语句是合法的,其总体上是一个赋值语句,赋值号右边是一个逗号表达式,逗号表达式先计算第一个表达式,最终结果为括号中最后一个表达式的值。因此运行结束后i的值为3,而运行n=3语句后,n的值也为3。

2.编写一个C++程序,要求接收用户输入的一个包含5位小数的浮点数,通过精度控制输出该浮点数有效数字为3位、4位和5位时的数值。例如,输入一个浮点数15.41532,运行程序后将分别显示如图4-26所示结果。

图4-26 控制输出精度

【解答】该习题主要考查使用cout输出流控制精度。程序要求接收用户输入,因此需声明一个浮点型变量,输出指定的有效位数,只需使用cout输出流的精度控制成员函数setprecision即可。需要注意的是,输出有效位数时,对最后一位有效位数要进行四舍五入操作。其简要代码如下所示。

3.已知int x=10,y=20,z=30,以下语句执行后x,y,z的值将分别是多少?

【解答】该习题主要考查if语句。在上述语句中,首先判断关系条件x>y的值是否为true,此处将x和y的值分别代入:x=10,y=20,因此x>y是不成立的,因此if语句下面的第一条语句不会执行,即语句z=x不会执行,而其后的两条语句x=y和y=z语句将会被执行。因此,执行该语句段后,x、y和z的值分别为20,30和30。

4.编写一个C++程序,从键盘输入三角形的三边长,判断出这三边能否构成三角形。例如,输入三边分别为2,3,4,其返回结果如图4-27所示。

图4-27 判断是否能构成三角形

【解答】该习题主要考查if…else语句。判断三边是否能够构成三角形,需要满足如下条件:即任意两边的和要大于另一边,即a+b>c,同时a+c>b,同时b+c>a。根据该定理,这三个条件要同时成立,因此其关系为与关系。在if语句后的条件表达式要表示为:(a+b>c) && (a+c)>b)&& (b+c)>a,满足该条件即可构成三角形,否则不能构成。其简要代码如下所示。

5.符号函数的实现在许多程序中是常见的,用多种选择语句编程实现符号函数。当x <0时sgn(x)=-1;当x >0时sgn(x)=+1;当x=0时sgn(x)=0。例如,当用户输入x的值为10时,输出结果为1;输入x的值为-10时,输出结果为-1;输入x的值为0时,输出结果为0,如图4-28所示。

图4-28 符号函数的实现

【解答】该习题主要考查if…else if…else语句的应用。读者可以看到,上述程序有3种可能情况,即输入的x有大于0、小于0和等于0这3种情况。此处需要使用if…else if…else语句判断这三种情况,并输出对应的值。其简要代码如下所示。

6.当执行以下程序时,循环体将被执行多少次?

【解答】该习题主要考查do…while语句的执行情况。do…while语句不管循环条件是否满足,都至少会执行一次循环体,执行一次后判断循环条件是否成立。此处k的初值为1,执行完语句k=k*k;后,k的值仍然为1。因此,循环条件!k的值为false,该循环不会再继续下去,从而退出循环。因此,该循环体被执行了一次。

7.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?编写一个程序输出所有无重复数字的三位数。

【解答】该题目主要考查嵌套循环和多个表达式的逻辑判断。为了方便理解,分析题目要求:

(1)由于是三位数,所以假设百位数、十位数、个位数依次为x、y和z。

(2)由于从1、2、3和4选取,所以1<=x<=4、1<=y<=4和1<=z<=4。

(3)由于互不重复,所以x!=y,且y!=z,且z!=x。

所以,只需要让x、y和z依次取值,然后判断条件,只要满足条件就可以。其简要代码如下所示。

8.编写一个程序,求12+22+32+42+…+202的值。

【解答】该题目考查的是读者的归纳能力和循环语句使用能力。首先分析该表达式的特点。该表达式是计算数十个数字的和。为了方便读者找出规律,我们将所有的数字都列出来,如表4-2所示。

表4-2 所有累加的值

从这些数字中可以看出并总结出以下规范:每个数字都比前一个数字大10;这些数字个数为20。所以,第一个数字可以表示为a1=2+10=12;第二个数字可以表示为a2=a1+10=22;第三个数字可以表示为a3=a2+10=32…ai=ai-1+10…a20=a19+10=202。其简要代码如下所示。

9.编写一个C++程序,找出200内能被7整除的所有自然数,并将其输出到用户屏幕。

【解答】该习题主要考查continue语句的应用。continue语句用于结束本次循环,跳到下一次循环。在该习题中,通过一个循环在1~200之间依次进行查找,能够被7整除则输出,否则使用continue语句结束本次循环,继续查找。其简要代码如下所示。