侧边栏壁纸
博主头像
编程之家 博主等级

行动起来,活在当下

  • 累计撰写 37 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

C语言程序设计:8.switch 判断语句

李航
2025-12-02 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

C语言程序设计:switch 判断语句

1. 引入

在C语言中,switch 语句是另一种常用的控制结构,它可以根据不同的输入值执行多个不同的代码块。与 if 语句相比,switch 语句特别适用于需要根据一个变量的不同值来选择多个执行路径的场景。在某些情况下,使用 switch 语句可以使代码更加简洁和清晰。

2. switch 判断语句的基本语法

switch 语句的基本结构如下:

switch (expression) {
    case constant1:
        // 当 expression 等于 constant1 时执行的代码
        break;
    case constant2:
        // 当 expression 等于 constant2 时执行的代码
        break;
    // 可以有多个 case
    default:
        // 如果没有 case 匹配,执行此部分代码
}
  • expression:可以是任何整数类型或字符类型的表达式。它的值将与 case 标签后面的常量进行比较。
  • case constant1, constant2:每个 case 后面跟一个常量值。如果 expression 的值与某个 case 的常量值相匹配,就会执行该 case 下的代码块。
  • breakbreak 语句用于跳出 switch 语句,防止程序继续执行下一个 case 块的代码。如果省略 break,程序会继续执行后续的 case 块,直到遇到 breakswitch 语句结束。
  • defaultdefault 是可选的,如果没有任何 case 匹配 expression 的值,default 部分的代码将被执行。

3. 语法 + 案例

3.1 简单的 switch 语句

我们首先来看一个简单的例子,输入一个数字,输出相应的星期几。

代码示例

#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 执行。如果输入的是 1,则输出“星期一”;输入 2 输出“星期二”,以此类推。
  • 如果输入的数字不在 1 到 7 之间,default 部分的代码将被执行,输出“无效输入”。

输出示例

请输入一个数字(1-7):3
星期三
3.2 没有 break 的情况

如果在 switch 语句的某个 case 后面没有 break,程序将继续执行下一个 case 直到遇到 breakswitch 语句结束。

代码示例

#include <stdio.h>

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

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

    return 0;
}

解释

  • 如果用户输入 1,程序会输出:
    星期一
    星期二
    星期三
    星期四
    星期五
    星期六
    星期天
    
    这是因为没有 break,所以程序会继续执行后面的 case 块,直到执行到 break 为止。

输出示例

请输入一个数字(1-7):1
星期一
星期二
星期三
星期四
星期五
星期六
星期天
3.3 使用 default 语句

default 语句用于处理当所有 case 都不匹配时的情况。它是可选的,但在某些情况下(例如需要输入范围检查时),它非常有用。

代码示例

#include <stdio.h>

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

    switch (number) {
        case 1:
            printf("数字是一\n");
            break;
        case 2:
            printf("数字是二\n");
            break;
        default:
            printf("无效数字\n");
    }

    return 0;
}

解释

  • 如果用户输入的数字是 1 或 2,程序会输出相应的提示。
  • 如果用户输入其他数字,default 部分的代码会被执行,输出“无效数字”。

输出示例

请输入一个数字:5
无效数字

4. 代码说明

  • switch 语句switch 语句用于检查一个变量的多个可能值。它通过与每个 case 的常量进行比较来选择执行的代码块。
  • case 标签case 后面的常量值,如果 switch 表达式的值与 case 常量匹配,程序会执行该 case 下的代码块。
  • break 语句break 用来退出 switch 语句,防止程序继续执行后面的 case 代码。如果省略 break,程序会从匹配的 case 开始,继续执行下一个 case 代码块,直到遇到 break
  • default 语句default 用来处理没有匹配到任何 case 的情况,它是可选的。

5. 练习题

  1. 题目:编写一个程序,输入一个数字,判断其是否为 1、2、3 中的一个,并输出相应的提示。如果不在这三个数中,输出“无效输入”。

    答案

    #include <stdio.h>
    
    int main() {
        int num;
        printf("请输入一个数字:");
        scanf("%d", &num);
    
        switch (num) {
            case 1:
                printf("输入的是1\n");
                break;
            case 2:
                printf("输入的是2\n");
                break;
            case 3:
                printf("输入的是3\n");
                break;
            default:
                printf("无效输入\n");
        }
    
        return 0;
    }
    
  2. 题目:编写一个程序,根据用户输入的数字判断四季:

    • 1-3 输出“春季”
    • 4-6 输出“夏季”
    • 7-9 输出“秋季”
    • 10-12 输出“冬季”

    答案

    #include <stdio.h>
    
    int main() {
        int month;
        printf("请输入一个月份数字:");
        scanf("%d", &month);
    
        switch (month) {
            case 1:
            case 2:
            case 3:
                printf("春季\n");
                break;
            case 4:
            case 5:
            case 6:
                printf("夏季\n");
                break;
            case 7:
            case 8:
            case 9:
                printf("秋季\n");
                break;
            case 10:
            case 11:
            case 12:
                printf("冬季\n");
                break;
            default:
                printf("无效输入\n");
        }
    
        return 0;
    }
    
  3. 题目:编写一个程序,输入一个字母,判断它是元音字母(a, e, i, o, u)还是辅音字母。

    答案

    #include <stdio.h>
    
    int main() {
        char letter;
        printf("请输入一个字母:");
        scanf("%c", &letter);
    
        switch (letter) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                printf("这是一个元音字母。\n");
                break;
            case 'A':
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                printf("这是一个元音字母。\n");
                break;
            default:
                printf("这是一个辅音字母。\n");
        }
    
        return 0;
    }
    

解释

  • 这个程序会根据用户输入的字母判断它是元音字母还是辅音字母。
  • 如果输入的是元音字母(不论大小写),则输出“这是一个元音字母”。
  • 如果输入的是其他字母,则输出“这是一个辅音字母”。

输出示例

请输入一个字母:a
这是一个元音字母。

6. 总结

switch 语句是C语言中非常有用的控制结构之一,适用于需要对一个变量的不同值进行判断并执行相应操作的场景。它可以让程序的逻辑更清晰,特别是在有多个条件分支时,比起一长串的 if-else if 语句,switch 语句显得更加简洁易懂。

  • switch 语句适用于离散值判断,常常用于处理菜单选择、命令解析等任务。
  • 在使用 switch 时,注意每个 case 后要使用 break,否则程序会继续执行下一个 case
  • default 是可选的,用于处理没有匹配的值。

通过练习 switch 语句的使用,你能够更加高效地编写有多重判断的程序。在面对多个可能的条件时,switch 语句将是你的好帮手。

希望本篇文章能够帮助你深入理解 switch 判断语句,并能灵活应用于实际的编程中!

0

评论区