c语言中的case怎么使用

发布时间:2022-11-24 09:40:31 作者:iii
来源:亿速云 阅读:1803

C语言中的case怎么使用

在C语言中,switch语句是一种多分支选择结构,用于根据变量的值执行不同的代码块。switch语句通常与case标签一起使用,以便根据变量的值跳转到相应的代码块。本文将详细介绍case在C语言中的使用方法,包括语法、注意事项以及一些实际应用示例。

1. switch语句的基本语法

switch语句的基本语法如下:

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

2. case标签的使用

2.1 基本用法

case标签用于指定switch语句中的不同分支。每个case标签后面跟着一个常量值,当expression的值与某个case标签的常量值匹配时,程序会跳转到该case标签下的代码块。

例如:

int day = 3;

switch (day) {
    case 1:
        printf("Monday\n");
        break;
    case 2:
        printf("Tuesday\n");
        break;
    case 3:
        printf("Wednesday\n");
        break;
    case 4:
        printf("Thursday\n");
        break;
    case 5:
        printf("Friday\n");
        break;
    case 6:
        printf("Saturday\n");
        break;
    case 7:
        printf("Sunday\n");
        break;
    default:
        printf("Invalid day\n");
}

在这个例子中,day的值为3,因此程序会跳转到case 3:下的代码块,输出Wednesday

2.2 case标签的常量值

case标签后面的常量值必须是整数或字符常量,不能是变量或表达式。例如:

int x = 10;
switch (x) {
    case 5 + 5:  // 合法,因为5 + 5是常量表达式
        printf("x is 10\n");
        break;
    case y:      // 非法,y是变量
        printf("x is y\n");
        break;
    default:
        printf("x is something else\n");
}

2.3 case标签的顺序

case标签的顺序可以是任意的,不一定需要按照常量值的大小顺序排列。例如:

int num = 2;

switch (num) {
    case 2:
        printf("Two\n");
        break;
    case 1:
        printf("One\n");
        break;
    case 3:
        printf("Three\n");
        break;
    default:
        printf("Other\n");
}

在这个例子中,case标签的顺序是2、1、3,但程序仍然会根据num的值正确跳转到相应的代码块。

2.4 case标签的合并

在某些情况下,多个case标签可以共享同一个代码块。例如:

char grade = 'B';

switch (grade) {
    case 'A':
    case 'B':
    case 'C':
        printf("Pass\n");
        break;
    case 'D':
    case 'F':
        printf("Fail\n");
        break;
    default:
        printf("Invalid grade\n");
}

在这个例子中,case 'A'case 'B'case 'C'共享同一个代码块,输出Pass。同样,case 'D'case 'F'共享同一个代码块,输出Fail

3. break语句的作用

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

例如:

int num = 2;

switch (num) {
    case 1:
        printf("One\n");
    case 2:
        printf("Two\n");
    case 3:
        printf("Three\n");
    default:
        printf("Other\n");
}

在这个例子中,num的值为2,因此程序会跳转到case 2:下的代码块。由于没有break语句,程序会继续执行case 3:default:下的代码块,输出:

Two
Three
Other

为了避免这种情况,通常在每个case代码块的末尾加上break语句。

4. default标签的使用

default标签是可选的,用于处理expression的值与所有case标签都不匹配的情况。如果没有default标签,且expression的值与所有case标签都不匹配,switch语句将不执行任何代码。

例如:

int num = 4;

switch (num) {
    case 1:
        printf("One\n");
        break;
    case 2:
        printf("Two\n");
        break;
    case 3:
        printf("Three\n");
        break;
    default:
        printf("Other\n");
}

在这个例子中,num的值为4,与所有case标签都不匹配,因此程序会执行default标签下的代码块,输出Other

5. switch语句的嵌套

switch语句可以嵌套使用,即在一个switch语句的case代码块中再使用另一个switch语句。例如:

int outer = 1;
int inner = 2;

switch (outer) {
    case 1:
        switch (inner) {
            case 1:
                printf("Inner One\n");
                break;
            case 2:
                printf("Inner Two\n");
                break;
            default:
                printf("Inner Other\n");
        }
        break;
    case 2:
        printf("Outer Two\n");
        break;
    default:
        printf("Outer Other\n");
}

在这个例子中,outer的值为1,因此程序会跳转到case 1:下的代码块。在这个代码块中,又有一个switch语句,inner的值为2,因此程序会跳转到case 2:下的代码块,输出Inner Two

6. switch语句的局限性

switch语句有一些局限性,需要注意:

7. 实际应用示例

7.1 简单的计算器

以下是一个简单的计算器程序,使用switch语句根据用户输入的操作符执行相应的计算:

#include <stdio.h>

int main() {
    char operator;
    double num1, num2;

    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operator);

    printf("Enter two operands: ");
    scanf("%lf %lf", &num1, &num2);

    switch (operator) {
        case '+':
            printf("%.2lf + %.2lf = %.2lf\n", num1, num2, num1 + num2);
            break;
        case '-':
            printf("%.2lf - %.2lf = %.2lf\n", num1, num2, num1 - num2);
            break;
        case '*':
            printf("%.2lf * %.2lf = %.2lf\n", num1, num2, num1 * num2);
            break;
        case '/':
            if (num2 != 0)
                printf("%.2lf / %.2lf = %.2lf\n", num1, num2, num1 / num2);
            else
                printf("Error: Division by zero\n");
            break;
        default:
            printf("Error: Invalid operator\n");
    }

    return 0;
}

7.2 根据月份输出天数

以下是一个根据月份输出天数的程序,使用switch语句处理不同月份的天数:

#include <stdio.h>

int main() {
    int month, year;

    printf("Enter month (1-12): ");
    scanf("%d", &month);

    switch (month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            printf("31 days\n");
            break;
        case 4: case 6: case 9: case 11:
            printf("30 days\n");
            break;
        case 2:
            printf("Enter year: ");
            scanf("%d", &year);
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
                printf("29 days\n");
            else
                printf("28 days\n");
            break;
        default:
            printf("Invalid month\n");
    }

    return 0;
}

8. 总结

switch语句是C语言中一种强大的多分支选择结构,case标签用于指定不同的分支。通过合理使用case标签和break语句,可以编写出清晰、简洁的代码。需要注意的是,switch语句只能用于整数或字符类型的表达式,且case标签的常量值必须是唯一的。在实际编程中,switch语句常用于处理多分支选择的情况,如菜单选择、状态机等。

推荐阅读:
  1. SQL中 CASE WHEN 使用
  2. 怎么使用mysql case语句

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

c语言 case

上一篇:vue性能优化技巧有哪些

下一篇:javascript怎么将字符串转为数组

相关阅读

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

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