【C++Primer】第五版【学习笔记】习题解答第三章

ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考。

作者:cosefy

Date: 2020/1/10

第三章:字符串,向量和数组

练习3.2:

#include<iostream>
#include<string>
using std::string;
using std::cout;
using std::cin;
using std::endl;
int main()
{
string line;
//while (cin >> line) //每次输入一个词
while (getline(cin,line)) //每次输入一行
if (!line.empty())
cout << line << endl;
return 0;
}

练习3.3:

string的输入从字符开始,直到遇到空白停止;而getline遇到空白不停止,遇到回车停止。

练习3.4:

实现:比较输入的两个字符串是否等长,如果不等长,输出长度较大的那个字符串。

#include<iostream>
#include<string> using namespace std; int main()
{
string l1, l2;
cin >> l1 >> l2;
if (l1 == l2)
cout << "字符串相等" << endl;
else
if (l1.size() > l2.size())
cout << l1 << endl;
else if(l1.size() < l2.size())
cout << l2 << endl;
else
cout << "长度相等" << endl;
return 0;
}

练习3.5:

int main()
{
string l1, l2;
while (cin >> l2)
l1 = l1 + l2 + " ";
cout << l1 << endl;
return 0;
}

练习3.6:

实现:使用for语句,将字符串内的所有字符用X代替.

#include<iostream>
#include<string>
#include<ctype.h> using namespace std; int main()
{
string s;
getline(cin,s);
for (auto &c : s)
if (isalpha(c))
c = 'X';
cout << s << endl;
return 0;
}

练习3.8:

for循环更好,形式更加简洁。

练习3.9:

不合法,因为字符串s没有初始化,直接访问第一个字符会发生未知错误。

练习3.10:

实现:读入一行含标点符号的字符串,将标点符号删除后输出剩余部分

#include<iostream>
#include<string>
#include<ctype.h> using namespace std; int main()
{
string s,s1;
getline(cin, s);
for (auto& c : s)
if (!ispunct(c))
s1 = s1 + c;
cout << s1<<endl;
return 0;
}

练习3.12:

  • a正确
  • b错误,sevc是string类型,ivec是int型,类型不匹配。
  • c错误,应该用花括号来处理。

练习3.13:

  • v1:一个元素,空值
  • v2:10个元素都为0
  • v3:10个元素都为42
  • v4:一个元素,值为10
  • v5:两个元素,分别为10,42
  • v6:10个元素,都为空字符串
  • v7:10个元素,都为"hi"

练习3.14:

实现:用cin读入一组整数,并把它们存入一个vector对象

#include<iostream>
#include<string>
#include<vector> using namespace std; int main()
{
vector<int> invc;
int a;
while (cin >> a)
invc.push_back(a);
return 0;
}

练习3.17:

实现:cin读入一组词,把它们存入一个vector对象,然后设法把所有词改为大写形式,每个词占一行。

#include<iostream>
#include<string>
#include<vector> using namespace std; int main()
{
vector<string> vctr;
string s;
decltype(vctr.size()) index = 0;
while (cin >> s)
{
for (auto& c : s)
c = toupper(c);
vctr.push_back(s);
cout << vctr[index] << endl;
index += 1;
}
return 0;
}

练习3.18:

不合法,vector对象的下标只能用来访问已存在的元素,而不能用来添加元素。

可以用ivec.push_back()函数来添加。

练习3.19:

vector<int> v1(10,42)   //第一种
vector<int>v1={42,42,42,42,42,42,42,42,42,42} //第二种
vector<int>v2; //第三种
for(int decltype(v1.size()) i=0; i!=10;i++)
v1.push_back(42);

练习3.20:

实现:读入一组整数到vrctor对象中,要求先输出第一个和最后一个整数的和,然后输出第二个和倒数第二个整数的和,以此类推。

#include<iostream>
#include<string>
#include<vector> using namespace std; int main()
{
vector<int>v1;
int value;
while (cin >> value)
v1.push_back(value);
for (decltype(v1.size())i = 0; i <= v1.size() / 2; i++)
if (v1.size() % 2 != 0 && i == v1.size() / 2)
cout << v1[i] << endl;
else
cout << v1[i]+v1[v1.size()-1-i] << endl; return 0;
}

练习3.22:

实现:把text的第一部分改为大写,然后输出。

#include<iostream>
#include<string>
#include<ctype.h> using namespace std; int main()
{
string text ("hello world");
for (auto it = text.begin(); it != text.end() && !isspace(*it); ++it)
*it = toupper(*it);
cout << text << endl;
return 0;
}

练习3.23:

实现:创建一个含有10个整数的vector对象,用迭代器将所有元素的值变为原来的两倍,最后输出vector对象的内容。

#include<iostream>
#include<string>
#include<vector> using namespace std; int main()
{
vector<int>v1;
int t = 0;
for (unsigned i = 0; i != 10; i++)
{
cin >> t;
v1.push_back(t); //创建含有10个整数的vector对象
}
for (auto it = v1.begin(); it != v1.end(); it++)
{
*it = *it * *it; //用迭代器处理
cout << *it<<" ";
}
return 0;
}

练习3.28:

函数体内的string型数组sa2与函数体内的string型数组sa,元素都是空。

函数体内的int型数组ia2中的元素未初始化;函数体外的int型数组ia中的元素都是0.

练习3.35:

实现:利用指针将数组中的值置为0.

using namespace std;
int main()
{
int a[] = { 1,2,3,4,5,6 };
int* p = begin(a), * q = end(a);
while (p != q)
{
*p = 0;
cout << *p;
p++;
}
}

《C++Primer》第五版习题答案--第三章【学习笔记】的更多相关文章

  1. 《C++Primer》第五版习题答案--第六章【学习笔记】

    <C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...

  2. C++Primer第五版——习题答案目录

    目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...

  3. C++Primer第五版——习题答案详解(一)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

  4. C++Primer第五版——习题答案详解(二)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

  5. C++Primer第五版——习题答案详解(三)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

  6. C++Primer第五版——习题答案详解(四)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...

  7. C++Primer第五版——习题答案详解(五)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

  8. C++Primer第五版——习题答案详解(六)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第7章 类 练习7.1 class Sales_data { public: std:: ...

  9. C++Primer第五版——习题答案详解(七)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第8章 IO库 练习8.1 istream &iofunc(istream &a ...

随机推荐

  1. 你以为SSL是安全的吗?

    在现代的IT安全领域,很大程度上依赖SSL来保障通讯安全.但SSL是安全的吗? 在2005年,王小云证明SHA-1能在较短的时间内找到碰撞.王小云发现SHA-1的安全弱点是偶然还是必然? 就我所知,各 ...

  2. 程序员必备神器(FastStoneCapture)

    工欲善其事,必先利其器. 作为程序员,如果我们不知道如何制作动态图或者快捷录屏.录视频等,会给人一种身怀不技的感觉:好!屁话少说,接下来我会废话连篇的介绍一款神器--------那就是FastSton ...

  3. Vue中qs插件的使用

    qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库. 在项目中使用命令行工具输入:npm install qs安装完成后在需要用到的组件中:import qs from ‘qs’具体使用中 ...

  4. linux vmalloc 和 其友

    我们展示给你的下一个内存分配函数是 vmlloc, 它在虚拟内存空间分配一块连续的内存 区. 尽管这些页在物理内存中不连续 (使用一个单独的对 alloc_page 的调用来获得每个 页), 内核看它 ...

  5. 关于redux和react-redux使用combinereducers之后的问题

    最近用react写项目的时候,开始复习之前学过的redux,记录一下一些坑,以防忘记 我现在的redux目录下有这么些东西 首先是index.js import { createStore } fro ...

  6. 【2016常州一中夏令营Day5】

    小 W 拼图[问题描述]小 W 和小 M 一起玩拼图游戏啦~小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选K 条边,使得任意两点间最多有一条路径,并且选择 ...

  7. Linux普通用户执行特定的命令配置

    最近处理了一个二级CASE,驻场运维的初级工程师安装软件的时候执行了yum update,导致用户生产系统的glibc也升级了,使得用户的生产调度软件无法使用.研究了两三天,最靠谱的做法如下: Ste ...

  8. 防火墙TCP的单向控制

    网络拓扑: 如上图所示,防火墙分为external/internal/dmz三个安全zone,其中10.133.1.100/32为dmz区的一台squid缓存服务器,10.158.1.10/32,10 ...

  9. tjoi2019题解

    t1:矩阵快速幂 t2:裸的平衡树 splay比treap代码长太多 常数大一倍 没加输优直接t了 还要特判n=1(我的splay删除的时候会遇到问题) t3: 很显然是容斥 然后对于$A+B+C+D ...

  10. Java中的选择结构

    1.if选择结构 if选择结构是根据条件判断之后再做处理的一种语法结构 语法: if(条件){ 代码块 //条件成立之后要执行的代码,可以是一条语句,也可以是一组语句 } if后小括号里的条件是一个表 ...