• C
  • C语言多分支结构教程

  • @ 2025-3-24 12:03:23

在C语言中,多分支结构可以让程序根据不同的条件执行不同的代码块,常见的实现方式有 if - else if - else 语句和 switch 语句。下面将分别详细介绍这两种多分支结构。

1. if - else if - else 语句

1.1 语法结构

if (表达式1) {
    语句块1;
} else if (表达式2) {
    语句块2;
} else if (表达式3) {
    语句块3;
}
// 可以有更多的 else if 分支
else {
    语句块n;
}
  • 表达式:可以是关系表达式、逻辑表达式等,用于判断条件是否成立。
  • 语句块:当对应的表达式为真(非零)时,执行该语句块。
  • 执行流程:程序首先计算 表达式1,如果为真,则执行 语句块1,然后跳过后续的 else ifelse 部分;如果 表达式1 为假,则计算 表达式2,若为真则执行 语句块2,以此类推;如果所有的 表达式 都为假,则执行 else 后的 语句块nelse 部分是可选的。

1.2 示例代码及解释

#include <stdio.h>

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

    if (score >= 90) {
        // 成绩大于等于 90 分,输出优秀
        printf("优秀\n");
    } else if (score >= 80) {
        // 成绩大于等于 80 分且小于 90 分,输出良好
        printf("良好\n");
    } else if (score >= 70) {
        // 成绩大于等于 70 分且小于 80 分,输出中等
        printf("中等\n");
    } else if (score >= 60) {
        // 成绩大于等于 60 分且小于 70 分,输出及格
        printf("及格\n");
    } else {
        // 成绩小于 60 分,输出不及格
        printf("不及格\n");
    }

    return 0;
}
  • 代码解释
    1. 首先,通过 #include <stdio.h> 引入标准输入输出库,以便使用 printfscanf 函数。
    2. main 函数中,定义一个整型变量 score 用于存储用户输入的成绩。
    3. 使用 printf 提示用户输入成绩,然后使用 scanf 读取用户输入的成绩。
    4. 通过一系列的 if - else if - else 语句,根据成绩的不同范围输出相应的评价。

2. switch 语句

2.1 语法结构

switch (表达式) {
    case 常量表达式1:
        语句块1;
        break;
    case 常量表达式2:
        语句块2;
        break;
    // 可以有更多的 case 分支
    default:
        语句块n;
}
  • 表达式:其值必须是整型或字符型。
  • 常量表达式:必须是整型常量或字符常量,且每个 case 后的常量表达式的值必须唯一。
  • break 语句:用于跳出 switch 语句。如果没有 break,程序会继续执行下一个 case 分支的语句,直到遇到 breakswitch 语句结束。
  • default 分支:是可选的,当 表达式 的值与所有 case 后的常量表达式的值都不匹配时,执行 default 后的语句块。

2.2 示例代码及解释

#include <stdio.h>

int main() {
    int day;
    // 提示用户输入一个 1 - 7 的整数
    printf("请输入一个 1 - 7 的整数: ");
    // 读取用户输入的整数
    scanf("%d", &day);

    switch (day) {
        case 1:
            // 输入为 1,输出星期一
            printf("星期一\n");
            break;
        case 2:
            // 输入为 2,输出星期二
            printf("星期二\n");
            break;
        case 3:
            // 输入为 3,输出星期三
            printf("星期三\n");
            break;
        case 4:
            // 输入为 4,输出星期四
            printf("星期四\n");
            break;
        case 5:
            // 输入为 5,输出星期五
            printf("星期五\n");
            break;
        case 6:
            // 输入为 6,输出星期六
            printf("星期六\n");
            break;
        case 7:
            // 输入为 7,输出星期日
            printf("星期日\n");
            break;
        default:
            // 输入不在 1 - 7 范围内,输出无效输入
            printf("无效输入\n");
    }

    return 0;
}
  • 代码解释
    1. 同样先引入标准输入输出库。
    2. main 函数中,定义一个整型变量 day 用于存储用户输入的整数。
    3. 使用 printf 提示用户输入一个 1 - 7 的整数,然后使用 scanf 读取用户输入的整数。
    4. 通过 switch 语句,根据 day 的值输出对应的星期几,如果输入的值不在 1 - 7 范围内,则执行 default 分支,输出“无效输入”。

3. if - else if - elseswitch 的比较

  • if - else if - else:适用于条件判断较为复杂,条件不是离散的常量值,而是基于范围或逻辑组合的情况。
  • switch:适用于条件是离散的整型或字符型常量值的情况,代码结构更清晰,执行效率可能更高。

通过掌握这两种多分支结构,你可以根据不同的需求让程序在多种情况下做出不同的响应。

0 条评论

目前还没有评论...