考纲要求
- 理解程序默认按顺序执行,遇到选择结构时根据条件决定走哪一条分支,遇到循环结构时重复执行循环体。
- 掌握 if / else if / else 的写法,理解条件成立与不成立时分别执行哪一段。
- 掌握 for、while 循环的写法,能算出循环体被执行了多少次,能说清循环变量的初值、条件和更新各自起什么作用。
- 了解 break 提前结束整个循环、continue 跳过本次剩余语句但没有结束循环的区别。
典型题型
- 给出一段带 for 循环的程序,要求写出输出结果或算出循环执行次数。
- 给出一段 if / else 嵌套的程序,判断某组输入会走哪条分支。
- 补全循环条件,使程序恰好输出要求的内容。
常见错误
- 循环次数算错。for (int i = 0; i < n; i++) 的循环体执行 n 次,因为 i 取 0 到 n-1;写成 i <= n 则会执行 n+1 次。
- 在 if 的条件后面多写一个分号,导致条件后面那条语句变成循环或分支的唯一内容,后面的语句无条件执行。
- 循环体里忘记更新循环变量,导致条件永远成立,形成死循环。
- switch 的某个分支忘记写 break,程序会继续执行下一个分支,出现意料之外的结果。
- 把 == 写成 =,条件变成赋值,判断结果不符合预期。
深入理解
三种结构是搭积木的三种块
顺序结构就是语句从上到下依次执行,它不需要专门的关键字。选择结构用 if / else if / else,按顺序逐个判断,只要有一个条件成立,后面的分支全部跳过——这一点决定了「多个 if 连写」和「if-else if」结果可能不同。循环结构是让同一段代码重复执行,for 适合次数已知,while 适合次数未知但知道停止条件。
任何复杂程序都可以只用这三种结构拼出来,所谓「结构化程序设计」说的就是这个。
for 循环的三个部分怎么读
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}执行顺序是:先执行一次初始化 int i = 1,然后判断 i <= 5,成立就执行循环体,循环体结束后执行 i++,再回到判断。初始化只做一次,判断和自增每轮都做。
循环次数可以这样算:从 1 到 5 含两端,共 5 次。一般地,for (i = a; i <= b; i++) 执行 b - a + 1 次,for (i = a; i < b; i++) 执行 b - a 次。差一错误绝大多数来自把 < 和 <= 弄混。
break 和 continue 只差一个动词
break 是「整个循环不做了,立刻跳出去」,程序继续执行循环后面的语句。continue 是「本轮剩下的不做,直接进入下一轮」,循环本身还在继续。
两者的典型用法:在数组里找第一个满足条件的数,找到就 break;统计时跳过不合格的数据,用 continue。嵌套循环中它们只作用于最内层那一重,这一点常被用来出「输出什么」的题。
自编例题
从 1 加到 100
用循环求 1 + 2 + … + 100 的和并输出。请说明循环执行了多少次、循环变量最终是多少。
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
cout << sum << endl;
return 0;
}循环变量 i 从 1 开始,条件是 i <= 100,每次加 1,所以 i 依次取 1 到 100,循环体正好执行 100 次。每轮把当前 i 加进 sum,循环结束时 sum 就是 1 到 100 的和。注意 sum 必须定义时初始化为 0,否则起点不确定;循环结束后 i 的值是 101,因为 i 变成 101 时条件不再成立,循环才结束。
相关真题
这块内容在整条路线里的位置:GESP C++ 1 级备考路径。
READY TO START
开始练习
先做一套本级别测评,报告会指出哪些知识点需要重点补;再回到本页对照考纲要求逐条核对,把不确定的条目记下来集中练。
常见问题
for 循环到底执行几次?
看条件与循环变量的变化。for (int i = 0; i < n; i++) 从 0 数到 n-1,共执行 n 次;如果写成 i <= n,就从 0 数到 n,共执行 n+1 次。
break 和 continue 有什么区别?
break 立即结束整个循环,跳到循环之后的第一条语句;continue 只结束本次循环的剩余部分,回到循环的更新与条件判断处,继续下一轮。
if 后面为什么要用花括号?
当分支里只有一条语句时可以省略花括号,但一旦有多条语句或后续要补充语句,省略会改变语义,容易出现「只有第一条语句受条件控制」的错误。建议一律写花括号。
