C语言中switch语句怎么使用

发布时间:2022-07-27 09:23:17 作者:iii
来源:亿速云 阅读:203

C语言中switch语句怎么使用

在C语言中,switch语句是一种多分支选择结构,用于根据变量的值执行不同的代码块。相比于使用多个if-else语句,switch语句在处理多个条件分支时更加简洁和高效。本文将详细介绍switch语句的语法、使用方法、注意事项以及一些常见的应用场景。

1. switch语句的基本语法

switch语句的基本语法如下:

switch (expression) {
    case constant1:
        // 当expression的值等于constant1时执行的代码
        break;
    case constant2:
        // 当expression的值等于constant2时执行的代码
        break;
    // 可以有任意数量的case语句
    default:
        // 当expression的值不匹配任何case时执行的代码
        break;
}

1.1 expression

expression是一个表达式,通常是一个整数或字符类型的变量或常量。switch语句会根据expression的值来决定执行哪个case分支。

1.2 case语句

每个case语句后面跟着一个常量值(constant1, constant2, …),当expression的值与某个case后面的常量值相等时,程序会执行该case语句后的代码块。

1.3 break语句

break语句用于终止switch语句的执行。如果没有break语句,程序会继续执行后续的case语句,直到遇到breakswitch语句结束。这种现象称为“贯穿”(fall-through)。

1.4 default语句

default语句是可选的,当expression的值不匹配任何case语句时,程序会执行default语句后的代码块。default语句通常放在switch语句的最后,但也可以放在其他位置。

2. switch语句的使用示例

2.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");
            break;
    }

    return 0;
}

在这个示例中,程序会根据用户输入的数字输出对应的星期几。如果输入的数字不在1到7之间,程序会输出提示信息。

2.2 break语句的作用

break语句在switch语句中非常重要,它用于防止“贯穿”现象的发生。以下是一个没有使用break语句的示例:

#include <stdio.h>

int main() {
    int day = 2;

    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");
        default:
            printf("输入的数字无效,请输入1-7之间的数字。\n");
    }

    return 0;
}

在这个示例中,由于没有使用break语句,程序会从匹配的case语句开始,一直执行到switch语句结束。输出结果如下:

星期二
星期三
星期四
星期五
星期六
星期日
输入的数字无效,请输入1-7之间的数字。

为了避免这种情况,通常在每个case语句后都要加上break语句。

2.3 default语句的使用

default语句用于处理expression的值不匹配任何case语句的情况。以下是一个使用default语句的示例:

#include <stdio.h>

int main() {
    char grade = 'B';

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

    return 0;
}

在这个示例中,如果grade的值不是ABCDF,程序会输出“无效的成绩”。

3. switch语句的注意事项

3.1 expression的类型

switch语句中的expression必须是整数类型(如intchar等)或枚举类型。浮点数、字符串等类型不能用于switch语句。

3.2 case常量的唯一性

每个case语句后的常量值必须是唯一的,不能有重复。否则,编译器会报错。

3.3 case常量的类型

case语句后的常量值必须与expression的类型兼容。例如,如果expressionint类型,case语句后的常量值也必须是int类型。

3.4 default语句的位置

default语句可以放在switch语句的任何位置,但通常放在最后。如果default语句放在中间或开头,程序仍然会按照顺序执行。

3.5 switch语句的嵌套

switch语句可以嵌套使用,即在case语句中再使用switch语句。以下是一个嵌套switch语句的示例:

#include <stdio.h>

int main() {
    int outer = 1;
    int inner = 2;

    switch (outer) {
        case 1:
            printf("外层switch的case 1\n");
            switch (inner) {
                case 1:
                    printf("内层switch的case 1\n");
                    break;
                case 2:
                    printf("内层switch的case 2\n");
                    break;
                default:
                    printf("内层switch的default\n");
                    break;
            }
            break;
        case 2:
            printf("外层switch的case 2\n");
            break;
        default:
            printf("外层switch的default\n");
            break;
    }

    return 0;
}

在这个示例中,外层switch语句根据outer的值选择执行内层switch语句。

4. switch语句的常见应用场景

4.1 菜单选择

switch语句常用于实现菜单选择功能。以下是一个简单的菜单选择示例:

#include <stdio.h>

int main() {
    int choice;

    printf("请选择操作:\n");
    printf("1. 添加记录\n");
    printf("2. 删除记录\n");
    printf("3. 修改记录\n");
    printf("4. 查询记录\n");
    printf("请输入选项:");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            printf("执行添加记录操作\n");
            break;
        case 2:
            printf("执行删除记录操作\n");
            break;
        case 3:
            printf("执行修改记录操作\n");
            break;
        case 4:
            printf("执行查询记录操作\n");
            break;
        default:
            printf("无效的选项\n");
            break;
    }

    return 0;
}

在这个示例中,程序根据用户输入的选项执行相应的操作。

4.2 状态机

switch语句常用于实现状态机。以下是一个简单的状态机示例:

#include <stdio.h>

typedef enum {
    STATE_IDLE,
    STATE_RUNNING,
    STATE_PAUSED,
    STATE_STOPPED
} State;

int main() {
    State current_state = STATE_IDLE;
    int input;

    while (1) {
        printf("当前状态:");
        switch (current_state) {
            case STATE_IDLE:
                printf("空闲\n");
                break;
            case STATE_RUNNING:
                printf("运行中\n");
                break;
            case STATE_PAUSED:
                printf("暂停\n");
                break;
            case STATE_STOPPED:
                printf("停止\n");
                break;
        }

        printf("请输入操作(1: 开始, 2: 暂停, 3: 停止, 4: 退出):");
        scanf("%d", &input);

        switch (input) {
            case 1:
                if (current_state == STATE_IDLE || current_state == STATE_PAUSED) {
                    current_state = STATE_RUNNING;
                } else {
                    printf("无效操作\n");
                }
                break;
            case 2:
                if (current_state == STATE_RUNNING) {
                    current_state = STATE_PAUSED;
                } else {
                    printf("无效操作\n");
                }
                break;
            case 3:
                if (current_state == STATE_RUNNING || current_state == STATE_PAUSED) {
                    current_state = STATE_STOPPED;
                } else {
                    printf("无效操作\n");
                }
                break;
            case 4:
                printf("退出程序\n");
                return 0;
            default:
                printf("无效操作\n");
                break;
        }
    }

    return 0;
}

在这个示例中,程序根据当前状态和用户输入的操作来更新状态。

5. 总结

switch语句是C语言中一种非常实用的多分支选择结构,适用于处理多个条件分支的情况。通过合理使用switch语句,可以使代码更加简洁和高效。在使用switch语句时,需要注意expression的类型、case常量的唯一性、break语句的使用以及default语句的位置等问题。掌握switch语句的使用方法,可以帮助我们更好地编写C语言程序。

推荐阅读:
  1. 如何使用JavaScript中Switch语句
  2. switch语句如何使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言 switch

上一篇:怎么使用nginx实现动静分离

下一篇:springboot通过spel结合aop实现动态传参的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》