首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言分支语句(3)

C语言分支语句(3)

作者头像
木井巳
发布2025-12-16 09:14:26
发布2025-12-16 09:14:26
1510
举报

5. switch语句

除了 if 语句,C语言还提供了 switch 语句来实现分支结构。

switch语句是一种特殊形式的 if...else... 语句,用于判断条件有多种结果的情况。它把多重的 else...if... 改成更易用、可读性更好的形式。

代码语言:javascript
复制
switch( 表达式 )
{
    case 值1:
        语句1;
    case 值2:
        语句2;
    ...
    default:
        语句3;
}

switch语句会根据 表达式 的不同值执行相应的case分支;如果都没有对应的情况,就执行 default分支。并且switch语句中并没有严格要求case分支和default分支的前后顺序。

!注意:

  1. switch 后的 表达式 必须是整型表达式
  2. case 后的值必须是整形常量表达式
5.1 if语句和switch语句的对比

练习:输入任意⼀个整数值,计算除3之后的余数

代码语言:javascript
复制
// 使用if语句
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    if(n % 3 == 0)
    printf("整除,余数为0\n");
    else if(n % 3 == 1)
        printf("余数是1\n");
    else
        printf("余数是2\n");
    return 0;
}

// 使用switch语句
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    switch(n % 3)
    {
    case 0:
        printf("整除,余数为0\n");
        break;
    case 1:
        printf("余数是1\n");
        break;
    case 2:
        printf("余数是2\n");
        break;
    }
    return 0;
}

上述的代码中,我们要注意的点有:

  1. case 和后边的数字之间必须有空格。
  2. 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个 switch 语句。
5.2 switch语句中的break

如果我们把代码中的break去掉,会怎么样呢?

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    switch(n % 3)
    {
    case 0:
        printf("整除,余数为0\n");
    case 1:
        printf("余数是1\n");
    case 2:
        printf("余数是2\n");
    }
    return 0;
}

可以看到,7除以3本来余数是1,但是多了 “余数是2” 的打印。 这是为什么呢?

原因是:switch语句中的分支在没有遇到break语句之前是不会跳出switch的,而是继续往下执行。

5.3 练习:输入⼀个1~7的数字,打印对应的星期

例如:

输入:1 输出:星期⼀

输入:2 输出:星期⼆

输入:3 输出:星期三

输入:4 输出:星期四

输入:5 输出:星期五

输入:6 输出:星期六

输入:7 输出:星期天

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int day = 0;
    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;
    }
    return 0;
}

如果需求发生变化,变为:

  1. 输入1~5,输出的是“工作日”;
  2. 输入6~7,输出“休息日”。
代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("⼯作⽇\n");
        break;
    case 6:
    case 7:
        printf("休息⽇\n");
        break;
    }
    return 0;
}

以上的练习中,我们可以体会到:

应该根据实际要求决定是否需要加入break语句。

下节就是循环咯~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5. switch语句
    • 5.1 if语句和switch语句的对比
    • 5.2 switch语句中的break
    • 5.3 练习:输入⼀个1~7的数字,打印对应的星期
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档