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

c语言case语句的用法(附带示例)

在C语言中,case 语句是 switch 语句的重要组成部分,用于处理多分支条件结构,让我们可以根据一个表达式的值执行不同的代码块。
 

switch-case 语句的基本结构如下:

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

expression 是要被评估的表达式,通常是一个变量或一个计算结果。每个 case 后面跟着一个常量值,当 expression 的值与某个 case 的常量值匹配时,对应的代码块就会被执行。
 

case 语句有几个重要特点:

1. 常量值唯一性:每个 case 后面的常量值必须是唯一的,不能重复。

2. 数据类型限制:case 常量必须是整数类型(包括字符型,因为字符在C语言中本质上是整数)。

3. 执行流程:一旦匹配到某个 case,程序会执行该 case 下的代码,并继续执行后续所有 case 的代码,直到遇到 break 语句或 switch 语句结束。

4. break 的重要性:通常在每个 case 的末尾都会加上 break 语句,以防止执行流程“落空”到下一个 case。
 

让我们通过一个简单的例子来说明 case 语句的用法:

#include <stdio.h>

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

    switch (grade) {
        case 'A':
            printf("优秀!你的成绩在 90-100 分之间。\n");
            break;
        case 'B':
            printf("良好!你的成绩在 80-89 分之间。\n");
            break;
        case 'C':
            printf("一般!你的成绩在 70-79 分之间。\n");
            break;
        case 'D':
            printf("及格!你的成绩在 60-69 分之间。\n");
            break;
        case 'F':
            printf("不及格!你的成绩低于 60 分。\n");
            break;
        default:
            printf("无效的成绩等级!\n");
    }

    return 0;
}

在这个例子中,我们根据用户输入的成绩等级(A、B、C、D 或 F)来给出相应的评价。每个 case 对应一个等级,并且在每个 case 的末尾都有一个 break 语句,以确保只执行匹配的 case 代码块。


case 语句还有一些比较高级的用法,比如:

1) 多个 case 共用一个代码块

有时,我们可能希望多个 case 执行相同的代码,这时可以将这些 case 放在一起,共用一个代码块:

switch (day) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("周末\n");
        break;
    default:
        printf("无效的日期\n");
}

2) 省略 break 语句

虽然通常建议在每个 case 后使用 break,但有时我们可能故意省略 break 来实现特定的逻辑:

switch (month) {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        days = 31;
        break;
    case 4: case 6: case 9: case 11:
        days = 30;
        break;
    case 2:
        days = (is_leap_year) ? 29 : 28;
        break;
    default:
        printf("无效的月份\n");
        days = 0;
}

3) 在 case 中声明变量

如果需要在 case 中声明变量,应该将整个 case 的代码块用花括号{ }括起来:

switch (option) {
    case 1: {
        int temp = 10;
        printf("选项 1:temp = %d\n", temp);
        break;
    }
    case 2: {
        float result = 3.14;
        printf("选项 2:result = %.2f\n", result);
        break;
    }
    default:
        printf("无效选项\n");
}

总结

在处理多个离散值的情况时,switch-case 结构通常比多个 if-else 语句更加简洁和高效,但是在使用 case 语句请,有以下几点需要注意:

相关文章