系统环境: windows 10 1703
编译环境:Visual studio 2017
5.1
空语句是不执行任何操作的语句,空语句中只包含一个单独的分号;
当语法上需要一条语句,但逻辑上不需要的时候,会用到空语句。
5.2
块就是复合语句,指用花括号括起来的(可能为空的)语句和声明的序列。
在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句时,应该用复合语句。
5.3
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int sum = 0, val = 1;
while (val <= 10)
sum += val, ++val;
cout << "Sum of 1 to 10 inclusive is " << sum << endl;
return 0;
}
可读性降低了,没有了花括号就很难一眼看出循环体的范围。
5.4
(a) 声明语句错误,可修改为:
string::iterator iter;
while (iter != s.end()) {/*...*/}
(b) 错误,布尔变量 status 是在 while 语句的条件中定义的,在 if 条件中不能访问。可修改为:
bool status;
while (status = find(word)) {/*...*/}
if (!status) {/*...*/}
5.5
#include <iostream>
#include <vector>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::vector;
using std::string;
int main()
{
vector<string> svec = { "F", "D", "C", "B", "A", "A++" };
unsigned int grade = 0;
string final_grade = "";
cout << "Enter your grade: " << endl;
cin >> grade;
if (grade < 60)
{
final_grade = svec[0];
}
else
{
final_grade = svec[(grade - 50) / 10];
if (grade != 100)
{
if (grade % 10 > 7)
{
final_grade += '+';
}
else if (grade % 10 < 3)
{
final_grade += '-';
}
}
}
cout << final_grade << endl;
return 0;
}
5.6
#include <iostream>
#include <vector>
#include <string>
using std::cout;
using std::endl;
using std::cin;
using std::vector;
using std::string;
int main()
{
vector<string> svec = { "F", "D", "C", "B", "A", "A++" };
unsigned int grade = 0;
string final_grade = "";
cout << "Enter your grade: " << endl;
cin >> grade;
final_grade = (grade < 60) ? svec[0] : svec[(grade - 50) / 10];
final_grade += (grade == 100 || grade < 60) ? "" : ((grade % 10) > 7) ? "+" : ((grade % 10) < 3) ? "-" : "";
cout << final_grade << endl;
return 0;
}
5.7
// a
if (ival1 != ival2)
ival1 = ival2; // 末尾添加了分号
else ival1 = ival2 = 0;
// b
if (ival < minval) // 添加了花括号以标识出块
{
minval = ival;
occurs = 1;
}
// c
if (int ival = get_value()) // 添加了花括号以标识出块
{
cout << "ival = " << ival << endl;
if (!val)
cout << "ival = 0\n";
}
// d
if (ival == 0) // 将赋值变成了相等
ival = get_value();
5.8
悬垂 else 指的是,当一个 if 语句嵌套在另一个 if 语句内部时,可能出现 if 分支多于 else 分支,这时很难区分某个给定的 else 是和 哪个 if 匹配。
在 C++ 中,规定 else 与离它最近的尚未匹配的 if 匹配。
转载自原文链接, 如需删除请联系管理员。
原文链接:《C++ Primer》第五版课后习题解答_第五章(1)(01-08),转载请注明来源!