C语言有9种控制语句,可分为三类:
1.条件判断语句(分支语句):if语句、switch语句
2.执行循环语句:while语句、for语句、do while 语句
3.转向语句:break语句、continue语句、goto语句、return语句
C语言是一种结构化的语言,可分为顺序结构、循环结构和选择结构。
其中,if语句和switch语句可以实现选择结构,while语句、for语句、do while语句可以实现循环语句。
具体可参考下面这篇文章:
这里介绍第一大类:
if语句和switch语句
目录
2.每一个case中的代码执行完后,需要加上break才能跳出switch语句
一、if语句
(一)if语句的表达式
表达式成立(为真),则语句执行;表达式不成立(为假),则语句不执行。
C语言中,0表示是假,非0表示真,即表达式的结果是0,则语句不执行;表达式结果如果不是0,则语句执行。
举例:输入一个整数,判断是否为奇数。
接下来我们思考了:如果输入的这个数,不是奇数,而是偶数呢?也就是说,如果任意输入一个整数,我们要怎么判断这个数是奇数还是偶数呢?
这里就需要if……else语句了。
(二)if……else
1.语法结构
2.使用例子:
输入一个整数,判断是否是奇数,是则打印奇数,不是则打印偶数。
if……else语句是一种可以用来实现选择结构的语句,是非此即彼的关系。就像人生的道路分岔口一样,一旦选择了这个方向,就只能一直走下去。
话是这么说,但凡事无绝对。只要有足够的本钱,从头再来,重新选择都不是问题。在C语言上,则表现为能够实现转向的语句,如goto语句,break语句,continue语句,return语句。这里后面会讲到。
(三)默认情况:if和else只控制1条语句
那如果,if要同时控制2条语句呢?
那就是用大括号{}将语句括起来,后面的else所控制的语句需要的话,也可以被{}括起来。
(四)嵌套if
在if……else语句中,else可以与另一个if连用,构成多重判断。
举例:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。
再比如:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。
1.嵌套if使用格式
(1).
(2).
(五)规则:else总是和最近的if匹配
举例:
运行的结果是什么呢?
其实什么都没有。
为什么?
因为else总是与最近的if相匹配,也就是else是与第二个if匹配的。但是由于第一个if条件不成立,所以接下来的if else语句执没机会执行,最终什么也不打印。如果想要else跟第一个if,那就用大括号{}括起来:
二、switch语句
相较于if else 语句,switch 语句更加简单形象,用于判断多重结果的情况。
(一)表达格式
根据expression的不同值,执行相应的case分支。如果找不到,就执行default分支。
注意:
1.expression必须是整形表达式
2.case后的值,必须是整型常量表达式
三、if语句与switch语句的比较
练习:输⼊任意⼀个整数值,计算除3之后的余数
(一)if语句:
(二)使用switch:
在使用switch语句时,需要注意:
1.case和后边的数字之间需要有空格
2.每一个case中的代码执行完后,需要加上break才能跳出switch语句
四、switch语句中的break语句
还是以为例子:
如果case后面没有break语句,执行结果除了打印“余数是1”外,还会打印“余数是2”。
原因是,switch语句也具有分支效果,去掉case后面的break后,代码会继续往下执行,可能会执行其他case的代码,直到遇到break语句或者switch语句结束。
因此,break对于switch语句来说,能帮助后者实现分支效果。
但是,并不是每一个case都需要break。
比如这种情况:输入一个1~7的数字,其中1~5打印“工作日”,6-7打印“休息日”。
一句话总结:实事求是地使用break。
五、switch语句中的default
在使用switch 语句的时候,如果switch 后的表达式中的值无法匹配代码中的 case 语句,这时候要不就不做处理,要不就在 switch 语句中使用default 语句。
以上面的代码为例,如果用户输入的是8,无法与上面的任何一个case匹配,便会执行default语句。
(一)case位置与default位置
没有顺序要求。只是通常情况下放在尾巴。