GESP C++ 1 级 · 知识点

控制语句结构

一级要求掌握顺序、选择、循环三种基本结构,重点是把循环次数、条件边界和分支执行路径算准。

对应知识域:控制语句结构(顺序、循环、选择)相关真题 4 套

本页为本站原创整理,例题与解析均由本站编写,不取自任何题库原题;考试范围以 CCF 官方公布为准,本平台不是 GESP 官方平台。

考纲要求

  • 理解程序默认按顺序执行,遇到选择结构时根据条件决定走哪一条分支,遇到循环结构时重复执行循环体。
  • 掌握 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 后面为什么要用花括号?

当分支里只有一条语句时可以省略花括号,但一旦有多条语句或后续要补充语句,省略会改变语义,容易出现「只有第一条语句受条件控制」的错误。建议一律写花括号。

本级别其他知识点

官方依据