Skip to content

Latest commit

 

History

History
160 lines (83 loc) · 4.86 KB

README.md

File metadata and controls

160 lines (83 loc) · 4.86 KB

练习17.1

定义一个保存三个 int 值的 tuple,并将其成员分别初始化为10、20和30。

练习17.2

定义一个 tuple,保存一个 string、一个vector 和一个 pair<string, int>。

练习17.3

重写12.3节中的 TextQuery 程序,使用 tuple 代替 QueryResult 类。你认为哪种设计更好?为什么?

练习17.4

编写并测试你自己版本的 findBook 函数。

练习17.5

重写 findBook,令其返回一个 pair,包含一个索引和一个迭代器pair。

练习17.6

重写 findBook,不使用tuple和pair。

练习17.7

解释你更倾向于哪个版本的findBook,为什么。

练习17.8

在本节最后一段代码中,如果我们将Sales_data()作为第三个参数传递给accumulate,会发生什么?

练习17.9

解释下列每个bitset 对象所包含的位模式:

(a) bitset<64> bitvec(32);
(b) bitset<32> bv(1010101);
(c) string bstr; cin >> bstr; bitset<8> bv(bstr);

练习17.10

使用序列1、2、3、5、8、13、21初始化一个bitset,将这些位置置位。对另一个bitset进行默认初始化,并编写一小段程序将其恰当的位置位。

练习17.11

定义一个数据结构,包含一个整型对象,记录一个包含10个问题的真/假测验的解答。如果测验包含100道题,你需要对数据结构做出什么改变(如果需要的话)?

练习17.12

使用前一题中的数据结构,编写一个函数,它接受一个问题编号和一个表示真/假解答的值,函数根据这两个参数更新测验的解答。

练习17.13

编写一个整型对象,包含真/假测验的正确答案。使用它来为前两题中的数据结构生成测验成绩。

练习17.14

编写几个正则表达式,分别触发不同错误。运行你的程序,观察编译器对每个错误的输出。

练习17.15

编写程序,使用模式查找违反“i在e之前,除非在c之后”规则的单词。你的程序应该提示用户输入一个单词,然后指出此单词是否符号要求。用一些违反和未违反规则的单词测试你的程序。

练习17.16

如果前一题程序中的regex对象用"[^c]ei"进行初始化,将会发生什么?用此模式测试你的程序,检查你的答案是否正确。

练习17.17

更新你的程序,令它查找输入序列中所有违反"ei"语法规则的单词。

练习17.18

修改你的程序,忽略包含“ei”但并非拼写错误的单词,如“albeit”和“neighbor”。

练习17.19

为什么可以不先检查m[4]是否匹配了就直接调用m[4].str()?

练习17.20

编写你自己版本的验证电话号码的程序。

练习17.21

使用本节定义的valid 函数重写8.3.2节中的电话号码程序。

练习17.22

重写你的电话号码程序,使之允许在号码的三个部分之间放置任意多个空白符。

练习17.23

编写查找邮政编码的正则表达式。一个美国邮政编码可以由五位或九位数字组成。前五位数字和后四位数字之间可以用一个短横线分隔。

练习17.24

编写你自己版本的重拍电话号码格式的程序。

练习17.25

重写你的电话号码程序,使之只输出每个人的第一个电话号码。

练习17.26

重写你的电话号码程序,使之对多于一个电话号码的人只输出第二个和后续号码。

练习17.27

编写程序,将九位数字邮政编码的格式转换为 ddddd-dddd。

练习17.28

编写函数,每次调用生成并返回一个均匀分布的随机unsigned int。

练习17.29

修改上一题中编写的函数,允许用户提供一个种子作为可选参数。

练习17.30

再次修改你的程序,此次增加两个参数,表示函数允许返回的最小值和最大值。

练习17.31

对于本节中的游戏程序,如果在do循环内定义b和e,会发生什么?

练习17.32

如果我们在循环内定义resp,会发生什么?

练习17.33

修改11.3.6节中的单词转换程序,允许对一个给定单词有多种转换方式,每次随机选择一种进行实际转换。

练习17.34

编写一个程序,展示如何使用表17.17和表17.18中的每个操作符。

练习17.35

修改第670页中的程序,打印2的平方根,但这次打印十六进制数字的大写形式。

练习17.36

修改上一题中的程序,打印不同的浮点数,使它们排成一列。

练习17.37

用未格式化版本的getline 逐行读取一个文件。测试你的程序,给定一个文件,既包含空行又包含长度超过你传递给geiline的字符数组大小的行。

练习17.38

扩展上一题中你的程序,将读入的每个单词打印到它所在的行。

练习17.39

对本节给出的 seek程序,编写你自己的版本。