1.分支结构
1.1 if语句
if 语句的语法形式如下:
if ( 表达式 )
语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。
1.1.1 else
if 语句加else的语法形式如下:
1.1.2 分支中包含多条语句
if语句为假,则不打印,对于 printf("可以谈恋爱了\n"); 是独⽴存在的,不管if语句的条件的真
假,都会被执⾏。那如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤{} 将代码括起来,
else 后也可以跟上⼤括号。如下:
1.1.3 嵌套if
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
1.1.4 悬空else问题
但是当你去运⾏代码,输出的结果是:啥都不输出。
这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近
的 if 匹配。上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha ,但实际上 else 是和第⼆个 if进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不
成⽴,嵌套 if 和 else 就没机会执⾏了,最终啥都不打印。
如果代码改成下⾯这样就更加容易理解了
1.2switch语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
的 else if 改成更易⽤、可读性更好的形式。
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
1.2.1 if语句和switch语句的对比
同一个问题可用if语句或者switch语句实现
例如:输⼊任意⼀个整数值,计算除3之后的余数
用if语句如下:
用switch语句如下:
1.2.2 switch语句中的break
1.2.3 switch语句中的default
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default ⼦句。
switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执行default ⼦句。
1.2.4 switch语句中的case和default的顺序问题
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。
2.循环结构
2.1while循环
2.1.1 if 和 while的对⽐
while 语句的语法结构和 if 语句非常相似。
这就是他们的区别,while语句是可以实现循环效果的。
2.1.2 while语句的执行流程
2.1.3 while 循环的实践
例子:在屏幕上打印 1~10 的值
2.2 for循环
for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:
2.2.1 for循环的执行流程
2.2.2 for循环的实践
例子:在屏幕上打印 1~10 的值
2.2.3 while循环和for循环的对比
2.3 do-while 循环
2.3.1 do while循环的执行流程
在 do while 循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的
结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是至少执行⼀次的,这是 do while 循环比较特殊的地方。
2.3.2 do while循环的实践
例子:在屏幕上打印 1~10 的值