5-1 板刀面还是馄炖?if 语句
本节编程练习不计算学习进度,请电脑登录imooc.com操作

板刀面还是馄炖?if 语句

宋江和两个公人听了这首歌,都酥软了。宋江又想道:“他是唱耍。”三个正在那里议论未了,只见那梢公放下橹,说道:“你这个撮鸟,两个公人,平日最会诈害做私商的人,今日却撞在老爷手里!你三个却是要吃板刀面?却是要吃馄饨?”宋江道:“家长休要取笑!怎地唤做板刀面?怎地是馄饨?”那梢公睁着眼道:“老爷和你耍甚鸟! 若还要吃板刀面时,俺有一把泼风也似快刀在这船板底下,我不消三刀五刀,我只一刀一个,都剁你三个人下水去;你若要吃馄饨时,你三个快脱了衣裳,都赤条条地跳下江里自死。”

那么请问,如何用 C++ 帮助宋江来抉择,到底是吃板刀面还是要吃馄饨?

这时候我们就需要用到 if 了,在 C++ 中,用 if 来进行多分支程序的编写,像宋江这时候就是典型的多分支结构,选板刀面,被砍,选馄炖,被推到江里。

#include <stdio.h>

int main(int argc,char **argv)
{
    bool bandaomian = true; // 板刀面
    bool hundun = false; // 馄炖

    if(bandaomian){
        // 宋江被砍
    }
    if(hundun){
        // 宋江跳江
    }

    return 0;
}

上面的程序中,我们用两个 bool 变量来作为宋江的选择。if 语句接受一个 bool 类型的变量,当这个 bool 变量为 true 的时候,程序就会进入到 if 的从句中,如果是 false,那么 if 的从句将不会执行。

但是上面的程序有一个问题,那就是当 bandaomian 和 hundun 都是 true 的时候,程序仿佛会让宋江先被砍,然后再跳江。常识告诉我们,人被砍了以后大概率是不能跳江的,那么这里就有可能会有隐藏的 Bug。

我们其实可以这样写这段代码,用一个 bool 类型来作为宋江的选择。true 表示板刀面,false 表示馄炖。在 if 判断的时候,我们还可以使用 else 来配合 if 来完成“否则”的结构。

#include <stdio.h>

int main(int argc,char **argv)
{
    bool songjiang_style = true; // 板刀面

    if(songjiang_style){
        // 宋江被砍
    }
    else {
        // 宋江跳江
    }

    return 0;
}

这样写,就不会有问题了,不是被砍就是跳江,被安排得明明白白。

在上面的案例里,可怜的宋江只有两种选择,所以用 if - else 就能很好的解决问题。但是实际生活中,我们可能要面临更多的分之结构,这就需要我们引入 else if。

else if 也是搭配 if 使用的,在 if 为 false 的时候,else if 可以进行进一步的判断,而且 else if 可以出现多个。

我们就使用我们之前介绍过的枚举类型,来看看 else if 的使用。

#include <stdio.h>

enum Week 
{
    Mon, // 星期一
    Tue, // 星期二
    Wed, // 星期三
    Thu, // 星期四
    Fri, // 星期五
    Sat, // 星期六
    Sun, // 星期日
};

int main(int argc,char **argv)
{
    Week week = Week::Fri;

    if(week == Week::Mon) {
        printf("Mon\n");
    }
    else if(week == Week::Tue) {
        printf("Tue\n");
    }
    else if(week == Week::Wed) {
        printf("Wed\n");
    }
    else if(week == Week::Thu) {
        printf("Thu\n");
    }
    else if(week == Week::Fri) {
        printf("Fri\n");
    }
    else if(week == Week::Sat) {
        printf("Sat\n");
    }
    else{
        printf("Sun\n");
    }

    return 0;
}

任务

  1.  
下一节