GESP 二级 · GESP 202506 C++ 二级 第 11 题

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

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

题目

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

int i, j;
for(i = 0; i < 3; i++)
    for(j = 0; j < i; j++)
        printf("%d#%d-", i, j);
printf("END");
答案:D

考点

循环控制

解题思维

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

常见错误

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

详细解析(节选)

【考点】循环控制|嵌套循环|条件判断

1. 🎯 考纲定位:本题卡住的是对循环条件的机械记忆。命题人故意把 i 从 0 开始,利用"j < i"这个条件,让 i = 0 时内层循环直接跳过。绝大多数考生会误以为 i 从 1 开始,或者直接认为内层会执行,导致把 0#0- 也输出,掉进"默认循环从 1 开始"的陷阱。

2. 🧠 解题思维:模拟执行流程。外层 i = 0,1,2;i=0 时内层 j<0 不成立,什么都不输出;i=1 时 j=0 执行一次 printf(1,0)→"1#0-";i=2 时 j=0,1 各执行一次→"2#0-2#1-";最后 printf("END")。因此输出顺序是 1#0-2#0-2#1-END,对应选项 D。

3. 🪤 陷阱拆解:选项 A 把 i=0 时的"0#0-"也放进来了,命题人利用考生对循环起始值的不敏感;选项 B 和 C 都出现了"3#0-"或"2#2-",这是把外层条件 i<3 误读成 i<=3,或者把内层条件 j<i 误读成 j<=i 造成的。这些错误选项都是基于"循环多跑一次"或"多输一次"的惯性思维,只要记住"j 从 0 到 i-1",就能避开。

4. 🔄 反命题思维:如果把外层改成 i<=3,答案会变成 B;如果把内层改成 j<=i,答案会变成 C。刷到类似题先问自己:"循环条件里有没有等于号?i 从几开始?"这样就不会被命题人的小变化迷惑。

同考点真题

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