• C
  • C语言多分支结构教程 多分支结构 `if - else if` 概述

  • @ 2025-3-24 12:05:00

C语言多分支结构教程

1. 多分支结构 if - else if 概述

在C语言里,if - else if 结构属于多分支选择结构,其作用是依据不同条件来执行不同的代码块。当需要对多个条件进行判断时,就能运用该结构。它会按照从上到下的顺序依次判断各个条件,一旦某个条件为真,就执行与之对应的代码块,并且不再对后续条件进行判断;若所有条件都为假,可选择性地执行 else 后的代码块。

2. 语法结构

if (条件表达式1) {
    // 当条件表达式1为真时执行的代码块
    语句块1;
} else if (条件表达式2) {
    // 当条件表达式1为假且条件表达式2为真时执行的代码块
    语句块2;
} else if (条件表达式3) {
    // 当条件表达式1和2都为假且条件表达式3为真时执行的代码块
    语句块3;
}
// 可以有更多的 else if 分支
else {
    // 当所有条件表达式都为假时执行的代码块
    语句块n;
}

3. 执行流程

  • 首先对 条件表达式1 进行求值判断。若其值为真(非零),则执行 语句块1,然后跳过后续的 else ifelse 部分,继续执行整个 if - else if 结构之后的代码。
  • 条件表达式1 的值为假(零),则接着对 条件表达式2 进行判断。若为真,则执行 语句块2,同样跳过后续的 else ifelse 部分。
  • 依此类推,按顺序依次判断各个 else if 后面的条件表达式。
  • 若所有的条件表达式都为假,且存在 else 部分,则执行 else 后面的 语句块n

4. 示例代码及详细解释

示例1:根据成绩输出等级

#include <stdio.h>

int main() {
    int score;
    // 提示用户输入成绩
    printf("请输入你的成绩(0 - 100):");
    // 从标准输入读取用户输入的成绩
    scanf("%d", &score);

    // 判断成绩是否在 90 - 100 之间
    if (score >= 90 && score <= 100) {
        // 若条件为真,输出优秀
        printf("你的成绩等级是:优秀\n");
    // 判断成绩是否在 80 - 89 之间
    } else if (score >= 80 && score < 90) {
        // 若条件为真,输出良好
        printf("你的成绩等级是:良好\n");
    // 判断成绩是否在 70 - 79 之间
    } else if (score >= 70 && score < 80) {
        // 若条件为真,输出中等
        printf("你的成绩等级是:中等\n");
    // 判断成绩是否在 60 - 69 之间
    } else if (score >= 60 && score < 70) {
        // 若条件为真,输出及格
        printf("你的成绩等级是:及格\n");
    // 判断成绩是否在 0 - 59 之间
    } else if (score >= 0 && score < 60) {
        // 若条件为真,输出不及格
        printf("你的成绩等级是:不及格\n");
    } else {
        // 若输入的成绩不在 0 - 100 范围内,输出输入无效
        printf("输入无效,请输入 0 - 100 之间的成绩。\n");
    }

    return 0;
}
  • 代码解释
    • 代码开头的 #include <stdio.h> 用于引入标准输入输出库,这样就能使用 printfscanf 函数。
    • main 函数中,先定义一个整型变量 score 来存储用户输入的成绩。
    • 借助 printf 函数提示用户输入成绩,再使用 scanf 函数读取用户输入的值并赋给 score
    • 运用 if - else if 结构对 score 进行判断,依据不同的成绩区间输出对应的等级。若输入的成绩不在 0 - 100 这个有效范围内,就执行 else 部分,提示用户输入无效。

示例2:判断一个数的正负性和是否为零

#include <stdio.h>

int main() {
    int num;
    // 提示用户输入一个整数
    printf("请输入一个整数:");
    // 从标准输入读取用户输入的整数
    scanf("%d", &num);

    // 判断 num 是否大于 0
    if (num > 0) {
        // 若条件为真,输出正数
        printf("%d 是正数。\n", num);
    // 判断 num 是否小于 0
    } else if (num < 0) {
        // 若条件为真,输出负数
        printf("%d 是负数。\n", num);
    } else {
        // 若 num 既不大于 0 也不小于 0,即 num 为 0,输出零
        printf("%d 是零。\n", num);
    }

    return 0;
}
  • 代码解释
    • 同样先引入标准输入输出库。
    • main 函数中定义整型变量 num 以存储用户输入的整数。
    • 利用 printf 提示用户输入整数,再通过 scanf 读取输入的值。
    • 通过 if - else if 结构判断 num 的正负性和是否为零,并输出相应的结果。

5. 使用注意事项

  • 条件表达式的顺序:要保证条件表达式按照合理的顺序排列,因为一旦某个条件为真,就会执行对应的代码块并跳过后续条件判断。所以通常将可能性较大或范围较小的条件放在前面。
  • 逻辑完整性:要确保所有可能的情况都被涵盖,特别是在使用 else 部分时,若遗漏某些情况可能会导致程序出现意外结果。
  • 花括号的使用:尽管当语句块只有一条语句时可以省略花括号,但为了增强代码的可读性和可维护性,建议始终使用花括号。

0 条评论

目前还没有评论...