GESP 二级 · GESP 202603 C++ 二级 第 8 题

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

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

题目

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

int cnt = 0, i, j;
for (i = 1; i < 5; i++){
    for (j = 0; j < i; j++)
        cout << j << "#";
    break;
}
if(i >= 5)
    cout << (i*j);
答案:c

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制(break 语句)|条件判断

看到 break 就要警惕——它只跳出最内层循环。本题外层循环 i=1 时,内层 j 从 0 到 0 输出 0#,随即触发 break,外层循环立即终止。此时 i 仍为 1,不满足 if(i>=5),后续无输出。

选项 A/B 的陷阱在于默认循环跑满 4 轮(i=4),且误以为 if 会执行;选项 D 把内层循环当成独立执行,忽略了 break 对 i 的影响。最阴险的是:if 里的 i*j 看似会打印,但 i 停在 1、j 停在 0,且条件不成立,实际什么也不输出。

改题思路:若删去 break,i 会走到 4,if 仍不成立;若将 break 移至内层,i 仍为 1,但 j 会遍历到 i-1,输出会变。刷到此类嵌套循环带 break 的题,先问自己"循环到底停在哪一层,变量定格成什么值",再判断条件分支。

同考点真题

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