C++ Primer第五版_第三章习题答案(21~30)
创始人
2025-05-29 10:14:33
0次

文章目录

      • 练习3.21
      • 练习3.22
      • 练习3.23
      • 练习3.24
      • 练习3.25
      • 练习3.26
      • 练习3.27
      • 练习3.28
      • 练习3.29
      • 练习3.30

练习3.21

请使用迭代器重做3.3.3节的第一个练习。

#include 
#include 
#include 
#include using std::vector;
using std::string;
using std::cout;
using std::endl;void check_and_print(const vector& vec)
{cout << "size: " << vec.size() << "  content: [";for (auto it = vec.begin(); it != vec.end(); ++it)cout << *it << (it != vec.end() - 1 ? "," : "");cout << "]\n" << endl;
}void check_and_print(const vector& vec)
{cout << "size: " << vec.size() << "  content: [";for (auto it = vec.begin(); it != vec.end(); ++it)cout << *it << (it != vec.end() - 1 ? "," : "");cout << "]\n" << endl;
}int main()
{vector v1;vector v2(10);vector v3(10, 42);vector v4{ 10 };vector v5{ 10, 42 };vector v6{ 10 };vector v7{ 10, "hi" };check_and_print(v1);check_and_print(v2);check_and_print(v3);check_and_print(v4);check_and_print(v5);check_and_print(v6);check_and_print(v7);return 0;
}

练习3.22

修改之前那个输出text第一段的程序,首先把text的第一段全部改成大写形式,然后输出它。

#include 
#include 
#include 
#include using namespace std;int main()
{vector text;text.push_back("aaaaaaaaaa aaaaaaaaa aaaaaa");text.push_back("");text.push_back("bbbbbbbbbbbbbb bbbbbbbbbbb bbbbbbbbbbbbb");for (auto it = text.begin(); it != text.end() && !it->empty(); ++it){for (auto &c : *it){if (isalpha(c)) c = toupper(c);}}for (auto it : text){cout << it << endl;}return 0;
}
Footer

练习3.23

编写一段程序,创建一个含有10个整数的vector对象,然后使用迭代器将所有元素的值都变成原来的两倍。输出vector对象的内容,检验程序是否正确。

#include 
#include using namespace std;int main()
{vector ivec(10, 42);for (auto &it : ivec){it = it * 2;cout << it << endl;}return 0;
}

练习3.24

请使用迭代器重做3.3.3节的最后一个练习。

#include 
#include 
#include 
#include using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{vector ivec;int i;while (cin >> i){ivec.push_back(i);}for (auto it = ivec.begin(); it != ivec.end() - 1; ++it){cout << *it + *(it + 1) << endl;}//---------------------------------cout << "---------------------------------" << endl;auto it1 = ivec.begin();auto it2 = ivec.end() - 1;while (it1 < it2){cout << *it1 + *it2 << endl;++it1;--it2;}return 0;
}

练习3.25

3.3.3节划分分数段的程序是使用下标运算符实现的,请利用迭代器改写该程序实现完全相同的功能。

#include 
#include using std::vector; 
using std::cout; 
using std::cin; 
using std::endl;int main()
{vector scores(11, 0);unsigned grade;while (cin >> grade){if (grade <= 100)++*(scores.begin() + grade / 10);}for (auto s : scores)cout << s << " ";cout << endl;return 0;
}

练习3.26

在100页的二分搜索程序中,为什么用的是 mid = beg + (end - beg) / 2, 而非 mid = (beg + end) / 2 ; ?

因为迭代器支持的运算只有 - ,而没有 + 。end - beg 意思是相距若干个元素,将之除以2然后与beg相加,表示将beg移动到一半的位置。

练习3.27

假设txt_size 是一个无参函数,它的返回值是int。请回答下列哪个定义是非法的,为什么?

unsigned buf_size = 1024;
(a) int ia[buf_size];
(b) int ia[4 * 7 - 14];
(c) int ia[txt_size()];
(d) char st[11] = "fundamental";
  • (a) 非法。纬度必须是一个常量表达式。
  • (b) 合法。
  • © 非法。txt_size() 的值必须要到运行时才能得到。
  • (d) 非法。数组的大小应该是12。

练习3.28

下列数组中元素的值是什么?

string sa[10];
int ia[10];
int main() {string sa2[10];int ia2[10];
}

数组的元素会被默认初始化。sa 的元素值全部为空字符串,ia 的元素值全部为0。sa2 的元素值全部为空字符串,ia2 的元素值全部未定义。

练习3.29

相比于vector 来说,数组有哪些缺点,请例举一些。

  • 数组的大小是确定的。
  • 不能随意增加元素
  • 不允许拷贝和赋值

练习3.30

指出下面代码中的索引错误。

constexpr size_t array_size = 10;
int ia[array_size];
for (size_t ix = 1; ix <= array_size; ++ix)ia[ix] = ix;

当 ix 增长到 10 的时候,ia[ix] 的下标越界。

相关内容

热门资讯

重大通报外挂!红豆大厅外挂AI... 重大通报外挂!红豆大厅外挂AI脚本,红豆大厅多功能确实是有外挂脚本1、完成红豆大厅辅助器v3.3的残...
必备攻略开挂!全优棋牌开挂AI... 必备攻略开挂!全优棋牌开挂AI软件,全优棋牌多功能确实存在有开挂软件1)全优棋牌有没有挂:进一步探索...
盘点一款透视器!决胜麻将胡易透... 盘点一款透视器!决胜麻将胡易透视器AI工具,决胜麻将胡易多功能竟然是真的有透视器工具决胜麻将胡易能透...
推荐十款辅助!娱家麻将辅助AI... 推荐十款辅助!娱家麻将辅助AI脚本,娱家麻将多功能果然真的是有辅助脚本亲,关键说明,娱家麻将透视脚本...
每日必看透视挂!杜鹃花透视挂A... 每日必看透视挂!杜鹃花透视挂AI攻略,杜鹃花多功能竟然存在有透视挂攻略1、不需要AI权限,帮助你快速...
一分钟了解外挂!易玩堂外挂AI... 一分钟了解外挂!易玩堂外挂AI教程,易玩堂多功能一直是真的有外挂教程1、易玩堂破解器简单,易玩堂机器...
程序员教你开挂!战皇开挂AI技... 程序员教你开挂!战皇开挂AI技巧,战皇多功能竟然存在有开挂技巧1、不需要AI权限,帮助你快速的进行战...
今日焦点开挂!麻将争霸花牌开挂... 今日焦点开挂!麻将争霸花牌开挂AI教程,麻将争霸花牌多功能总是是有开挂教程麻将争霸花牌辅助器是一种具...
重大通报外挂!心悦辽宁麻将外挂... 重大通报外挂!心悦辽宁麻将外挂AIapp,心悦辽宁麻将多功能好像存在有外挂app1、超多福利:超高返...
今日百科辅助!白金岛长沙麻将辅... 今日百科辅助!白金岛长沙麻将辅助AI方法,白金岛长沙麻将多功能其实有辅助方法1、白金岛长沙麻将辅助器...