目录
2.4 switch语句中的case和default的顺序问题
(第一次写,按着ptt总结的知识点描绘不出一张简洁的思维导图,啰里啰唆的照抄全搬,大佬们可以给点宝贵的建议方便我更简化更有效地总结笔记,谢谢)
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。
我们可以使⽤
if
、
switch
实现分⽀结构
1:if语句
1.1if:
if 语句的语法形式如下:
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
C语⾔中,0为假,⾮0表⽰真
1.2else:
如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表
⽰呢?
这⾥就需要 if...else... 语句了,语法形式如下:
1.3 分⽀中包含多条语句:
默认在
if
和
else
语句中默认都只控制⼀条语句
1.4 嵌套if
在
if else
语句中,
else
可以与另⼀个
if
语句连⽤,构成多重判断。
⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数
上图中橙⾊背景的代码就是嵌套在前⾯的
else
⼦句中的,构成了嵌套的if语句。
上⾯的代码中橙⾊背景的代码也是嵌套在
if
语句中的,构成了嵌套的
if
语句。
以上就是嵌套if语句的语法
练习:
输⼊⼀个⼈的年龄
如果年龄
<
18
岁,打印
"
少年
"
如果年龄在
18
岁⾄
44
岁打印
"
⻘年
"
如果年龄在
45
岁⾄
59
岁打印
"
中⽼年
"
如果年龄在
60
岁⾄
89
岁打印
"
⽼年
"
如果
90
岁以上打印
"⽼寿星
"
练习题都写在gitte了,手太笨没来的急整理
1.5 悬空else问题
如果有多个
if
和
else
,可以记住这样⼀条规则,
else
总是跟最接近的
if
匹配。
我们⾸先从下⾯代码开始
程序运⾏的结果是啥?
很多初学者,上来以判断
a
是 0,不等于 1 ,那就执⾏
else
⼦句,打印
haha
但是当你去运⾏代码,输出的结果是:啥都不输出。
确实 !!!当时我是蒙蔽的 哈哈
为什么呢?
这就是悬空
else
的问题,如果有多个
if 和
else
,可以记住这样⼀条规则,
else 总是跟最接近
的 if 匹配。
上⾯的代码排版,让
else
和第⼀个
if
语句对⻬,让我们以为
else
是和第⼀个if匹配的,当
if
语句不成⽴的时候,⾃然想到的就是执⾏
else
⼦句,打印
haha
,但实际上
else 是和第⼆个 if
进⾏匹配的,这样后边的
if...else 语句是嵌套在第⼀个 if
语句中的,如果第⼀个
if 语句就不
成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。
如果代码改成下⾯这样就更加容易理解了
如果我们希望else确实和第⼀个if匹配,可以这样修改代码:
只要带上适当的⼤括号,代码的逻辑就会更加的清晰
2.0 switch语句
除了
if
语句外,C语⾔还提供了
switch
语句来实现分⽀结构。
switch
语句是⼀种特殊形式的
if...else
结构,⽤于判断条件有多个结果的情况。它把多重
的
else if
改成更易⽤、可读性更好的形式。
上⾯代码中,根据表达式
expression
不同的值,执⾏相应的
case
分⽀。如果找不到对应的值,
就执⾏
default
分⽀。
注:
•
switch
后的
expression
必须是整型表达式
•
case
后的值,必须是整形常量表达式
注意:case后面要有一个空格作为标准格式
‘
2.1 if语句和switch语句的对⽐
练习:输⼊任意⼀个整数值,计算除3之后的余数
如果使⽤if语句完成,如下
如果使⽤switch语句改写,就可以
是这样的:
上述的代码中,我们要注意的点有:
1.
case
和后边的数字之间必须有空格
2.
每⼀个
case
语句中的代码执⾏完成后,需要加上
break
,才能跳出这个switch语句。
2.2 switch语句中的break
前⾯的代码中,如果我们去掉case语句中的break,
测试⼀组,看⼀下结果:
我们发现,7除以3本来余数是1,但是我们发现程序运⾏的结果多了⼀⾏“余数是2”的打印。
这是为什么呢?
原因是
switch
语句也是分⽀效果的,只有在
switch 语句中使⽤ break 才能在跳出 switch 语
句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case
语句中的代码,直到遇到 break 语句或者 switch
语句结束。就⽐如上⾯的代码就执⾏了
case
2
中的语句。
所以在
switch
语句中
break
语句是⾮常重要的,能实现真正的分⽀效果。
当然,
break 也不是每个 case
语句都得有,这就得根据实际情况来看了。
2.3 switch语句中的default
在使⽤
switch
语句的时候,我们经常可能遇到⼀种情况,⽐如
switch
后的表达式中的值⽆法匹
配代码中的
case
语句的时候,这时候要不就不做处理,要不就得在
switch
语句中加⼊
default
⼦句。
switch
后边的
expression
的结果不是
value1 ,也不是 value2
的时候,就会执⾏
default
⼦句。
2.4 switch语句中的case和default的顺序问题
在 switch
语句中
case
语句和
default
语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把
default
⼦句放在最后处理的。