GESP 二级 · GESP 202512 C++ 二级 第 12 题

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

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

题目

下面 C++ 代码执行后,其输出是( )。

int cnt = 0;
for (int i = 0; i < 5; i++)
    for (int j = i; j < 4; j++)
        cnt += 1;
cout << cnt;
答案:B

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制|嵌套循环

1. 考纲定位:GESP二级"算法基础"模块,考查循环次数统计。命题人专盯"嵌套循环边界易错"这一硬伤——外层for(i<5)内层for(j<i; j<4)极易被误算成j<i到j<5,导致答案偏大。此题卡住绝大多数考生对循环上限的敏感度,尤其是容易把内层j<i误看成j<i到j<4共5次。

2. 解题思维:先抓外层i取值0,1,2,3,4共5次;内层j从i到3(含3)共4‑i次。累加得(4‑0)+(4‑1)+(4‑2)+(4‑3)+(4‑4)=10。通法:对嵌套循环,逐层写出取值范围→计算每层循环次数→累加,或找规律直接求和。本题可化简为等差数列求和:首项4,末项0,项数5,和=5×4/2=10。

3. 陷阱拆解:A项9是内层j<i到j<4少算一次;C项14把内层上限错成j<5,多计两次;D项20是外层i到5,少算一次外层,却把内层上限又当成5,双重错误。最阴险细节是j<i与j<4同时出现,边界条件"j<4"常被忽略,很多人会下意识认为j<i到j<4共5次,导致多算。

4. 反命题思维:若把外层改成i<6,内层同上,答案变成11;把内层改成j<i; j<5,答案变成12。刷到类似题先问"循环上限到底是多少,边界是开还是闭",然后按步骤逐层计数。

同考点真题

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