C语言中的switch语句是一种多分支选择结构,用于根据整型、字符型或枚举型表达式的值,跳转到对应的case分支执行,常替代冗长的if-else链,其基本语法为:switch(表达式) { case 常量1: 语句; break; case 常量2: 语句; break; ... default: 语句; }

,每个case后必须有break跳出,否则会发生“穿透”(依次执行后续语句),default可省略,用于处理所有不匹配的情况,例题:输入数字1~7,输出对应星期(如1为Monday);输入成绩等级'A'~'E',输出评语,注意switch不支持浮点型和字符串,且case后必须是常量表达式,合理使用switch可使代码清晰、高效。

,每个case后必须有break跳出,否则会发生“穿透”(依次执行后续语句),default可省略,用于处理所有不匹配的情况,例题:输入数字1~7,输出对应星期(如1为Monday);输入成绩等级'A'~'E',输出评语,注意switch不支持浮点型和字符串,且case后必须是常量表达式,合理使用switch可使代码清晰、高效。

  1. switch语句的基本语法
  2. 例题精讲
  3. switch使用注意事项

在C语言中,

switch

语句是一种多分支选择结构,它能够根据某个表达式的值,将程序的执行流程跳转到与之匹配的

case

标签处,相比于冗长的

if-else if

链条,

switch

在处理多个固定整型或字符型常量时更加清晰、高效,本文将通过几个典型例题,带你全面掌握

switch

的用法与细节。

的用法与细节。

switch语句的基本语法

switch

语句的结构如下:首先是一个整型表达式(或可隐式转换为整型的类型,比如

char

enum

,但不支持浮点数和字符串),其后用花括号包裹多个

case

分支,每个

case

后面必须是编译时就能确定的常量表达式,且不能重复,当表达式的值与某个

case

的常量相等时,程序跳转到该

case

后的语句执行,如果使用

break

关键字,执行完该分支后就会跳出整个

switch

结构;如果没有

break

,会发生“贯穿”(fall-through),即继续执行下一个

case

的代码,直到遇到

break

switch

结束。

default

分支是可选的,当所有

case

都不匹配时执行,习惯上放在最后,但位置其实可以任意。

都不匹配时执行,习惯上放在最后,但位置其实可以任意。

例题精讲

例题1:根据考试成绩输出等级

要求输入0~100的整数成绩,按规则输出等级:90~100为优秀(A),80~89为良好(B),70~79为中等(C),60~69为及格(D),0~59为不及格(E)。

解法思路:利用整除10的思想将分数区间压缩到0~10之间,分数85除以10得到8,然后通过

switch

匹配整数8即可,实现时先检查输入有效性,若成绩在0~100之间,则计算

grade = score / 10

;然后使用

switch(grade)

,其中

case 10

case 9

合并为同一个输出“A(优秀)”;

case 8

输出“B(良好)”;

case 7

输出“C(中等)”;

case 6

输出“D(及格)”;其余情况(即0~5)全部由

default

处理,输出“E(不及格)”,每个分支末尾都加上

break

,防止贯穿。

,防止贯穿。

运行示例

请输入成绩(0-100):85

等级:B(良好)

要点

case 10

case 9

共用同一个代码块,这正是“贯穿”的合理利用,用

default

处理0~59的情况,避免了逐个列出0到5的所有

case

,使代码简洁高效。

,使代码简洁高效。


例题2:根据月份判断天数(不考虑闰年)

输入一个月份(1~12),输出该月的天数,其中2月按28天计算。

解法思路:将月份分为三类:31天的月份(1、3、5、7、8、10、12)、30天的月份(4、6、9、11)以及2月,使用

switch(month)

,将31天的多个

case

合并,输出“某月有31天”;30天的合并输出“某月有30天”;2月单独输出“2月有28天”,如果输入不在1~12之间,由

default

提示“输入的月份无效”。

提示“输入的月份无效”。

运行示例

请输入月份(1-12):5

5月有31天

要点:再次运用多个

case

合并的技巧,使代码简洁易读,注意月份输入无效时的容错处理。

合并的技巧,使代码简洁易读,注意月份输入无效时的容错处理。


例题3:简易计算器(菜单选择)

输入两个整数和一个运算符(+、-、*、/),输出运算结果;若输入无效运算符,给出提示;若除法除数为0,则报错。

解法思路:先定义两个

double

类型的变量存放操作数,一个

char

变量存放运算符,通过

switch(op)

匹配四种运算符,在加法分支中直接计算并输出;减法、乘法类似;除法分支需要额外判断除数是否为0,若为0则输出错误信息,否则计算结果,最后用

default

处理无效运算符的情况,所有分支均以

break

结束,避免贯穿。

结束,避免贯穿。

运行示例

请输入表达式(如 3 + 5):10 / 3

10.00 / 3.00 = 3.33

要点

switch

的表达式可以是

char

类型,因为字符在C语言中本质上是整型,在除法分支中,必须额外处理除数为0的异常,体现了编程中的健壮性思想。

类型,因为字符在C语言中本质上是整型,在除法分支中,必须额外处理除数为0的异常,体现了编程中的健壮性思想。


switch使用注意事项

  • case后必须是常量表达式:不能是变量,例如
  • case x:

    (x是变量)是错误的。

  • (x是变量)是错误的。
  • 不要忘记break:漏写
  • break

    会导致“贯穿”,除非你有意利用这一特性(如例题1和例题2中的合并写法)。

  • 会导致“贯穿”,除非你有意利用这一特性(如例题1和例题2中的合并写法)。
  • default可选:当所有
  • case

    都不匹配时,如果没有

    default

    ,则

    switch

    什么都不执行。

  • 什么都不执行。
  • case标签顺序不重要:但为了提高可读性,建议按逻辑顺序排列(如数字从小到大,或按功能分组)。
  • switch只能用于等值判断:它不能像
  • if-else

    那样进行范围比较,需要借助除法、映射等技巧将范围转化为离散值(如例题1)。

  • 那样进行范围比较,需要借助除法、映射等技巧将范围转化为离散值(如例题1)。
  • 嵌套switch:可以在一个
  • case

    中再嵌套一个

    switch

    ,但应避免过度嵌套,以免影响代码可读性。

  • ,但应避免过度嵌套,以免影响代码可读性。
  • switch

    是C语言中重要的控制语句,特别适合处理多个离散值的分支逻辑,通过以上三个典型例题,你应该掌握了:

    是C语言中重要的控制语句,特别适合处理多个离散值的分支逻辑,通过以上三个典型例题,你应该掌握了:

  • 基本的
  • switch

    结构

  • 结构
  • 利用“贯穿”合并多个
  • case
  • 处理默认情况的
  • default
  • 结合整数除法进行范围映射
  • 尝试自己动手编写类似代码,并探索更多应用场景(如字符菜单、枚举状态机等),你就能熟练掌握

    switch

    的精髓。

    的精髓。

    C语言中switch语句用法详解及例题-switch游戏下载社区