C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构。
1. 顺序结构最简单,就是程序根据代码从头(上)往后(下)开始执行。
2. 选择结构使用 if - else 和 switch 语句实现,也称为分支结构。
3. 循环结构使用 for 、 while 、 do while 语句实现。
1. 选择结构
1.1 if语句
语法格式:
if ( 表达式 )
{
语句
}
表达式为真(表达式成立),语句执行;表达式为假(表达式不成立),则语句不执行。
需要注意的是:在C语言表达式中 0 表示假;非0 表示真,也就是说除了0以外的任何数值都表示真。
代码示例:
1.2 if-else 语句
语法格式:
if ( 表达式 )
{ 语句1 }
else
{ 语句 2 }
如果表达式成立就执行语句1,若不成立则执行语句2
例:
1.3 if-else语句中可以加入 else if 以实现更多分支
例:
细节知识点:
1. if-else 所控制的语句,如果不加 {} 大括号的话,只能控制一条语句。所以如果 if 要控制多条语句的执行就必须加 {} 。
2. else 总是与它前面最近的且未配对的 if 进行配对。
例如:C语言没有像Python中的对齐机制
所以,这个代码的改进写法,这样就好理解了,以满足自己想要的逻辑。
1.3 switch语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
语法格式:
switch (expression)
{
case value1: statement;
case value2: statement;
default: statement;
}
语法说明:根据表达式 expression 不同的值,优先从与之相对应的 case 分⽀开始执行。如果找不到对应的值, 就从 default 分⽀开始执行。
注意事项:
1. switch 后的 expression 必须是整型表达式
2. case 后的值,必须是整形常量表达式
3. 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。如果有case语句和default语句后面没有加上break语句,就会导致顺序往下执行代码,直到走完switch当中的所有语句。
例:
4. case语句和default语句没有先后顺序,default可以写在case前面和后面都可以。只要你的顺序是满足实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
2. 循环结构
循环语句有while、do-while 和 for 循环语句,语法格式就不说了,大家都知道,我讲一点稍微细节的知识。
1. while循环是先判断后执行,do-while语句是先执行一次循环语句再判断。也就是说do-while循环是至少循环一次,而 while 循环可以一次都不执行。
2. 和上面讲到的 if-else 语句同理,如果不加{}大括号,所有循环语句只能控制一句代码。
3. for循环的执行流程:在for循环中初始化语句只在刚进入循环时执行一次,后续便不在执行。在第一次循环结束后,便以4,5,6为流程一直反复循环执行,直到循环结束。
3. break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,也就是在实际开发中经常遇到的场景。C语言中 提供了 break 和 continue 两个关键字,就是应用到循环语句中的。
3.1 break 的作用是直接终止当前循环语句,只要 break 被执行,直接就会跳出循环,继续执行循环语句后面的代码。
需要注意的是break如果在循环嵌套里面的话,一个break语句只能跳出它所在的那层循环语句,也就是说一个break只能跳出一个循环语句。
3.2 continue 的作用是跳过本次循环,进入下一次循环。说人话就是在循环语句中,程序遇到continue就直接进入下一次循环,continue后边的代码便忽略不再执行。
例:
需要注意的是,在while循环和for循环中,使用continue语句的执行略有差异,对于初学者来说需要小心。
例如:1. 在左边这张图 while循环中,当 i=5 时,程序就会进入死循环,因为continue直接跳过了后面的调整代码 i=i+1 ,使得 i 的值一直是5,出不了循环。
2. 而在右边这张图中,continue执行后会跳到for循环的调整语句部分 i++,使 i 变成6,使得程序正常执行,满足需求。