在我自学C++过程中,我选择了C++Primer这本书,并对部分代码习题进行了求解以及运行结果。接下来几个月我将为大家定时按章节更新习题答案与运行结果,运行环境(Visual Studio Code,Windows 11):
C++ Primer (第五版)习题答案总目录:
https://blog.csdn.net/weixin_48467622/article/details/136418131?spm=1001.2014.3001.5501
目录
3.1.1.使用恰当的using 声明重做 1.4.1节和2.6.2节的练习。
1.4.1
2.6.2
3.2.编写一段程序从标准输入中一次读入一行,然后修改该程序使其一次读入一个词。
One Row
One Word!
3.4.编写一段程序读取两个字符串,比较其是否相等并输出结果。如果不相等,输出比较大的那个字符串。改写上述程序,比较输入的两个字符串是否等长,如果不等长,输出长度较大的那个字符串。
3.4.1
3.4.2
3.5.编写一段程序从标准输入中读入多个字符串并将他们连接起来,输出连接成的大字符串。然后修改上述程序,用空格把输入的多个字符串分割开来。
3.5.1.字符串拼接
3.5.2.空格拼接。
3.6 编写一段程序,使用范围for语句将字符串内的所有字符用X代替。
3.7 就上一题完成的程序而言,如果将循环控制变量的类型设为char将发生什么?先估计一下结果,然后实际编程进行验证。
3.8 分别用while循环和传统的for循环重写第一题的程序,你觉得哪种形式更好呢?为什么?
3.9 下面的程序有何作用?它合法吗?如果不合法,为什么?
3.10 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分。
3.14 编写一段程序,用cin读入一组整数并把它们存入一个vector对象。
3.15 改写上题的程序,不过这次读入的是字符串。
3.16 编写一段程序,把练习3.13中vector对象的容量和具体内容输出出来。检验你之前的回答是否正确,如果不对,回过头重新学习3.3.1节(第87页)直到弄明白错在何处为止。
3.17 从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写形式。输出改变后的结果,每个词占一行。
3.19 如果想定义一个含有10个元素的vector对象,所有元素的值都是42,请列举出三种不同的实现方法。哪种方法更好呢?为什么?
3.20 读入一组整数并把他们存入一个vector对象,将每对相邻整数的和输出出来。改写你的程序,这次要求先输出第一个和最后一个元素的和,接着输入第二个和倒数第二个元素的和,以此类推。
3.21 请使用迭代器重做3.3.3节的第一个练习。
3.22 修改之前那个输出text第一段的程序,首先把text的第一段全部改成大写形式,然后输出它。
3.23 编写一段程序,创建一个含有10个整数的vector对象,然后使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容,检验程序是否正确。
3.24 请使用迭代器重做3.3.3节的最后一个练习。
3.25 3.3.3节划分分数段的程序是使用下标运算符实现的,请利用迭代器改写该程序实现完全相同的功能。
3.31 编写一段程序,定义一个含有10个int的数组,令每个元素的值就是其下标值。
3.32 将上一题刚刚创建的数组拷贝给另一数组。利用vector重写程序,实现类似的功能。
3.34 假定p1 和 p2 都指向同一个数组中的元素,则下面程序的功能是什么?什么情况下该程序是非法的?
3.35 编写一段程序,利用指针将数组中的元素置为0。
3.36 编写一段程序,比较两个数组是否相等。再写一段程序,比较两个vector对象是否相等。
3.39 编写一段程序,比较两个string对象。再编写一段程序,比较两个C风格字符串的内容。
3.40 编写一段程序,定义两个字符数组并用字符串字面值初始化它们;接着再定义一个字符数组存放前面两个数组连接后的结果。使用strcpy和strcat把前两个数组的内容拷贝到第三个数组当中。
3.41 编写一段程序,用整型数组初始化一个vector对象。
3.42 编写一段程序,将含有整数元素的vector对象拷贝给一个整型数组。
3.43 编写3个不同版本的程序,令其均能输出ia的元素。版本1使用范围for语句管理迭代过程;版本2和版本3都使用普通for语句,其中版本2要求使用下标运算符,版本3要求使用指针。此外,在所有3个版本的程序中都要直接写出数据类型,而不能使用类型别名、auto关键字和decltype关键字。
3.44 改写上一个练习中的程序,使用类型别名来代替循环控制变量的类型。
3.45 再一次改写程序,这次使用auto关键字。
3.1.1.使用恰当的using 声明重做 1.4.1节和2.6.2节的练习。
1.4.1
#include using std::cin; using std::cout; using std::endl; int main() { int sum = 0; for (int val = 1; val total.units_sold >> totalprice) { total.revenue = total.units_sold*totalprice; Sale_data nextdata; double nextprice; while(cin >> nextdata.bookNo >> nextdata.units_sold >> nextprice) { nextdata.revenue = nextprice*nextdata.units_sold; if(total.bookNo == nextdata.bookNo) { total.units_sold += nextdata.units_sold; total.revenue += nextdata.revenue; } else { cout