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

c语言switch case语句例子(3个经典例子)

C语言中的 switch case 语句是一种多分支选择结构,它可以根据一个变量或表达式的不同取值,执行不同的代码块,这种结构在需要处理多个可能的情况时特别有用。相比于使用多个 if else 语句,switch case 通常更加清晰和高效。
 

switch case 语句的基本格式如下:

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

在这个结构中,expression 是要被评估的表达式,通常是一个变量或者返回整数值的表达式。每个 case 后面跟着一个常量值,如果 expression 的值与某个 case 的常量相匹配,就会执行该 case 下的代码块。default 是可选的,如果所有的 case 都不匹配,就会执行 default 下的代码块。


让我们通过一个具体的例子来深入理解 switch case 的使用:

#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;
}

在这个例子中,程序要求用户输入一个 1 到 7 之间的数字,然后使用 switch 语句来判断这个数字对应的星期几。如果用户输入的数字不在 1 到 7 之间,程序会执行 default 块中的语句,提示输入无效。


值得注意的是 break 语句的重要性。如果我们忘记在每个 case 后面加上 break,程序会继续执行下一个 case 中的语句,直到遇到 break 或者 switch 结束。这种特性有时可以用来实现多个 case 共享同一段代码的效果。例如:

#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;
}

在这个例子中,我们允许用户输入大写或小写字母来表示成绩。通过让相邻的 case 共享同一段代码,我们简化了程序结构,使其更加简洁。


switch case 语句还有一些高级用法,例如,我们可以在 case 中定义变量和使用复合语句。不过,如果要在 case 中定义变量,需要将整个 case 的内容用花括号括起来,形成一个复合语句。例如:

#include <stdio.h>

int main() {
    int choice;
    printf("请选择操作:\n1. 计算圆的面积\n2. 计算正方形的面积\n");
    scanf("%d", &choice);

    switch (choice) {
        case 1: {
            float radius, area;
            printf("请输入圆的半径:");
            scanf("%f", &radius);
            area = 3.14159 * radius * radius;
            printf("圆的面积是:%.2f\n", area);
            break;
        }
        case 2: {
            float side, area;
            printf("请输入正方形的边长:");
            scanf("%f", &side);
            area = side * side;
            printf("正方形的面积是:%.2f\n", area);
            break;
        }
        default:
            printf("无效的选择!\n");
    }

    return 0;
}

这个例子展示了如何在 switch case 中使用更复杂的逻辑,包括定义变量、进行计算和输出结果。
 

总的来说,switch case 语句是一个非常有用的控制结构,特别适合处理多选项的情况。switch case 可以使代码更加清晰、易读,并且在某些情况下比等价的 if else 结构更加高效。在实际编程中,合理使用 switch case 可以大大提高代码的可读性和维护性。

推荐阅读