• 【C语言初阶】switch语句的基本语法



    在这里插入图片描述

    🎬 鸽芷咕个人主页

     🔥 个人专栏:《速学C语言》《数据结构篇》

    ⛺️生活的理想,就是为了理想的生活!

    前言

       🌈hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的switch语句的全面讲解!
       ⛳️预计博主这俩天会把分支语句和循环语句给彻底更新完,然后向函数出发!
       📚本期文章收录在《C语言初阶篇》,大家有兴趣可以看看呐
      ⛺️ 欢迎铁汁们 ✔️ 点赞 👍 收藏 ⭐留言 📝!

    💬 switch语句的介绍

    📌前面的一篇:《if语句的详解》
    我们已经学会了if语句那么大家来看看这种情况:

    📚 那么我们想编写一下这段程序该怎么办:

    输入1,输出星期一
    输入2,输出星期二
    输入3,输出星期三
    输入4,输出星期四
    输入5,输出星期五
    输入6,输出星期六
    输入7,输出星期日

    如果用if的多分支来实现呢?

    代码演示;

    #include 
    int main()
    {
    	int day = 0;
    	//输入
    	scanf("%d", &day);
    	if (1 == day)
    		printf("星期1\n");
    	else if (2 == day)
    		printf("星期2\n");
    	else if (3 == day)
    		printf("星期3\n");
    	else if (4 == day)
    		printf("星期4\n");
    	else if (5 == day)
    		printf("星期5\n");
    	else if (6 == day)
    		printf("星期6\n");
    	else if (7 == day)
    		printf("星期天\n");
    	else
    		printf("输入错误\n");
    
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 大家发现没,用 if...else if ...else if 的形式太复杂,所以我们C语言就有了switch这个语法形式。

    📜 switch语句:

    switch语句也是一种分支语句。常常用于多分支的情况。

    📑语法形式:

    switch(整型表达式)
    {
        case 整形常量表达式:
        语句;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    💬 switch语句的语法形式

    前面我们给大家简单介绍了一下:
    switch语句的作用和语法形式那么该怎么使用呢?

    • ⛳️ 我们按照语法写看下对不对呢?
    #include 
    int main()
    {
    	int day = 0;
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case 1:
    		printf("星期一");
    	case 2:
    		printf("星期二");
    	case 3:
    		printf("星期三");
    	case 4:
    		printf("星期四");
    	case 5:
    		printf("星期五");
    	case 6:
    		printf("星期六");
    	case 7:
    		printf("星期天");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    📚 演示结果:
    在这里插入图片描述
    📌诶大家会发现,这和我们预计的根本不一样?

    • 🌱 我们预计的是,按3之后只输出星期三。
    • 🌱 实际是,程序把星期三后面的全部都给输出了。
    • 🌱 这时就会需要我们的 break语句
    • 🌱下面我们来介绍一下它的作用
    💭 在switch语句中的 break

    ⛳️在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

    📚 而break是什么意思呢:

    • 🌲 break 英文意思是结束。
    • 🌲 而我们前面出现的问题就是, case语句 没有结束
    • 🌲 每次从我们选择的那个分支一直继续。
    • 🌲 所以我们需要每次在 case语句 后面加上 break语句 结束就好了。

    📜 代码演示:

    #include 
    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");
    	case 7:
    		printf("星期天\n");
    		break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    👑 代码结果:
    请添加图片描述
    哦豁,这下我们是不是就把问题给解决了。

    • 知识点
    • 🌱 在 switch语句 中,caes是我们分支语句的入口。
    • 🌱 break 是我们分支语句的出口,跳出分支

    💡 而有时候我们的需求变了:

    📚 该怎么编写呢?

    1. 输入1-5,输出的是“weekday”;
    2. 输入6-7,输出“weekend”

    📜 代码演示:

    #include 
    //switch代码演示
    int main()
    {
        int day = 0;
        switch(day)
       {
            case 1case 2:
            case 3:
            case 4:
            case 5:
                printf("weekday\n");
                break;
            case 6:
            case 7:
                printf("weekend\n");
                break;
       }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    🐣 这样我们就完美解决问题啦!

    💭 default子句

    ⛳️前面我们详细讲解了,switch语句

    • 但是有没有想过一个问题如果我们输入9会怎么样?
    #include 
    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");
    	case 7:
    		printf("星期天\n");
    		break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    请添加图片描述

    📖说明:

    • 🐲 如果表达的值与所有的case标签的值都不匹配怎么办?
      • 🌱 其实也没什么,结构就是所有的语句都被跳过而已。
      • 🌱 程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
      • 🌱 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
      • 🌱 你可以在语句列表中增加一条default子句,把下面的标签
      • default:
      • 🌱 写在任何一个 case 标签可以出现的位置。

    📑 代码演示:

    #include 
    int main()
    {
    	int day = 0;
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case 1:
    		printf("星期一\n");
    		break;
    	case 2:
    		printf("星期二\n");
    		break;
    	default:
    			printf("输入错误!\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    👑 代码结果:

    请添加图片描述


    ⛳️ default的意思:

    • 🌱 当 switch 表达式的值并不匹配所有 case 标签的值时
    • 🌱 这个 default 子句后面的语句就会执行。
    • 🌱 所以,每个switch语句中只能出现一条default子句。
    • 🌱 但是它可以出现在语句列表的任何位置
    • 🌱 而且语句流会像执行一个case标签一样执行default子句。

    📝 编程好习惯

    在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

    💬 switch语句的注意事项

    ⛳️ switch语句我们都介绍完了,但是这些细节可别忘记哦!

    • 🌱 switch( ) 的括号里面必须是 整形表达式
    • 🌱 caes语句 后面必须跟 整形表达式整形常量表达式
    • 下面我给大家示范一下错误案例。

    💬错误案例

    💭switch( ) 的括号使用 浮点数

    📚 代码演示:

    #include 
    int main()
    {
    	float day = 0;
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case 1:
    		printf("星期一\n");
    		break;
    	case 2:
    		printf("星期二\n");
    		break;
    	default:
    			printf("输入错误!\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    📑 代码结果:
    请添加图片描述
    请添加图片描述

    💭caes语句后面跟 变量

    📚 代码演示:

    #include 
    int main()
    {
    	int day = 0;
    	int n = 1;//后面的f表示是个浮点数一般建议加上
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case n:
    		printf("星期一\n");
    		break;
    	case 2:
    		printf("星期二\n");
    		break;
    	default:
    			printf("输入错误!\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    📑 代码结果:
    请添加图片描述

    请添加图片描述

    💭const 修饰的常变量可以嘛?

    📚 代码演示:

    #include 
    int main()
    {
    	int day = 0;
    	const int n = 1;//后面的f表示是个浮点数一般建议加上
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case n:
    		printf("星期一\n");
    		break;
    	case 2:
    		printf("星期二\n");
    		break;
    	default:
    			printf("输入错误!\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    📑 代码结果:
    请添加图片描述
    🔥 注:在C++标准里面const修饰的常变量,就不在是一个变量了,而是一个常量所以在switch里面是可以跟在case后面的!
    📚 代码演示:

    #include 
    int main()
    {
    	int day = 0;
    	const int n = 1;//后面的f表示是个浮点数一般建议加上
    	//输入
    	scanf("%d", &day);
    	switch (day)
    	{
    	case n:
    		printf("星期一\n");
    		break;
    	case 2:
    		printf("星期二\n");
    		break;
    	default:
    			printf("输入错误!\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    📑 代码结果:

    请添加图片描述

    🔥 注:.cpp是C++程序的后缀名。

    总结

    ✅ 归纳:
    好了以上就是关于分支语句 switch 的用法,和注意事项就全部讲解完毕啦!
      switch的介绍
      switch的语法
      switch中的break
      default语句
      switch的注意事项
    ☁️ 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦!
    看到这里了还不给博主扣个:
    ⛳️ 点赞☀️收藏 ⭐️ 关注

    💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
    拜托拜托这个真的很重要!
    你们的点赞就是博主更新最大的动力!
    有问题可以评论或者私信呢秒回哦。
    在这里插入图片描述

  • 相关阅读:
    Code For Better 谷歌开发者之声——盘点大家用过的Google 产品
    Jenkins+Gitlab+Docker(Dockerfile)部署
    一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
    写程序100道41-50
    ES6 入门教程 6 正则的扩展 6.7 RegExp.prototype.flags 属性 & 6.8 s 修饰符:dotAll 模式 & 6.9 后行断言
    Design A Youtube
    Electron结合React和TypeScript进行开发
    用ADAU1466开发板教你做音频开发,有手就行(一):芯片介绍
    Docker实战-使用HAProxy实现4层的负载均衡
    autoware之轮式里程计计算
  • 原文地址:https://blog.csdn.net/LT15171009269/article/details/134045654