GESP 二级 · GESP 202503 C++ 二级 第 23 题

判断题 · 答案 A · 考点:循环控制

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

题目

下面的 C++ 代码执行后将输出 10 行 "OK"。( )

for (int i = 0; i < 5; i++)
    for (int j = 0; j < i; j++)
        printf("OK\n");
答案:A

考点

循环控制

解题思维

答案A。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。

常见错误

整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。

详细解析(节选)

【考点】循环控制|嵌套循环|计数与求和

1. 🎯 考纲定位 本题考查 GESP 二级大纲中「循环结构」与「嵌套循环」的核心概念。命题人专门设置这道题,就是要卡住那些只懂「for 会循环」但不懂「循环嵌套时内层循环次数随外层变化」的考生。二级学生常在这里栽跟头——以为两层 for 就是简单乘法 5×5=25,或者直接数 0-4 共 5 次,完全忽略了内层循环的动态范围。

2. 🧠 解题思维 标准拆解链:先看外层 i 从 0 到 4(含),再看内层 j < i,意味着每轮内层循环次数分别为 0、1、2、3、4 次。总次数用等差数列求和:0+1+2+3+4=10。输出恰好 10 行"OK",判断为正确。通法:嵌套循环计数时,把外层每个值对应的内层迭代次数列出来累加,别用外层次数乘内层次数,除非内层范围与外层无关。

3. 🪤 陷阱拆解 选错 B 的常见套路:有人以为 i < 5 就是 5 次循环,直接 5×5=25;有人只数外层 5 次,内层平均 2 次,得 10 就蒙对;还有人把 j < i 误看成 j <= i,内层次数变成 1+2+3+4+5=15。最阴险的细节是 i = 0 时内层一次都不执行——这个边界条件很多考生会下意识忽略。只背结论不推导的人,看到类似题就会掉进「乘法思维」或「平均数陷阱」。

4. 🔄 反命题思维 命题人若把外层改成 i < 6,总次数变 15;若内层改成 j <= i,外 0-4 对应内 1-5,总次数 15;若内层改成 j < 2,每轮固定 2 次,总次数 10。下次刷到嵌套循环计数题,先问自己:内层循环次数是否依赖外层?边界值有没有被漏掉?

同考点真题

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