《C++ Primer》第五版课后习题解答_第五章(3)(15-19)
2017-09-06 22:39
495 查看
系统环境: windows 10 1703
编译环境:Visual studio 2017
5.15
(a) 变量 ix 定义在 for 循环的语句头中,因此不能在 for 循环结束继续被 if 语句使用。可以修改为
(b) for 循环中省略了 init-statement,但是应该保留分号。可以修改为
(c) expression 语句有误。可以修改为
5.16
条件不变反复执行的情况:
按步骤迭代,索引值在某个范围内变化的情况:
5.17
5.18
(a) 计算输入两个数字的和。do 之后缺少了花括号,可以修改为
5.19
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;
int main()
{
string str, str1, str2;
cout << "Please enter two strings: " << endl;
cin >> str1 >> str2;
str = (str1.size() >= str2.size()) ? str2 : str1;
for (auto a : str)
{
cout << a ;
}
cout << endl;
return 0;
}
编译环境:Visual studio 2017
5.15
(a) 变量 ix 定义在 for 循环的语句头中,因此不能在 for 循环结束继续被 if 语句使用。可以修改为
int ix; for (ix = 0; ix != sz; ++ix) {/*...*/ } if (ix != sz)
(b) for 循环中省略了 init-statement,但是应该保留分号。可以修改为
int ix; for (; ix != sz; ++ix) {/*...*/}
(c) expression 语句有误。可以修改为
for (int ix = 0; ix != sz; ++x) {/*...*/}
5.16
条件不变反复执行的情况:
#include <iostream> using std::cout; using std::endl; using std::cin; // 统计输入文本中非负数的个数 int main() { int ival = 0, Cnt = 0; while (cin >> ival) { if (ival >= 0) ++Cnt; } cout << Cnt << endl; return 0; }
#include <iostream> using std::cout; using std::endl; using std::cin; // 统计输入文本中非负数的个数 int main() { int ival = 0, Cnt = 0; for (; cin >> ival; ) { if (ival >= 0) { ++Cnt; } } cout << Cnt << endl; return 0; }
按步骤迭代,索引值在某个范围内变化的情况:
#include <iostream> using std::cout; using std::endl; using std::cin; // 计算 1 到 10 的整数之和 int main() { int sum = 0, i = 1; while (i <= 10) { sum += i; ++i; } cout << sum << endl; }
#include <iostream> using std::cout; using std::endl; using std::cin; // 计算 1 到 10 的整数之和 int main() { int sum = 0; for (int i = 1; i <= 10; ++i) { sum += i; } cout << sum << endl; return 0; }如果只能使用一种循环,我倾向于使用 while 循环,因为在不知道循环范围的情况下,for 循环将会很难使用,而 while 可以适用更多的情况。
5.17
#include <iostream> #include <vector> #include <string> using std::cout; using std::endl; using std::vector; using std::string; int main() { string result; vector<int> ival1 = { 0, 1, 1, 2 }; vector<int> ival2 = { 0, 1, 1, 2, 3, 5, 8 }; auto size1 = ival1.size(); auto size2 = ival2.size(); int size = (size1 >= size2) ? size2 : size1; // 比较两个 vector 的维度,把小的那个赋给 size for (decltype(ival1.size()) i = 0; i != size; ++i) { result = (ival1[i] == ival2[i]) ? "true" : "false"; // 比较元素,以决定将 true 或 false 赋给 result } cout << result << endl; return 0; }
5.18
(a) 计算输入两个数字的和。do 之后缺少了花括号,可以修改为
do { int v1, v2; cout << "Please enter two numbers to sum: "; if (cin >> v1 >> v2) cout << "Sum is: " << v1 + v2 << endl; } while (cin);(b) 最好不要在 while 语句里定义变量,有可能出现预料不到的错误,可以修改为
int ival = 0; do { //... } while (ival = get_response());(c) 在 do 语句块内定义的变量 ival 无法在作用域外被访问到,可以修改为
int ival = 0; do { ival = get_response(); } while (ival);
5.19
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::string;
int main()
{
string str, str1, str2;
cout << "Please enter two strings: " << endl;
cin >> str1 >> str2;
str = (str1.size() >= str2.size()) ? str2 : str1;
for (auto a : str)
{
cout << a ;
}
cout << endl;
return 0;
}
相关文章推荐
- 《C++ Primer》第五版课后习题解答_第五章(2)(09-14)
- 《C++ Primer》第五版课后习题解答_第五章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第五章(4)(20-25)
- 《C++ Primer》第五版课后习题解答_第六章(2)(08-15)
- 《C++ Primer》第五版课后习题解答_第四章(1)(01-20)
- 《C++ Primer》第五版课后习题解答_第六章(4)(27-35)
- 《C++ Primer》第五版课后习题解答_第三章(1)(01-05)
- 《C++ Primer》第五版课后习题解答_第三章(4)(30-36)
- 《C++ Primer》第五版课后习题解答_第四章(2)(21-33)
- 《C++ Primer》第五版课后习题解答_第二章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第三章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第四章(3)(34-38)
- 《C++ Primer》第五版课后习题解答_第六章(1)(01-07)
- 《C++ Primer》第五版课后习题解答_第二章(4)(30-38)
- 《C++ Primer》第五版课后习题解答_第二章(2)(09-20)
- 《C++ Primer》第五版课后习题解答_第三章(2)(06-20)
- 《C++ Primer》第五版课后习题解答_第一章(1)(01-11)
- 《C++ Primer》第五版课后习题解答_第一章(2)(12-25)
- 《C++ Primer》第五版课后习题解答_第二章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第二章(5)(39-42)