GESP 一级 · GESP 202606 C++ 一级 第 9 题

选择题 · 答案 A · 考点:循环控制

← 整套速查表 GESP 一级 全部真题

题目

如下 C++ 代码执行后输出是 1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 。横线处应该先后依次填入的运算符是( )。

int num = 1;
for (int i = 0; i < 35; i++) {
    printf("%d ", num);
    if (num _______ 10)
        num _______ 2;
    else
        num _______ 1;
}
答案:A

考点

循环控制

解题思维

答案A。先分析已有代码的功能,确定输出目标,再反推横线处需要的代码。可用代入法验证。

常见错误

将每个选项代入横线处验证是最可靠的方法。注意代码的完整逻辑和输出格式。

详细解析(节选)

【考点】关系运算符|整数除法|循环控制

解题思维:输出呈现 1-11→5-11→5-11→5-7 的循环。11 是第一次>10 的时刻,若用 /= 2 则 11/2=5,正好对应后续起始值;若用 >= 会在 10 时触发,而 10 是合法打印值,与题意矛盾。每次循环 num 递增 1,重置后从 5 开始再累加,直到再次>10 才重置,因此形成 5-11 的循环段;总共 35 次迭代恰好覆盖最后的 5-7。

陷阱拆解:选项 B 的 >= 会提前在 10 时重置,导致 10 被吞掉;C 的 %= 取余得 1,与输出 5 不符;D 的 =+ 是非法语法。题目故意用 /= 制造“除以 2 得 5"的直觉陷阱,而真正关键的是运算符优先级与循环终止条件。

反命题思维:若把 > 改成 >=,输出会变成 1-10→1-11→1-10→1-7;若把 /= 改成 %=,输出会变成 1-11→1-11→1-11→1-7。这类题的核心是“边界条件决定行为”,刷到同结构循环题时,先问“重置发生在哪一步”,而不是死记“除 2 得 5"。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断