文章目录
流程控制结构
顺序结构:程序中最简单最基本的流程控制。没有特定的语法结构,执行顺序是自上而下,依次执行。一般代码都是如此执行的;
分支结构:使用逻辑运算的结果进行判断,此时会产生选择,按照不同的选择执行不同的代码。C++ 中有 if
分支语句,switch
分支语句;
循环结构:满足某个条件的情况下,反复执行某个功能,直到这个条件不满足才会终止循环。C++ 中有 for
循环语句,while
循环语句,do while
循环语句;
分支结构
1、if
语句
简单划分,if
语句可以有三种形式:
-
if
格式:if (分支条件) { 语句体; }
先执行分支条件,若其返回值为
true
,则执行 语句体,否则不执行语句体。 -
if else
格式:if (分支条件) { 语句体1; } else { 语句体2; }
先执行分支条件,若其结果为
true
,则执行语句体1,否则执行语句体2。 -
if ... else if ... else
格式:if (分支条件1) { 语句体1; } else if (分支条件2) { 语句体2; } ... else { 语句体n+1; }
先执行分支条件1,若为
true
,执行语句体1,否则执行分支条件2,以此类推。如果都是false
,则执行else
中的语句体n+1。
2、switch
语句
其格式为:
switch (表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
注意:
- 表达式的结果必须是整数类型或者枚举类型;
case
后面跟的是要和表达式进行比较的值;- 语句体部分可以是一条或多条语句;
break
表示中断、结束的意思,可以结束switch
语句;default
语句表示所有情况都不匹配的时候执行;default
语句可以省略;- 若没有
break
结束语句,代码会按照顺序往下执行,并不会跳过其他语句;
循环结构
在指定循环时,要切记下面几条指导原则:
- 指定循环终止的条件;
- 在首次执行判断条件语句之前,初始化条件;
- 在条件再次被判断之前,更新条件;
1、for
循环
1.1 基础 for
循环
结构稳定,适合处理循环次数固定的场景。
for (初始化语句; 判断条件语句; 控制条件语句) {
循环体语句;
}
- 执行初始化语句;
- 执行判断条件语句,看看循环是否应该继续执行:
- 如果为
true
,继续执行; - 如果为
false
,就结束循环;
- 如果为
- 执行循环体语句;
- 执行控制条件语句(更新用于判断条件的值);
- 回到2继续进行;
1.2 奇特的 for
循环
// 一种变体
for (;;) {
...
}
// 另一种变体
int i = 0;
for (;; i++) {
...
}
for
循环中的空条件被视为 true
。这些例子既不易于阅读,也不能用作编写循环的通用模型。
1.3 基于范围的 for
循环(C++11)
它简化了一种循环场景:对数组(或容器类)的每个元素执行相同的操作。
double prices[5] = {2.3, 4.5, 6.7, 8.9, 1.2};
for (double x : prices) {
cout << x << endl;
}
代码中的 x
会按照顺序依次取出 prices
数组中的所有元素。
如果我们希望修改数组中的元素,可以使用 C++ 中的引用符号 &
,它和取地址符长得一样,但是用的地方完全不同。
for (double &x : prices) {
x = x * 2;
}
上述代码就会将 prices
中的所有元素都乘以 2。
2、while
循环语句
先判断后执行,适合处理“当…”的循环业务场景。
初始化条件语句;
while (判断条件语句) {
循环体语句;
控制条件语句;
}
- 执行初始化条件语句;
- 执行判断条件语句:
- 如果为
true
,继续执行; - 如果为
false
,结束循环;
- 如果为
- 执行循环体语句;
- 执行控制条件语句;
- 回到2继续;
3、do while
循环语句
先执行后判断,适合处理“直到…”的循环业务场景。
初始化条件语句;
do {
循环体语句;
控制条件语句;
} while (判断条件语句);
- 执行初始化条件语句;
- 执行循环体语句;
- 执行控制条件语句;
- 执行判断条件语句:
- 如果是
true
,继续执行; - 如果是
false
,就结束循环;
- 如果是
- 回到2继续;
4、break
和 continue
break:强制跳出循环体;
continue:忽略本次循环剩下的语句,直接开始下一次循环;
5、循环嵌套
- 在一个循环体语句中又包含另一个循环语句,称为循环嵌套;
- 每次执行外层循环,内层循环都要完整的执行一遍;
- 假设外层循环执行
m
次,内层循环执行n
次,则程序总的循环次数为m*n
;
6、死循环
造成死循环的几种情况:
- 程序的漏洞:
- 忘记写控制条件语句;
- 控制条件语句向着趋近于终止的相反方向发展;
- 刻意制造:
- 构造死循环,用以处理不确定次数的循环场景;
- 在循环体内增加判断,当条件达成时利用
break
关键字强制结束循环;
两种最简单的死循环格式:
for (; ; ) {...}
while (true) {...}