c++第三十天

时间:2024-06-10 21:03:20

P154~p159:
语句
1、通常情况下顺序执行。

2、C++提供一组控制流(flow-of-control)语句以支持更复杂的执行路径。

3、空语句的作用:语法上需要一条语句,但是逻辑上不需要。

    while(val <= ) {
; // 空语句
}

注意:使用空语句时加上注释,提高可读性。

4、复合语句的作用:语法上需要一条语句,但是逻辑上需要多条语句。

ps:复合语句也被叫做块(block),一个块就是一个作用域

语句作用域

if语句
1、C++规定:else与离它最近的尚未匹配的if匹配。

练习 5.1
见上文

练习 5.2
见上文

练习 5.3
可读性降低。

#include<iostream>
int main()
{
int sum = , val = ;
while(val <= ) sum += val, ++val;
std::cout << sum << std::endl;
return ;
}

练习 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 < ) {
lettergrade = scores[]; // vector支持下标访问
} else {
lettergrade = scores[(grade - )/];
if (grade != ) {
if (grade % > ) {
lettergrade += '+';
} else if (grade % < ) {
lettergrade += '-';
}
}
}
std::cout << lettergrade << std::endl;
return ;
}

练习 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 < ) ? scores[] : (grade == ) ? scores[(grade - )/] : (grade % > ) ? scores[(grade - )/] + "+" : (grade % < ) ? scores[(grade - )/] + "-" : scores[(grade - )/];
std::cout << lettergrade << std::endl;
return ;
}

练习 5.7
a 少了分号
b 缺少花括号
c ival要在括号外面定义
d ival未定义。(。。。)

练习 5.8
书上有。else与离它最近的尚未匹配的if匹配。