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;
}

相关内容

热门资讯

原创 就... 【军武次位面】作者:乐乐 日前,美国“Military Watch”网站报道称,中国海军一艘“基洛”...
输球又输点!阿森纳赛后点球3-... 在刚刚结束的季前友谊赛中,阿森纳以2-3不敌比利亚雷亚尔,随后在点球大战中以3-4失利,令人意外的是...
8月1日起乌鲁木齐天山国际机场... 2025年8月1日起,新疆机场集团乌鲁木齐天山国际机场将迎来一项关键服务升级:所有国内出港航班值机手...
“我就在这儿坐着怎么了”,火车... 安全乘车,文明出行,是每一位公民应尽的责任和义务。近日,旅客李某持无座车票强占其他旅客座位,经乘警多...
黑龙江省制定出台20条政策措施... 近日,黑龙江制定出台支持高端智能农机装备产业高质量发展20条政策措施。旨在引导产学研用等各方用好国家...
债券利息收入增值税新规落地在即... 债券利息收入税收新规实施前夕,政策性银行密集发行金融债。 8月5日,中国债券信息网披露的信息显示,中...
静乐县公安局征集“六霸”及殡葬... 为深入开展群众身边不正之风和腐败问题集中整治,严厉打击“六霸”及殡葬等领域涉民生违法犯罪,现向社会各...
原创 欧... 欧洲媒体在8月5日的报道中提到,美国与欧洲似乎达成一致,准备联合打压俄罗斯石油的主要买家——中国和印...
普京与美特使聊了3小时之后,特... 来源:视觉中国 俄罗斯总统普京与美国特使威特科夫的会晤在持续近3小时后结束。 据新华社报道,俄总统助...