文章目录

  • 一、if else的不足
  • 二、switch语句
  • 三、注意事项
  • 四、课后作业
  • 五、版权声明

一、if else的不足

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

  if (day == 0)printf("星期天\n");else if (day == 1)printf("星期一\n");else if (day == 2)printf("星期二\n");else if (day == 3)printf("星期三\n");else if (day == 4)printf("星期四\n");else if (day == 5)printf("星期五\n");else if (day == 6)printf("星期六\n");elseprintf("输入错误。\n");

以上代码摘自book22.c。

对于这种情况,实际开发中一般使用 switch 语句代替,请看下面的代码。

  switch (day){case 0: printf("星期天\n"); break;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;default: printf("输入错误。\n"); break;}

先不解释这段代码的含义,但这样看起来舒服多了。

二、switch语句

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

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

它的执行过程是:

1)首先计算表达式的值,假设为value

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

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

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

需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。

示例(book29.c)

/**  程序名:book29.c,此程序演示条件分支控制语句用switch代替多个if else *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>int main()
{int    day=0;   // 定义一个整数变量用于接受键盘输入的数字printf("请输入0-6之间的数字:");    // 提示用户输入scanf("%d",&day);              // 接受用户从键盘输入的数据switch (day){case 0: printf("星期天\n");case 1: printf("星期一\n");case 2: printf("星期二\n");case 3: printf("星期三\n");case 4: printf("星期四\n");case 5: printf("星期五\n");case 6: printf("星期六\n");default: printf("输入错误。\n");}
}

运行效果

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

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

示例(book30.c)

/**  程序名:book30.c,此程序演示条件分支控制语句用switch中break的用法。*  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>int main()
{int    day=0;   // 定义一个整数变量用于接受键盘输入的数字printf("请输入0-6之间的数字:");    // 提示用户输入scanf("%d",&day);              // 接受用户从键盘输入的数据switch (day){case 0: printf("星期天\n"); break;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;default: printf("输入错误。\n"); break;}
}

运行效果

三、注意事项

  1. case后面必须是整数和字符,或者是结果为整数和字符的表达式,但不能包含任何变量。请看下面的例子。
  switch (result){case 10:      printf("..."); break;    // 正确,整数case 8+9:     printf("..."); break;    // 正确,表达式8+9==17是整数case '5':     printf("..."); break;    // 正确,字符可以转换为整数case 'A':     printf("..."); break;    // 正确,字符可以转换为整数case 'A'+10:  printf("..."); break;    // 正确,字符可以转换为整数case 3.14:    printf("..."); break;    // 错误,不能为小数case ii:      printf("..."); break;    // 错误,不能采用变量}
  1. default 不是必须的。当没有 default 时,如果所有case都匹配失败,那么就什么都不执行。

四、课后作业

编写示例程序,在界面上输入数字的月份(1-12),采用switch语句,输出对应月份的英文单词的简写和全称。

五、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道

如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发我的文章,谢谢!!!
如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

C语言switch分支结构相关推荐

  1. if...else if switch分支结构

    switch分支结构 一.程序运行流程的分类 1.顺序结构:根据程序顺序依次执行. 2.分支结构:根据判断决定程序的执行顺序. 3.循环结构. 分支结构三要素:(1)必须有一个明确的判断语句. (2) ...

  2. 四则运算c语言编程分支结构,C语言之分支结构(二)

    原标题:C语言之分支结构(二) 大家好!今天我们来学习if语句的嵌套结构, if语句的嵌套是指在if或者else的分支下有包括了另一个if语句或者是if-else语句,if语句的嵌套位置是灵活的,嵌套 ...

  3. switch分支结构

    switch分支结构

  4. c语言用分支结构判断最大字符,第3章C语言 分支结构PPT课件.ppt

    <第3章C语言 分支结构PPT课件.ppt>由会员分享,可在线阅读,更多相关<第3章C语言 分支结构PPT课件.ppt(36页珍藏版)>请在人人文库网上搜索. 1.第三章 分支 ...

  5. Go语言之分支结构(十一)

    Go语言分支结构 一.程序的流程结构 程序的流程控制结构共有三种:顺序结构,选择结构,循环结构. 顺序结构:从上向下,逐行执行. 选择结构:条件满足,某些代码才会执行.0-1次 分支语句:if,swi ...

  6. JSD-2204-Java语言基础-分支结构-循环-Day04

    1.分支结构 1.1Scanner接受用户输入的数据: 分三步,先背下来,面向对象第5天 才能理解 package day04; import java.util.Scanner; //1.导入扫描仪 ...

  7. C语言switch选择结构

    一.switch的思想及意义: 程序设计中选择结构的第二大语句就是:switch语句.switch和if-else if一样都可以做多分支选择,但是switch语句的思想是把程序所有可能出现的值 的情 ...

  8. C语言之分支结构 if(一)

    一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...

  9. 课堂练习4-C语言多分支结构

    第1关:肥胖判断 任务描述 本关任务:通过体脂率判断某人的肥胖程度. 编程要求 根据提示,在右侧编辑器补充代码,计算并输出肥胖程度. 计算体脂率的公式是 体脂率=体重(kg)/身高(m)**2 (1) ...

最新文章

  1. Android学习笔记13-Acitivty与Fragment通信
  2. 《重构-改善既有代码的设计》-第1例:租赁影片(1)
  3. Spring的@ExceptionHandler注解使用方法
  4. extjs设计器破解程序及开发调试工具
  5. Eclipse无提示的解决办法 和 内容辅助技巧
  6. linux小红帽实验心得,《小红帽》阅读后心得总结
  7. Uva_11235_Frequent values
  8. Script:列出Oracle每小时的redo重做日志产生量
  9. 【转】Android 平台下使用 i2c-tools
  10. mysql 5.1 1067,mysql服务1067错误多种解决方案汇总
  11. LINUX用C判断文件是否存在
  12. PAIP.自定义SELECT BOX COMMBO BOX展现.txt
  13. InteCAD启动后提示:访问加密锁错误 如何解决?(附AutoCAD InteCAD安装教程)
  14. roseha linux,ROSEHA双机软件图解安装配置linux.docx
  15. 初级Java代码——自制坦克大战游戏
  16. FFmpeg推流以后自动结束的方法
  17. 河南省计算机基础考试题库,计算机基础考试题库
  18. html-QQ登陆界面
  19. 企业核心-不是技术而是人才
  20. 日计划安排 --- 凡事预则立,不预则废

热门文章

  1. 【普及组模拟赛】游戏
  2. 2017年10月07日普及组 蚂蚁
  3. λ-矩阵(若尔当标准形的理论推论)
  4. git submoule 更新_微软Surface Duo双屏手机键盘更新:支持分体式输入
  5. unity 脚本中 调用另一个脚本_Unity 2019.4 脚本生命周期
  6. Hash——字符串匹配(求s1在s2中出现的次数)
  7. Java 中的四种引用及垃圾回收策略
  8. 43、Java动态代理一——动态类Proxy的使用
  9. OpenMP 线程化(Threading)基础(1)--并行计算简介
  10. [VS2005]一个简单的CodeSnippet —— 生成类的构造函数。