c++第三十天
P154~p159:
语句
1、通常情况下顺序执行。
2、C++提供一组控制流(flow-of-control)语句以支持更复杂的执行路径。
3、空语句的作用:语法上需要一条语句,但是逻辑上不需要。
while(val <= 10) { ; // 空语句 }
注意:使用空语句时加上注释,提高可读性。
4、复合语句的作用:语法上需要一条语句,但是逻辑上需要多条语句。
ps:复合语句也被叫做块(block),一个块就是一个作用域。
语句作用域
if语句
1、C++规定:else与离它最近的尚未匹配的if匹配。
练习 5.1
见上文
练习 5.2
见上文
练习 5.3
可读性降低。
#include<iostream> int main() { int sum = 0, val = 1; while(val <= 10) sum += val, ++val; std::cout << sum << std::endl; return 0; }
练习 5.4
a iter没有初始化
b status应该定义在语句外部
练习 5.5
#include<iostream> #include<vector> #include<string> using std::vector; using std::string; int main() { const vector<string> scores = {"f", "d", "c", "b", "a", "a++"}; string lettergrade; int grade; std::cin >> grade; if (grade < 60) { lettergrade = scores[0]; // vector支持下标访问 } else { lettergrade = scores[(grade - 50)/10]; if (grade != 100) { if (grade % 10 > 7) { lettergrade += '+'; } else if (grade % 10 < 3) { lettergrade += '-'; } } } std::cout << lettergrade << std::endl; return 0; }
练习 5.6
#include<iostream> #include<vector> #include<string> using std::vector; using std::string; int main() { const vector<string> scores = {"f", "d", "c", "b", "a", "a++"}; string lettergrade; int grade; std::cin >> grade; lettergrade = (grade < 60) ? scores[0] : (grade == 100) ? scores[(grade - 50)/10] : (grade % 10 > 7) ? scores[(grade - 50)/10] + "+" : (grade % 10 < 3) ? scores[(grade - 50)/10] + "-" : scores[(grade - 50)/10]; std::cout << lettergrade << std::endl; return 0; }
练习 5.7
a 少了分号
b 缺少花括号
c ival要在括号外面定义
d ival未定义。(。。。)
练习 5.8
书上有。else与离它最近的尚未匹配的if匹配。