2.3 switch语句

更新于 2026年10月10日 版权声明
2.3 switch语句

图示

switch后面表达式的值可以为任意类型的值。若表达式的值与某一个case后面的常量表达式的值相等时,就执行该case后面对应的语句;若所有的case后面常量表达式的值与switch后面表达式的值都不匹配时,就执行default后面的语句。各case的常量表达式的值不能相同,否则会出现错误。各case语句和default语句顺序可以互换,不影响程序运行结果。在每一个case后的语句可以是一句,也可以是多句,如果是多句,不需要用“{}”括起来组成复合语句。

例2-6 某幼儿园接收3~6岁的孩子入托。接收原则为:3岁入小班;4~5岁入中班;6岁入大班。编写程序:根据输入的年龄,显示出应该进入哪个班。注意:不到3岁,或超过6岁,均不可入幼儿园。

程序如下:

图示

图示

当输入3时,程序执行的结果是将每一个case后的输出语句都执行了一遍,而正确的结果应该是只执行常量为3的case后的语句,输出“进小班”才对。这是因为“case常量表达式”只相当于一个程序执行的入口标号,当表达式的值和某入口标号相同时,则程序从该标号后的语句开始执行,执行完一个case后面的语句后,转移到下一个case继续执行,但程序不能在执行完该标号的语句后自动跳出整个switch语句,所以出现了继续执行所有后面case语句的情况。因此,在执行一个case分支后,应该用一个break语句来终止switch语句的执行,避免上述情况的发生。

修改过的程序如下:

图示

图示(https://www.daowen.com)

这段程序只执行3后面的语句,输出“进小班”,其他程序均不执行。

在例2-6中,由于4岁和5岁都是进中班,也就是两者对应的语句是一样的,程序可以只写5后面的语句,4后面的语句可以省略,如下所示:

图示

两种程序的执行结果是一样的。

例2-7 编写程序:要求输入一个年份和月份,输出该月份对应的天数。

分析:

对于一年中的12个月份,1月、3月、5月、7月、8月、10月、12月均为大月31天,4月、6月、9月、11月均为小月30天,2月份比较特殊,闰年时是29天,非闰年时是28天。判断某一年是否是闰年,可以通过两个条件来判断:能被4整除但不能被100整除的或者能被400整除的均为闰年。可以通过逻辑与的表达式来判断:

图示

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)