C++Primer(第五版 )第五章 语句 章节编程练习答案

5.1 什么是空语句?什么时候会用到空语句?

答:

只含义一个单独的分号的语句是空语句。即:;

如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。

5.2 什么是块?什么时候会用到块?

答:

用花括号括起来的语句和声明的序列就是块。

如果在程序的某个地方,语法上需要一条语句,而逻辑上需要多条语句,此时应该使用块

5.3 使用逗号运算符重写1.4.1节的while循环,使它不再需要块,观察改写之后的代码可读性提高了还是降低了。

答:

5.4 说明下列例子的含义,如果存在问题,试着修改它。

答:

  • (a) 这个循环试图用迭代器遍历string,但是变量的定义应该放在循环的外面,目前每次循环都会重新定义一个变量,明显是错误的。
  • (b) 这个循环的whileif是两个独立的语句,if语句中无法访问status变量,正确的做法是应该将if语句包含在while里面。

5.7 改写下列代码段中的错误。

答:

  • (a) ival1 = ival2 后面少了分号。
  • (b) 应该用花括号括起来。
  • (c) if (!ival) 应该改为 else
  • (d) if (ival = 0) 应该改为 if (ival == 0)

5.10 我们之前实现的统计元音字母的程序存在一个问题:如果元音字母以大写形式出现,不会被统计在内。编写一段程序,既统计元音字母的小写形式,也统计元音字母的大写形式,也就是说,新程序遇到'a'和'A'都应该递增aCnt的值,以此类推。

答:

5.13 下面显示的每个程序都含有一个常见的编码错误,指出错误在哪里,然后修改它们。

答:

(a) 少了break语句。应该为

(b) 在default分支当中,ix未定义。应该在外部定义ix

(c) case后面应该用冒号而不是逗号。

(d) case标签必须是整型常量表达式。

5.14 编写一段程序,从标准输入中读取若干string对象并查找连续重复出现的单词,所谓连续重复出现的意思是:一个单词后面紧跟着这个单词本身。要求记录连续重复出现的最大次数以及对应的单词。如果这样的单词存在,输出重复出现的最大次数;如果不存在,输出一条信息说明任何单词都没有连续出现过。 例如:如果输入是:

那么输出应该表明单词now连续出现了3次。

答:

5.15 说明下列循环的含义并改正其中的错误。

答:

(a)

(b)

(c)  问题:无限循环

5.17 假设有两个包含整数的vector对象,编写一段程序,检验其中一个vector对象是否是另一个的前缀。 为了实现这一目标,对于两个不等长的vector对象,只需挑出长度较短的那个,把它的所有元素和另一个vector对象比较即可。 例如,如果两个vector对象的元素分别是0、1、1、2 和 0、1、1、2、3、5、8,则程序的返回结果为真。

答:

5.19 编写一段程序,使用do while循环重复地执行下述任务: 首先提示用户输入两个string对象,然后挑出较短的那个并输出它。

答:

5.20 编写一段程序,从标准输入中读取string对象的序列直到连续出现两个相同的单词或者所有的单词都读完为止。 使用while循环一次读取一个单词,当一个单词连续出现两次时使用break语句终止循环。 输出连续重复出现的单词,或者输出一个消息说明没有任何单词是连续重复出现的。

答:

5.24 修改你的程序,使得当第二个数是0时抛出异常。先不要设定catch子句,运行程序并真的为除数输入0,看看会发生什么?

答:

5.25 修改上一题的程序,使用try语句块去捕获异常。catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语句块的内容。

答:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值