Skip to content

2.3.5 分支结构

2.3.5 分支结构

分支结构就是指,程序运行到此处会发生分支 根据当前满足的条件,我们进入对应的分支

举个例子,如果我期末考试所有科目考了100分绩点4.0直接保研浙大计算机,那么我爹肯定会狠狠表扬我一番;但如果我所有科目考了60分绩点1.0,我爹肯定就直接被我气笑了

再通俗一点,旮旯给木(galgame)总玩过吧 你选不同的选项就会进入不同的结局

好了,下面我们介绍C语言两种实现分支结构的方法,最后再比较一下他们的优缺点

if语句

if语句的句式如下 if (条件1) { 代码1 } else if(条件2) { 代码2 } else { 代码3 }

其中,else if和else都不是必须写的,但一个if语句一定要有if✍✍✍

下面我解释一下else if和else是干什么的 else if,就是当if的条件不满足时,进而判断是否满足else if所对应的条件 else,就是if和全部else if的条件都不满足时,执行else中的代码4

一个if语句最多有一个if、一个else,但是else if可以有很多个

示例程序(根据分数输出评级)

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
    int score;
    scanf("%d", &score);

    if (score >= 90)
    {
        printf("A");
    }
    else if (score >= 80 && score < 90)
    {
        printf("B");
    }
    else if (score >= 70 && score < 80)
    {
        printf("C");
    }
    else
    {
        printf("D");
    }

    return 0;
}

switch语句

switch语句的句式如下

switch(判断的对象) { case 取值情况1: { 代码1 } case 取值情况2: { 代码2 }

...

default: { 代码n } }

可能看上去有点抽象,我来解释一下什么意思 比如我们的分支是通过变量a的取值决定的,那么第一行就写switch(a) 之后我们打一个大括号,表示语句范围 接下来就是case 取值情况1: 比如我要写一个a == 5就执行的情况 那就是 case 5: { 代码 break; }

而default就是在除去我们写出的情况以外的所有情况下执行

顺带一提,我在上面写了一个break;

这个 break; 会直接跳出整个 switch 语句,不会执行下面的代码。

是的,如果不写 break; 的话,下面其他 case 的代码都会被执行的。

switch语句主要适用于结果有限且取值固定的情况

示例程序

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
    int score = 90;
    scanf("%d", &score);

    switch (score / 10)
    {
    case 9:
    {
        printf("A\n");
        break;
    }
    case 8:
    {
        printf("B\n");
        break;
    }
    case 7:
    {
        printf("C\n");
        break;
    }
    default:
    {
        printf("D\n");
        break;

    }
    }


    return 0;
}