GESP 二级 · GESP 202312 C++ 二级 第 10 题

选择题 · 答案 B

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

题目

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

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

解题思维

这题考的是嵌套循环的累加计数。拿到题先别急着敲代码,把外层循环的i从0到4列出来,再看看内层j到底跑几次,最后把每次加进去的数加起来,答案自然出来。

常见错误

最容易掉进的坑就是把内层循环次数当成固定的5次,或者把j<i误看成j<5,那样就会算出20或30这种错误答案。还有个隐蔽的坑是i=0那轮内层一次都不进,cnt不变,但很多人会下意识以为至少加一次。

详细解析(节选)

考点定位与命题意图

这道题出自GESP二级C++,核心考查的是“嵌套循环执行次数”与“累加计数”的基础算法能力。命题人把这道题放在试卷里,就是想卡住那些只会机械地写循环、却不会去算循环体实际执行了多少次、也不会把每次执行带来的变化累加起来的学生。它不是考你背结论,而是考你追踪变量变化的能力。

解题心法:从外层看内层

看到题先想:外层循环i从0到4,一共5轮。内层循环j从0到i-1,也就是说,当i=0时,j<0不成立,内层一次都不进;i=1时,j<1,j只能取0,进1次;i=2时,j<2,j取0、1,进2次……依此类推。每进一次内层,cnt就加1。所以cnt最终的值,就是这5轮里内层总共执行的次数之和。

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