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匹配。

posted @ 2017-03-10 14:03  xkfx  阅读(141)  评论(0编辑  收藏  举报