https://github.com/jzplp/Cpp-Primer-Answer
- 练习3.1
重写1.9程序代码重写1.10程序代码重写1.11程序代码重写1.20程序代码重写1.21程序代码重写1.22程序代码重写1.23程序代码重写1.25程序代码 - 练习3.2
读入整行程序代码读入词程序代码 - 练习3.3
string类的输入运算符遇到空白字符就停止输入。
getline遇到换行符才停止输入,并丢弃换行符。 - 练习3.4
比较字符串相等程序代码比较字符串长度程序代码 - 练习3.5
字符串连接程序代码字符串用空格连接程序代码 - 练习3.6
3.6程序代码 - 练习3.7
3.6中实际使用的就是char类型。
3.6程序代码 - 练习3.8
传统for循环程序代码while循环程序代码 我觉得范围for最好。 - 练习3.9
程序尝试输出一个空字符串的第一个字符。
程序是不合法的,因为空字符串并没有字符,尝试使用超出范围的下标将会发生不可预知的结果。 - 练习3.10
3.10程序代码 - 练习3.11
合法,c的类型为const char & 类型。 - 练习3.12
(a) 正确,定义了一个空vector。
(b) 不正确,容器内的对象类型不同。
(c) 正确,定义了一个10个元素的vector,元素值为"null"。 - 练习3.13
(a) 包含0个元素
(b) 包含10个元素,值为0
(c) 包含10个元素,值为42
(d) 包含1个元素,值为10
(e) 包含2个元素,值为10,42
(f) 包含10个元素,值为空
(g) 包含10个元素,值为"hi" - 练习3.14
3.14程序代码 - 练习3.15
3.15程序代码 - 练习3.16
3.16程序代码 之前的回答正确。 - 练习3.17
3.17程序代码 - 练习3.18
不合法,修改如下:
- 练习3.19
三种方法如下:
v1的方法更好,因为语句短而且清晰易懂。
- 练习3.20
相邻整数对的和程序代码首尾整数对的和程序代码 - 练习3.21
用迭代器重写3.16程序代码 - 练习3.22
3.22程序代码 - 练习3.23
3.23程序代码 - 练习3.24
重写3.20相邻整数对的和程序代码重写3.20首尾整数对的和程序代码 - 练习3.25
3.25程序代码 - 练习3.26
因为迭代器没有定义迭代器+迭代器的运算。 - 练习3.27
(a) 非法。 buf_size不是常量表达式
(b) 合法。
(c) 非法。txt_size()不是常量表达式
(d) 非法。没有空间存放空字符 - 练习3.28
sa中元素的值为空字符串
ia中元素的值为0
sa2中元素的值为空字符串
ia2中元素的值未定义 - 练习3.29
数组的维度必须在定义时指定,不能更改大小,而且定义时只接受常量表达式。vector的维度可以大小变化。
vector对象可以直接赋值,数组不能直接赋值。 - 练习3.30
数组的索引值是从0到array_size-1。题目中却用了1到array_size,产生了数组越界的错误。 - 练习3.31
3.31程序代码 - 练习3.32
数组拷贝程序代码vector拷贝程序代码 - 练习3.33
不初始化scores,scores中元素的值是未定义的。那么无法正常通过scores计数。 - 练习3.34
功能:p1指向p2的位置
如果p1和p2不指向同一个数组的元素或者类型不同就是非法的。 - 练习3.35
3.35程序代码 - 练习3.36
数组相等程序代码vector相等程序代码 - 练习3.37
含义:输出字符数组中的每个元素,然后输出字符数组内存位置之后的内容,一直遇到空字符.
输出结果
- 练习3.38
因为指针是代表实际的内存地址,两个内存地址相加不仅没有实际意义,而且还可能溢出。 - 练习3.39
比较C风格字符串程序代码比较string程序代码 - 练习3.40
3.40程序代码 - 练习3.41
3.41程序代码 - 练习3.42
3.42程序代码 - 练习3.43
范围for程序代码下标for程序代码指针for程序代码 - 练习3.44
用类型别名重写3.43范围for程序代码 下标for程序代码由于采用下标,因此没必要用类型别名重写
用类型别名重写3.43指针for程序代码 - 练习3.45
用auto重写3.43范围for程序代码用auto重写3.43下标for程序代码用auto重写3.43指针for程序代码