C++ Primer第五版_第三章习题答案(11~20)
创始人
2025-05-29 10:12:16
0

文章目录

      • 练习3.11
      • 练习3.12
      • 练习3.13
      • 练习3.14
      • 练习3.15
      • 练习3.16
      • 练习3.17
      • 练习3.18
      • 练习3.19
      • 练习3.20

练习3.11

下面的范围for语句合法吗?如果合法,c的类型是什么?

const string s = "Keep out!";
for(auto &c : s){ /* ... */ }

要根据for循环中的代码来看是否合法,c是string 对象中字符的引用,s是常量。因此如果for循环中的代码重新给c赋值就会非法,如果不改变c的值,那么合法。

练习3.12

下列vector对象的定义有不正确的吗?如果有,请指出来。对于正确的,描述其执行结果;对于不正确的,说明其错误的原因。

vector> ivec;         // 在C++11当中合法
vector svec = ivec;       // 不合法,类型不一样
vector svec(10, "null");  // 合法

练习3.13

下列的vector对象各包含多少个元素?这些元素的值分别是多少?

vector v1;         // size:0,  no values.
vector v2(10);     // size:10, value:0
vector v3(10, 42); // size:10, value:42
vector v4{ 10 };     // size:1,  value:10
vector v5{ 10, 42 }; // size:2,  value:10, 42
vector v6{ 10 };  // size:10, value:""
vector v7{ 10, "hi" };  // size:10, value:"hi"

练习3.14

编写一段程序,用cin读入一组整数并把它们存入一个vector对象。

#include 
#include 
#include 
#include using std::cin;
using std::cout;
using std::endl;
using std::vector;int main()
{vector v;int i;while (cin >> i){v.push_back(i);}return 0;
}

练习3.15

改写上题程序,不过这次读入的是字符串。

#include 
#include 
#include 
#include using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{vector v;string i;while (cin >> i){v.push_back(i);}return 0;
}

练习3.16

编写一段程序,把练习3.13中vector对象的容量和具体内容输出出来

#include 
#include 
#include 
#include using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{vector v1;         // size:0,  no values.vector v2(10);     // size:10, value:0vector v3(10, 42); // size:10, value:42vector v4{ 10 };     // size:1,  value:10vector v5{ 10, 42 }; // size:2,  value:10, 42vector v6{ 10 };  // size:10, value:""vector v7{ 10, "hi" };  // size:10, value:"hi"cout << "v1 size :" << v1.size() << endl;cout << "v2 size :" << v2.size() << endl;cout << "v3 size :" << v3.size() << endl;cout << "v4 size :" << v4.size() << endl;cout << "v5 size :" << v5.size() << endl;cout << "v6 size :" << v6.size() << endl;cout << "v7 size :" << v7.size() << endl;cout << "v1 content: ";for (auto i : v1){cout << i << " , ";}cout << endl;cout << "v2 content: ";for (auto i : v2){cout << i << " , ";}cout << endl;cout << "v3 content: ";for (auto i : v3){cout << i << " , ";}cout << endl;cout << "v4 content: ";for (auto i : v4){cout << i << " , ";}cout << endl;cout << "v5 content: ";for (auto i : v5){cout << i << " , ";}cout << endl;cout << "v6 content: ";for (auto i : v6){cout << i << " , ";}cout << endl;cout << "v7 content: ";for (auto i : v7){cout << i << " , ";}cout << endl;return 0;
}

练习3.17

从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改为大写形式。输出改变后的结果,每个词占一行。

#include 
#include 
#include 
#include using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;int main()
{vector v;string s;while (cin >> s){v.push_back(s);}for (auto &str : v){for (auto &c : str){c = toupper(c);}}for (auto i : v){cout << i << endl;}return 0;
}

练习3.18

下面的程序合法吗?如果不合法,你准备如何修改?

vector ivec;
ivec[0] = 42;

不合法。应改为:

ivec.push_back(42);

练习3.19

如果想定义一个含有10个元素的vector对象,所有元素的值都是42,请例举三种不同的实现方法,哪种方式更好呢?

如下三种:

vector ivec1(10, 42);
vector ivec2{ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 };
vector ivec3;
for (int i = 0; i < 10; ++i)ivec3.push_back(42);

第一种方式最好。

练习3.20

读入一组整数并把他们存入一个vector对象,将每对相邻整数的和输出出来。改写你的程序,这次要求先输出第一个和最后一个元素的和,接着输入第二个和倒数第二个元素的和,以此类推。

#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 (int i = 0; i < ivec.size() - 1; ++i){cout << ivec[i] + ivec[i + 1] << endl;}//---------------------------------cout << "---------------------------------" << endl;int m = 0;int n = ivec.size() - 1;while (m < n){cout << ivec[m] + ivec[n] << endl;++m;--n;}return 0;
}

相关内容

热门资讯

原创 山... 我国的计划生育政策,开始于七八十年代,到2015年12月31之前是第一阶段。在这个阶段,计划生育的核...
海关律师、走私辩护律师邵丹:走... 近日,南京海关查获一起走私卷烟进境案。 某日,南京海关所属无锡海关关员在对入境旅客携带的行李物品监管...
吕梁:《关于印发规范行政执法裁... 来源:吕梁市人民政府办公室
不经意一瞥,广西一保洁大姐意外... 在南宁市江南区一处绿化带上,保洁大姐不经意的一瞥,竟发现了一株珍稀的无叶美冠兰。据悉,无叶美冠兰是腐...
避免与美国在防务上过度捆绑?泰... 国际在线综合报道:泰国空军3日通过社交媒体发布消息称,将从瑞典采购最新型萨博“鹰狮”(JAS-39E...
四川省第二届“法治之光法援故事... 5月29日,四川省首届法治之光法援故事影像展优秀作品现场展示暨四川省第二届“法治之光法援故事”影像征...
深蓝汽车隐私条例新增用户数据采... 6月4日上午消息,近日有网友称,在深蓝汽车被曝向车主们的车机投放广告并致歉后,深蓝汽车对用户隐私条例...
四川:出台法治督察与法律监督协... 近日,四川省检察院联合四川省司法厅出台《四川省法治督察与法律监督协作配合工作办法(试行)》(下称《工...
稳定币:一周28场电话会,香港... 【稳定币成券商关注焦点,香港《稳定币条例》推动市场新动向】“稳定币”近期成为券商分析师关注焦点。券商...