3.2

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 int main()
10 {
11 string line;
12 while (getline(cin, line))
13 cout << line << endl;
14 return 0;
15 }

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 int main()
10 {
11 string word;
12 while (cin >> word)
13 cout << word << endl;
14 return 0;
15 }
3.3
输入运算符:自动忽略string类对象开头的空白(即空格符、换行符、制表符等),并从第一个真正的字符开始读起,直到遇见下一处空白为止。
getline函数:从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读进来了),然后把所读的内容存入到那个 string 对象中去(不存换行符)。
3.4

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 void is_equal(string &s1, string &s2)
10 {
11 if (s1 == s2) {
12 cout << s1 << " is equal to " << s2 << endl;
13 }
14 else {
15 if (s1 < s2) cout << s1 << " is smaller than " << s2 << endl;
16 else cout << s1 << " is bigger than " << s2 << endl;
17 }
18 }
19
20 void is_same_length(string &s1, string &s2)
21 {
22 if (s1.size() == s2.size()){
23 cout << s1 << "'s length is equal to " << s2 << endl ;
24 }
25 else {
26 if (s1.size() < s2.size()) cout << s1 << "'s length is shorter than " << s2 << endl;
27 else cout << s1 << "'s length is longer than " << s2 << endl;
28 }
29 }
30
31 int main()
32 {
33 string s1, s2;
34 cin >> s1 >> s2;
35 is_equal(s1, s2);
36 is_same_length(s1, s2);
37 return 0;
38 }
3.5

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 void solve1()
10 {
11 string s1, s2 = "";
12 while (getline(cin, s1)) {
13 s2 += s1;
14 cout << s2 << endl;
15 }
16 }
17
18 void solve2()
19 {
20 string s1, s2 = "";
21 while (getline(cin, s1)) {
22 s2 = s2 + s1 + " ";
23 cout << s2 << endl;
24 }
25
26 }
27
28 int main()
29 {
30 solve1();
31 solve2();
32 return 0;
33 }
3.6

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 int main()
10 {
11 string s("Hello World!!!");
12 for (auto &i : s)
13 i = 'X';
14 cout << s << endl;
15 return 0;
16 }
3.10

1 #include <iostream>
2 #include <string>
3
4 using std::cin;
5 using std::cout;
6 using std::endl;
7 using std::string;
8
9 int main()
10 {
11 string s("Hello World!!!");
12 for (auto i : s)
13 if(!ispunct(i)) cout << i;
14 cout << endl;
15 return 0;
16 }
3.12
(a)正确,会创建一个元素类型为vector的vector对象;(c)正确,会创建一个元素类型为string的vector对象svec,sevc有10个元素,每个元素的初始值都是"null";
(b)错误,ivec的元素类型与svec不同,故不能执行拷贝初始化。
3.14

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<int> ivec;
14 int i;
15 while (cin >> i) ivec.push_back(i);
16 return 0;
17 }
3.15

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<string> ivec;
14 string s;
15 while (cin >> s) ivec.push_back(s);
16 return 0;
17 }
3.16

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<int> v1, v2(10), v3(10,42), v4{10}, v5{10, 42};
14 vector<string> v6{10}, v7{10, "hi"};
15 if (v1.empty()) cout << "v1 is empty!";
16 else for (auto i : v1) cout << i << " "; cout << endl;
17 for (auto i : v2) cout << i << " "; cout << endl;
18 for (auto i : v3) cout << i << " "; cout << endl;
19 for (auto i : v4) cout << i << " "; cout << endl;
20 for (auto i : v5) cout << i << " "; cout << endl;
21 for (auto i : v6) cout << i << " "; cout << endl;
22 for (auto i : v7) cout << i << " "; cout << endl;
23 return 0;
24 }
3.17

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <string>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::vector;
10 using std::string;
11
12 int main()
13 {
14 vector<string> svec;
15 string word;
16 while (cin >> word)
17 svec.push_back(word);
18 for (decltype(svec.size()) i = 0; i != svec.size(); i++)
19 for (int j = 0; j != svec[i].size(); j++)
20 if (islower(svec[i][j]))
21 svec[i][j] = toupper(svec[i][j]);
22 for (decltype(svec.size()) i = 0; i != svec.size(); i++)
23 cout << svec[i] << endl;
24 return 0;
25 }
3.19

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <string>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::vector;
10 using std::string;
11
12 int main()
13 {
14 vector<int> v1 = {42, 42, 42, 42, 42, 42, 42, 42, 42, 42};
15 vector<int> v2(10, 42);
16 vector<int> v3;
17 for (decltype(v3.size()) i = 0; i < 10; i++) v3.push_back(42);
18 return 0;
19 }
3.20

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <string>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::vector;
10 using std::string;
11
12 vector<int> ivec;
13
14 void solve1()
15 {
16 int flag = ivec.size() % 2;
17 if (flag == 0) {
18 for (decltype(ivec.size()) i = 0; i != ivec.size(); i = i + 2) {
19 cout << ivec[i] + ivec[i+1] << endl;
20 }
21 }
22 else {
23 for (decltype(ivec.size()) i = 0; i != ivec.size() -1; i = i + 2) {
24 cout << ivec[i] + ivec[i+1] << endl;
25 }
26 cout << ivec[ivec.size()-1] << endl;
27 }
28 }
29
30 void solve2()
31 {
32 int flag = ivec.size() % 2;
33 if (flag == 0) {
34 for (decltype(ivec.size()) i = 0; i != ivec.size() / 2; i++) {
35 cout << ivec[i] + ivec[ivec.size() - 1 - i] << endl;
36 }
37 }
38 else {
39 for (decltype(ivec.size()) i = 0; i != ivec.size() / 2; i++) {
40 cout << ivec[i] + ivec[ivec.size() - 1 - i] << endl;
41 }
42 cout << ivec[ivec.size() / 2] << endl;
43 }
44 }
45
46 int main()
47 {
48 int i;
49 while (cin >> i) ivec.push_back(i);
50 cout << "第一种情况的输出为:\n";
51 solve1();
52 cout << "第二种情况的输出为:\n";
53 solve2();
54 return 0;
55 }
3.21

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<int> v1, v2(10), v3(10,42), v4{10}, v5{10, 42};
14 vector<string> v6{10}, v7{10, "hi"};
15 if (v1.empty()) cout << "v1 is empty!";
16 else for (auto it = v1.cbegin(); it != v1.cend(); it++) cout << *it << " "; cout << endl;
17 for (auto it = v2.cbegin(); it != v2.cend(); it++) cout << *it << " "; cout << endl;
18 for (auto it = v3.cbegin(); it != v3.cend(); it++) cout << *it << " "; cout << endl;
19 for (auto it = v4.cbegin(); it != v4.cend(); it++) cout << *it << " "; cout << endl;
20 for (auto it = v5.cbegin(); it != v5.cend(); it++) cout << *it << " "; cout << endl;
21 for (auto it = v6.cbegin(); it != v6.cend(); it++) cout << *it << " "; cout << endl;
22 for (auto it = v7.cbegin(); it != v7.cend(); it++) cout << *it << " "; cout << endl;
23 return 0;
24 }
3.22

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<string> text;
14 string s;
15 while (getline(cin, s)) {
16 text.push_back(s);
17 }
18 for (auto it = text.begin(); it != text.end() && !it->empty(); it++) {
19 for (int i = 0; i < (*it).size(); i++)
20 (*it)[i] = toupper((*it)[i]);
21 }
22 for (auto it = text.begin(); it != text.end() && !it->empty(); it++) {
23 cout << *it << endl;
24 }
25 return 0;
26 }
3.23

1 #include <iostream>
2 #include <vector>
3 #include <string>
4
5 using std::cin;
6 using std::cout;
7 using std::endl;
8 using std::vector;
9 using std::string;
10
11 int main()
12 {
13 vector<int> ivec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
14 for (auto it = ivec.begin(); it != ivec.end(); it++)
15 (*it) *= 2;
16 for (auto it = ivec.begin(); it != ivec.end(); it++)
17 cout << *it << endl;
18 return 0;
19 }
3.24

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <string>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::vector;
10 using std::string;
11
12 vector<int> ivec;
13
14 void solve1()
15 {
16 int flag = ivec.size() % 2;
17 if (flag == 0) {
18 for (auto i = ivec.begin(); i != ivec.end(); i = i + 2) {
19 cout << *i + *(i+1) << endl;
20 }
21 }
22 else {
23 for (auto i = ivec.begin(); i != ivec.end() - 1; i = i + 2) {
24 cout << *i + *(i+1) << endl;
25 }
26 cout << *(ivec.end()-1) << endl;
27 }
28 }
29
30 void solve2()
31 {
32 int flag = ivec.size() % 2;
33 if (flag == 0) {
34 for (auto i = ivec.begin(); i != ivec.begin() + (ivec.end() - ivec.begin()) / 2; i++) {
35 cout << *i + *(ivec.begin() + (ivec.end() - 1 - i)) << endl;
36 }
37 }
38 else {
39 for (auto i = ivec.begin(); i != ivec.begin() + (ivec.end() - ivec.begin()) / 2; i++) {
40 cout << *i + *(ivec.begin() + (ivec.end() - 1 - i)) << endl;
41 }
42 cout << *(ivec.begin() + (ivec.end() - ivec.begin()) / 2) << endl;
43 }
44 }
45
46 int main()
47 {
48 int i;
49 while (cin >> i) ivec.push_back(i);
50 cout << "第一种情况的输出为:\n";
51 solve1();
52 cout << "第二种情况的输出为:\n";
53 solve2();
54 return 0;
55 }
3.25

#include <iostream>
#include <vector>
#include <cctype>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
vector<int> ivec(11, 0);
int i;
while (cin >> i){
auto it = ivec.begin();
it = it + i/10;
(*it)++;
}
// for (auto i : ivec)
// cout << i << endl;
return 0;
}
3.26
对于“mid = (beg + end) / 2;”,它的错误是:迭代器之间不支持加法运算。
补充:之所以使用“mid = beg + (end - beg) / 2;”而非“mid = (end - beg) / 2;”,是因为mid是迭代器,而end - beg得到的是一个int型数(距离),只有再在前面加上一个迭代器beg才能使左右类型平衡!
3.27
(a)(c)(d)非法。因为buf_size是个int型变量(不是常量表达式),所以(a)非法;因为txt_size()的返回值为int(不是constexpr),所以(c)非法;对于(d),没有空间存放空字符'\0'。
3.33
不初始化为0,各个分数段的计数值将可能不准确。
3.34
功能:使p1指向p2所指的元素。
3.35
不知道为什么我的编译器没有包含begin()和end()函数!!我就用另一种方法做了。

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6
7 using std::cin;
8 using std::cout;
9 using std::endl;
10 using std::vector;
11 using std::string;
12
13 int main()
14 {
15 int a[] = {1,2,3};
16 /*
17 int *p = begin(a);
18 int *pend = end(a);
19 while (p != pend) {
20 *p = 0;
21 p++;
22 }
23 */
24 int *p = a;
25 for (int i = 0; i < 3; i++){
26 *(p+i) = 0;
27 }
28 return 0;
29 }
3.36

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6
7 using std::cin;
8 using std::cout;
9 using std::endl;
10 using std::vector;
11 using std::string;
12
13 int main()
14 {
15 int flag = 0;
16 int a[] = {1, 2, 4};
17 int b[] = {1, 2, 3};
18 int numa = sizeof(a) / sizeof(a[0]), numb = sizeof(b) / sizeof(b[0]);
19 int *pa = a, *pb = b;
20 if (numa == numb) {
21 for(int i = 0; i < numa; i++) {
22 if (*(pa+i) != *(pb+i)){
23 flag = 2;
24 break;
25 }
26 }
27 if (flag == 0) flag = 1;
28 }
29 if (flag == 1) cout << "Equal!\n";
30 else cout << "Not equal!\n";
31 return 0;
32 }

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6
7 using std::cin;
8 using std::cout;
9 using std::endl;
10 using std::vector;
11 using std::string;
12
13 int main()
14 {
15 int flag = 0;
16 vector<int> a = {1, 2, 4};
17 vector<int> b = {1, 2, 3};
18 auto ita = a.begin();
19 vector<int>::iterator itb = b.begin();
20 if (a.size() == b.size()) {
21 for (; ita != a.end(); ita++, itb++) {
22 if (*ita != *itb) {
23 flag = 2;
24 break;
25 }
26 }
27 if (flag == 0) flag = 1;
28 }
29 if (flag == 1) cout << "Equal!\n";
30 else cout << "Not equal!\n";
31 return 0;
32 }
3.37
首先一定会打印出:h[\n]e[\n]l[\n]l[\n]o[\n],然后会打印在这些地址后的内存中的值,直到遇到'\0'。
3.38
指针是个地址,指向某个内存单元。如果两个地址相加,那将毫无意义。
3.39

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6 #include <cstring>
7
8 using std::cin;
9 using std::cout;
10 using std::endl;
11 using std::vector;
12 using std::string;
13
14 void solve1()
15 {
16 char str1[] = {'H', 'e', 'l', 'l', 'o', '\0'};
17 char str2[] = {'H', 'a', 'p', 'p', 'y', '\0'};
18 int flag = strcmp(str1, str2);
19 if (flag == 0) cout << "Equal.\n";
20 else {
21 if (flag > 0) cout << "str1 is bigger than str2.\n";
22 else cout << "str1 is smaller than str2.\n";
23 }
24 }
25
26 void solve2()
27 {
28 string s1 = "Hello", s2 = "Happy";
29 if (s1 == s2) cout << "Equal.\n";
30 else {
31 if (s1 > s2) cout << "str1 is bigger than str2.\n";
32 else cout << "str1 is smaller than str2.\n";
33 }
34 }
35
36 int main()
37 {
38 solve1();
39 solve2();
40 return 0;
41 }
3.40

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6 #include <cstring>
7
8 using std::cin;
9 using std::cout;
10 using std::endl;
11 using std::vector;
12 using std::string;
13
14 int main()
15 {
16 char str1[20] = "Hello";
17 char str2[20] = "World";
18 char str3[20];
19 strcat(str1, " ");
20 strcat(str1, str2);
21 strcat(str1, "!");
22 strcpy(str3, str1);
23 char *p = str3;
24 while (*p != '\0') {
25 cout << *p;
26 p++;
27 }
28 cout << endl;
29 return 0;
30 }
3.41

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6 #include <cstring>
7
8 using std::cin;
9 using std::cout;
10 using std::endl;
11 using std::vector;
12 using std::string;
13
14 int main()
15 {
16 int a[3] = {1, 2, 3};
17 // vector<int> ivec(begin(a), end(a));
18 vector<int> ivec(a, a+2);
19 return 0;
20 }
3.42

1 #include <iostream>
2 #include <vector>
3 #include <cctype>
4 #include <iterator>
5 #include <string>
6 #include <cstring>
7
8 using std::cin;
9 using std::cout;
10 using std::endl;
11 using std::vector;
12 using std::string;
13
14 int main()
15 {
16 int a[3], k = 0;
17 vector<int> ivec(3, 1);
18 for (auto it = ivec.begin(); it != ivec.end(); it++) {
19 a[k++] = *it;
20 }
21 return 0;
22 }
来源:https://www.cnblogs.com/xzxl/p/7624717.html
