当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用switch case语句解决,针对分支的复杂性选择合适的程序解决。

当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);if(a==1){printf("Monday\n");}else if(a==2){printf("Tuesday\n");}else if(a==3){printf("Wednesday\n");}else if(a==4){printf("Thursday\n");}else if(a==5){printf("Friday\n");}else if(a==6){printf("Saturday\n");}else if(a==7){printf("Sunday\n");}else{printf("error\n");}return 0;
}

运行结果:

Input integer number:3↙
Wednesday

对于上述情况,在实际开发中一般使用 switch 语句代替,请看下面的代码:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);switch(a){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("error\n"); break;}return 0;
}

运行结果:

Input integer number:4↙
Thursday

switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:

switch(表达式){case 整型数值1: 语句 1;case 整型数值2: 语句 2;......case 整型数值n: 语句 n;default: 语句 n+1;
}

执行过程:
1 . 首先计算“表达式”的值,假设为 m。

2 . 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。

3 . 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。

4 . 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

注意,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。例如:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);switch(a){case 1: printf("Monday\n");case 2: printf("Tuesday\n");case 3: printf("Wednesday\n");case 4: printf("Thursday\n");case 5: printf("Friday\n");case 6: printf("Saturday\n");case 7: printf("Sunday\n");default:printf("error\n");}return 0;
}

运行结果:

Input integer number:4↙
Thursday
Friday
Saturday
Sunday
error

输入4,发现和第四个分支匹配成功,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,而跳过后面的其他分支。为了达到这个目标,必须要在每个分支最后添加break;语句。

break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

使用 break 修改上面的代码:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);switch(a){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("error\n"); break;}return 0;
}

运行结果:

Input integer number:4↙
Thursday

由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。

最后需要说明的两点是:
1 . case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

2 . default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

如果感觉不错的话请点赞哟!!!

C语言switch case语句详解相关推荐

  1. c语言switch case解释,C语言switch case语句详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英 ...

  2. c语言switch case语句范围,C语言switch case语句详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英 ...

  3. c语言 switch case 字符串,c语言switch case用法详解

    c语言switchcase用法详解 switch是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch是多分支选择语句.说得通俗点,多分支就 ...

  4. JS switch case语句详解

    switch 语句专门用来设计多分支条件结构.与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高.语法格式如下: switch (expr) { case value1 : s ...

  5. switch case用法详解

    switch case用法详解 switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就 ...

  6. c语言中case的作用,C语言switch case 语句

    switch 语句根据控制表达式的值,可以把程序流跳转到多个语句中的一个执行: switch (表达式) 语句 括号里的表达式具有整数类型,并且这里的语句就是该 switch 主体,它包括了多个 ca ...

  7. C语言--switch case 语句,case 后没有语句

    背景:在看 wireshark 的解析协议部分的源码时,发现很多的 switch case 语句,case 后没有语句 的情况,随处可见的这种情况,产生疑惑,报文解析就是很好的例子. 例如:wires ...

  8. case zhen语句_switch case语句,switch case用法详解

    switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就是多个 if. 从功能上说,sw ...

  9. C语言switch的用法详解

    C语言switch的意思是多项选择的意思. 如图所示.定义一个整数变量a的值为2 如图1所示定义a等于2所以输出case 2:后面的程序. 如果我们定义a=3的话.所以不满足case 1和 case ...

最新文章

  1. Forefront Security For Exchange文件传送限制测试
  2. 整理出一个比较实用的SqlHelper类 满足大多数情况的使用
  3. C# 视频监控系列(13):H264播放器——控制播放和截图
  4. 密码学系列之:内容嗅探
  5. 【NOIP2015】D2-T1跳石头,二分答案
  6. python hackrf_HackRF固件更新及编译环境搭建
  7. [Java][Liferay] 模拟用户
  8. 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  9. Oracle Primavera P6 Unifier等产品 Patch 补丁介绍
  10. fluent周期边界_在ANSYS Mesh模块中创建周期边界
  11. iPhone 开发常用工具
  12. Object-based superresolution land cover Mapping From Remotely sensed imagery
  13. python更改进程名称_更改python脚本的进程名称 - python
  14. VR视频拍摄手法学习笔记
  15. build.gradle笔记
  16. 2022年苏州市重点软件企业和专精特新软件企业培育入库项目开始
  17. 国有企业、国有独资公司、国有控股公司、国有参股公司区别
  18. 腾讯云携手合作伙伴打造5G生态,覆盖“云边网端”助推“万物智联”
  19. 自创笔记(全网绝无仅有,持续更新)
  20. 家用汽车维修2:PC上的OBD II汽车诊断扫描器

热门文章

  1. 教你快速将多个文件设置为与文件夹同名并排序
  2. Java的窗口实例设置小图标
  3. jquery简单多图片前后滚动插件
  4. iqooneo系统升级好不好_IQOONeo系统测评 全新FuntouchOS9十分好用
  5. [北京][10-30K] 上过 Apple WWDC,被 Google I/O 推荐的 iHealth(中国)职等你!
  6. Oracle的SQL优化建议
  7. 相关子查询和嵌套子查询两者之间的区别
  8. 2021-08-08:自由之路。电子游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表
  9. Software 2.0 - Andrej Karpathy(转载)
  10. 中国乙醇汽油市场供需调研与投资战略分析报告2022-2028年