GESP 二级 · GESP 202606 C++ 二级 第 22 题

判断题 · 答案 B

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

题目

如下 C++ 代码执行时如输入 $10$,输出将是 $100$。

int cnt = 0, N;
cout << "请输入正整数:";
cin >> N;
for (int i = 0; i < N; i++)
    for (int j = -i; j < i; j++)
        cnt += 1;
cout << cnt;
答案:B

解题思维

答案B。考点: 循环结构——for/while的执行与嵌套。

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

详细解析(节选)

【考点】循环嵌套|等差数列求和|C++语法细节

1. 🎯 考纲定位 GESP 二级 C++ 模块,考查循环嵌套与累加逻辑。命题人用看似简单的双层循环,卡住绝大多数考生对累加次数的直觉——很多人会误以为内层循环跑 N 次,直接得出 N² 或 N(N+1),却忽略了 j 从负数开始的偏移。

2. 🧠 解题思维 先固定 i,数内层 j 的取值个数。j 从 -i 到 i-1,共 i - (-i) = 2i 次。cnt 累加得到 Σ_{i=0}^{N-1} 2i = N(N-1)。代入 N=10 得 90,与"输出 100"矛盾。

3. 🪤 陷阱拆解 选项 A 把"循环次数"与"输出值"直接等同,是典型的"直觉陷阱"。命题人偷换概念:内层循环次数随 i 变化,不是定值;且 j 从负数开始,累加次数翻倍。若只背"双层循环=平方",必掉坑。

4. 🔄 反命题思维 若把内层改为 j=0;j<i,cnt 就会变成 N(N-1)/2;再加一句"若输入 11,输出应为 110",就能考等差数列求和公式的应用。刷到此类题时,先问"内层循环的步长和起始值是什么",再推导总次数。

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