首页 > 编程笔记 > C语言笔记

C语言switch case用法举例

C语言中的 switch case 语句是一种强大的控制流结构,它允许我们根据一个表达式的值执行不同的代码块。这种结构特别适合处理多个可能的条件,比起使用多个 if else 语句,switch case 通常更加清晰和高效。
 

switch case 语句的基本语法如下:

switch (expression) {
    case constant1:
        // 代码块 1
        break;
    case constant2:
        // 代码块 2
        break;
    // 更多 case
    default:
        // 默认代码块
}

让我们通过一个简单的例子来理解 switch case 的用法。假设我们要根据用户输入的数字(1-7)来输出对应的星期几:

#include <stdio.h>

int main() {
    int day;
    printf("请输入一个数字 (1-7): ");
    scanf("%d", &day);

    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期日\n");
            break;
        default:
            printf("无效的输入!请输入 1-7 之间的数字。\n");
    }

    return 0;
}

在这个例子中,我们使用 switch 语句根据用户输入的数字选择相应的 case,每个 case 后面跟着一个常量值,当 switch 表达式的值与某个 case 的常量相匹配时,就会执行该 case 下的代码。


值得注意的是,每个 case 后面都有一个 break 语句。break 语句的作用是跳出 switch 结构,防止程序继续执行下一个 case。如果我们忘记了 break,程序就会继续执行下一个 case,这种情况称为 "fall through"。


default 子句是可选的,它用于处理所有 case 都不匹配的情况。在我们的例子中,如果用户输入的不是 1-7 之间的数字,就会执行 default 子句。


让我们看一个稍微复杂一点的例子,展示如何利用 switch case 的 "fall through" 特性:

#include <stdio.h>

int main() {
    char grade;
    printf("请输入你的成绩 (A, B, C, D 或 F): ");
    scanf(" %c", &grade);

    switch (grade) {
        case 'A':
        case 'a':
            printf("优秀!\n");
            break;
        case 'B':
        case 'b':
            printf("良好!\n");
            break;
        case 'C':
        case 'c':
            printf("中等。\n");
            break;
        case 'D':
        case 'd':
            printf("及格。\n");
            break;
        case 'F':
        case 'f':
            printf("不及格。\n");
            break;
        default:
            printf("无效的成绩!\n");
    }

    return 0;
}

在这个例子中,我们利用了 "fall through" 特性来处理大小写字母,例如,'A' 和 'a' 都会执行相同的代码块。这是因为 'A' 的 case 没有 break 语句,所以程序会继续执行下一个 case('a')的代码。


switch case 语句在处理多个离散值时非常有用,尤其是当这些值是整数或字符时。然而,它也有一些限制:


尽管有这些限制,switch case 仍然是一个非常有用的控制结构,能够使代码更加清晰和易于理解。在处理多个条件时,它通常比一连串的 if else 语句更加高效和易读。


声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。