GESP 二级 · GESP 202509 C++ 二级 第 7 题

选择题 · 答案 D

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

题目

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

cnt = 0;
for (int i = -10; i < 10; i++)
    for (int j = 0; j < i; j++)
        cnt += 1;
cout << cnt;
答案:D

解题思维

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

常见错误

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

详细解析(节选)

【考点】嵌套循环|循环条件依赖|累加计数

【考纲定位】本题考查GESP二级"循环结构"与"变量初始化"考点,属于二级核心内容。嵌套循环的边界判断与累加计数是二级高频考点,命题人专挖"内层循环条件依赖外层变量"这一盲区,卡住大量考生对循环执行次数的直观判断。

【解题思维】看到题先抓两个关键:①内层循环条件j<i意味着当i≤0时内层一次也不进;②外层i从-10到9遍历,仅当i>0时内层才累加。计算过程:i=1时j加1次,i=2时j加2次……i=9时j加9次,求和1+2+…+9=45。此类题通法是"分层枚举+条件剪枝",先判断内层何时进入,再按执行次数累加,切忌盲目认为每一轮外层都会触发内层。

【陷阱拆解】A项145误把内层次数当成"i+1"或从1累加到10,B项125是外层i从0到11的错误计数,C项55恰好是1+2+…+10,命题人用i起始值-10制造"内层永远进"的错觉;最阴险处在外层i≤0时内层循环条件j<i直接不成立,这是"条件依赖"的语义陷阱,只背结论不看执行流必错。

【反命题思维】把i起始值改成0或1,答案不变仍为45;若把内层条件改为j<i+1,则累加到10得55,命题人正是用负数区间制造"内层不执行"的假象。刷到类似题先问自己:内层循环条件是否真的在每次外层迭代都成立?

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