【C】LV1-04-C语言-4控制语句
摘要:
本文主要是记录C语言
笔记——控制语句。
一、顺序结构
先执行第一条语句,然后是第二条、第三条……一直到最后一条语句,这称为顺序结构。

二、选择结构
1.if...else...
- 基本形式
1 | if(表达式) |

- 嵌套形式
1 | if(表达式) |
- 阶梯形式
1 | if (表达式1) 语句块1...; |

【注意】
(1)语句块只有单条语句时,{ }
可以省略,但是当有若干条语句时,必须用{ }
括起来。
(2)对于表达式,一般情况下为逻辑表达式或关系表达式;也可以是任意类型(包括整型、实型、字符型、指针类型)
(3)要注意表达式中的判断条件原则是非0即为真。
(4)if
语句嵌套时,else
总是与它上面的最近的if
配对,与书写格式无关。要实行强行的配对关系可以利用{ }
来实现。
2.switch
- 基本形式
1 | switch(表达式) |

【注意】
(1)每个常量表达式的值必须各不相同,否则将会出现矛盾。
(2)当表达式的值与case
后面的常量表达式值(可以是整型、字符型或者枚举型)相等时,就执行此case后面的语句。case 常量:
只起语句标号的作用。另外要注意多个case
可以执行一组语句。
(3)switch
中的表达式可以是整型、字符型或枚举型。
(4)break
语句用于强行跳出switch
,一般每个case
后面应有一个break
语句,default
分支后的break
可以省略。一般情况default
分支都放在最后面,当然,也可以放在开头或者中间,但是此时的break
就不可以省略了。
三、循环结构
1.while
1.1基本形式
1 | while(表达式) |
先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while
整体 后面的代码。

1.2实例
1 | include <stdio.h> |

【注意】while
循环是先判断表达式为真,然后才执行循环,若为假,则直接结束循环,不会再执行循环体内的语句块。
2.do...while
2.1基本形式
1 | do{ |
先执行“语句块”,再计算“表达式”的值,当值为真(非0)时,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 do...while
整体后面的代码。

2.2实例
1 | include <stdio.h> |

【注意】do...while
循环是先执行一次循环,然后才判断表达式为真,然后才继续执行循环,若为假,则直接结束循环,不会再执行循环体内的语句块。所以当两个实例中的判断条件n > 2
变为n > 5
时while
循环结构一次也不执行,而do...while
循环结构会执行一次,这点需要注意。
3.for
3.1基本形式
1 | for(表达式1; 表达式2; 表达式3) |
执行过程:
(1) 先执行“表达式1”。
(2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。
(3) 执行完循环体后再执行“表达式3”。
(4) 重复执行步骤 (2) 和 (3),直到“表达式2”的值为假,就结束循环。
上面的步骤中,(2) 和 (3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 (2) 和 (3)。

【注意】
(1)“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式1”可省略,但循环之前应给循环变量赋值。
(2)表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式2”可省略,将陷入死循环。
(3)“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。“表达式3”可省略,但在循环体中增加使循环变量值改变的语句。
四、辅助控制语句
1.return
1.1基本形式
1 | return (表达式); /* 有没有 ( ) 都可以*/ |
1.2基本应用
- 返回函数的值
当return
应用在函数中时,可以用于返回一个值,如return (10 + 9);
- 结束程序
当return
应用在函数中时,不仅可以用于返回一个值,还可以直接结束该函数,return
语句执行完毕,它后边的所有语句不再执行,直接跳到主函数继续执行,若是用在主函数中,则遇到return
直接结束主函数,整个程序结束,后边的语句不再执行。
【注意】 return
语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return
语句被执行,所以只有一个返回值(少数的编程语言支持多个返回值,例如Go
语言)。
2.goto
goto
语句是一种无条件流程跳转语句,通常 goto
语句与 if
语句结合使用,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。
2.1基本形式
1 | /* 定义一个语句标识 flag_name (flag_name只是一个名字)*/ |
【注意】flag_name
后边的语句可以加{ }
,也可以不加。不过加上的话可读性会强一些。
2.2基本应用
- 跳出循环
1 |
|

goto flag_name;
语句放在循环中用于跳出循环,用于结束循环时,此时flag_name
处的代码有两种情况:
(1)第一种是放在循环上边,比循环先执行,这个时候,flag_name
处的程序会先执行一遍,所以,切记,这里边不要直接放return
语句,否则程序直接结束了,有需要的话可以加一个判断,以保证程序可以正常运行。
(2)第二种是放在循环下边,这个时候,只有满足了跳转指令时,程序才会跳转到flag_name
处执行。
- 构成循环
1 |
|
3.break
3.1基本形式
1 | break; |
break
语句通常用在循环语句和开关语句中。当break
用于开关语句switch
中时,可使程序跳出switch
而执行switch
以后的语句;如果没有break
语句,则将成为一个死循环而无法退出。
当break
语句用于do-while、for、while
循环语句中时,可使程序终止循环而执行循环后面的语句,通常break
语句总是与if
语句联在一起,即满足条件时便跳出循环。
3.2基本应用
- 跳出一层循环
1 |
|

【注意】
(1)break
语句对if-else
的条件语句不起作用;
(2)在多层循环中,一个break
语句只向外跳一层。
4.continue
4.1基本形式
1 | continue; |
continue
语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue
语句只用在for、while、do-while
等循环体中,常与if
条件语句一起使用,用来加速循环。
4.2基本应用
- 直接跳过剩余语句执行下一次循环
1 |
|
