switch语句:

实际生活中,需要做出很多选择,大家都知道做选择可以使用if语句,但是如果选择太多,if语句使用起来就会很繁琐,这个时候就需要一个能将代码简化的语句,也就是我们今天的主角switch语句。

switch语句是一个多分支选择语句,并且可以支持嵌套。

switch语句的基本格式

switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
default:语句n   break;
}

switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句,当表达式和常量值相等,switch语句会将当前case语句以及后面所有的case语句全部输出。假如我们要实现用户输入一个数字来判断今天是星期几,那么就可以用下面的代码实现。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int day = 0;                //定义一个整型变量day,并对其赋值为0printf("请输入一个数字\n");   //让用户输入一个数字scanf("%d", &day);              //接收用户输入的数字switch (day){case 1:printf("星期一\n");    //如果day的值为1,则输出星期一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:break;}return 0;
}

运行结果如下图所示,可以看到当我输入2时,switch语句将我2以及下面所有语句都执行,这显然不是我想要的结果,那么怎么解决这个问题呢,很简单,只需要在每一个case语句后面加上一个break语句

break语句:当switch语句运行时遇到break关键字时会跳出,意思就是当语句运行到break时就不再运行了,接下来剩下的case语句也不会再执行,switch语句结束。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int day = 0;                //定义一个整型变量day,并对其赋值为0printf("请输入一个数字\n");   //让用户输入一个数字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;
}

可以看到当我再次输入2时,只输出一个星期二,这显然break语句已经生效,也达到了我想要的结果,还有一个值得注意的是,语句是可以为空语句的,那么我们将break和空语句结合起来就可以实现下面的代码。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{//实现1-5都为工作日,6,7为休息日,可以看出当case语句后没有执行语句且没有break时代码会从条件判断成立进入,直到遇到breakint day = 0;scanf("%d", &day);switch (day){case 1:case 2:case 3:case 4:case 5:printf("工作日\n");break;case 6:printf("休息日\n");breakcase 7:printf("休息日\n");break;}return 0;
}

那么问题来了,如果用户输入时不小心输入了一个switch语句中没有的常量值怎么办呢,这个也很简单,只需要一个小小的default,请看

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{//实现1-5都为工作日,6,7为休息日,可以看出当case语句后没有执行语句且没有break时代码会从条件判断成立进入,直到遇到breakint day = 0;scanf("%d", &day);switch (day){case 1:case 2:case 3:case 4:case 5:printf("工作日\n");break;case 6:printf("休息日\n");breakcase 7:printf("休息日\n");break;default:printf("请重新输入\n");break;}return 0;
}

default的作用就是当表达式的值和常量值全部对比过之后,如果没有匹配的就会输出default后的语句。

那么我们前面讲过switch语句可以实现嵌套,请看下面的代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n) //switch语句可以支持嵌套 {case 1:n++;case 2:m++; n++;break;default:break;}case 4:m++;break;default:break;}printf("m=%d,n=%d\n", m, n);return 0;
}

那么这个代码的运行结果就交给你们自己来进行体验了,以上就是这次对于switch语句的简单讲解,谢谢大家。

C语言中的switch语句基本用法相关推荐

  1. c语言中do有什么作用,C语言中do while语句的用法是什么?_后端开发

    c语言有且唯一的函数是什么?_后端开发 在​c语言中有且唯一的函数是:"main"函数."main"函数,又称主函数,是程序执行的起点:如果有其他函数,则会完成 ...

  2. c语言do while什么意思,C语言中do while语句的用法是什么?

    C语言中"do while"语句用于语句的循环判断:语法为:"do {代码语句} while(表达式);".它与while循环的不同在于:"do wh ...

  3. C语言中的switch语句

    switch语句的一般形式: switch (表达式) {case 常量表达式1: 语句1case 常量表达式2: 语句2┇case 常量表达式n: 语句ndefault: 语句n+1 } 说明: = ...

  4. C语言 | C语言中的switch语句以及循环语句(入门版本)

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  5. c语言中的switch语句中的break和continue的作用

    #include <stdio.h>int main() {int k;char c;for(k=1,c='A'; c < 'F'; k++){switch(++c){case'A' ...

  6. 详解C语言中的switch语句

    文章目录 switch语句格式 条件合并的写法 break语句 default语句 switch语句与if..else语句区别 switch语句格式 switch(表达式) {case 常量表达式1: ...

  7. c语言switch今天星期几,巧用C语言中的switch语句实现星期的推算

    [理论广角] 巧用 语言中的 语句实现星期的推算 吴 允 志 郑 州 工 业 贸 易 学校 河 南 郑 州 中图 分 类 号 :文 献标 识 码 : 摘 要 :本 文介 绍 了根 据 已知 日期推 算 ...

  8. 用C语言中的switch语句实现奇偶数的判断

    #define _CRT_SECURE_NO_WARNINGD 1 #include<stdio.h> #define _CRT_SECURE_NO_WARNINGD 1 #include ...

  9. 这可能是最全的switch语句的用法

    switch的中文翻译是:开关,顾名思义,开关的作用就是控制连通或者中断,在C语言中,switch语句的作用也是大同小异. 要学习switch语句就要了解switch语句的用法,switch语句可以和 ...

最新文章

  1. xmind 模板_xmind模板打包下载
  2. 在Linux下轻松玩转Samba服务器
  3. 深入Redis内部-Redis 源码讲解
  4. windows 10 内置bash 安装32位支持
  5. Chrome 调试技巧
  6. log4net使用具体解释
  7. CF1540B-Tree Array【数学期望,dp】
  8. CANopen | 移植01 - STM32H743 + Canfestival的移植并让FDCAN1运行CANopen协议
  9. 詹皇比肩乔丹!如何防住他?这是AI给出的回答
  10. ListView的setSelection()不起作用的原因
  11. python-Python教程
  12. 计算机在现代设计技术中应用,计算机技术在现代建筑设计中的应用
  13. 添加自签发的 SSL 证书为受信任的根证书
  14. [转] WEB前端学习资源清单
  15. Windows解决端口占用问题 Port xxxx was already in use
  16. python 从大到小循环_跟老齐学Python之关于循环的小伎俩
  17. 单片机开发教程1——开发环境的搭建
  18. 工控领域的攻击和渗透工具——监控ICS网络操作工具和软件利用模块以预测未来的威胁
  19. matlab BP网络工具箱分类与回归
  20. 20几岁,你的存款有多少?

热门文章

  1. AMBA 系列之 AXI 总线协议
  2. 计算器简单篇(项目篇)
  3. ubuntu使用python读串口_21.python通过pyserial读写串口--2013-06-02
  4. Unity的Application.Quit()方法使用失效的其他解决方案。
  5. 田忌赛马-贪心算法实现
  6. 响铃:聚焦图片版权,百度区块链产品“图腾”如何打好这副牌
  7. node入门(三)npm包
  8. 读我(Readme)
  9. python练习-句子逆序2
  10. 我也来说说“自学IT能走多远” 肖舸