下面 C++ 代码执行后将输出 0123。( )
for (i = 0; i < 5; i++)
for (i = 0; i < i; i++)
continue;
printf("%d\n", i);答案B。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】循环结构|嵌套循环|语句执行流程
🎯 考纲定位 本题考查 GESP 二级《C++ 程序设计》中"循环结构"与"语句执行流程"的核心考点。命题人刻意设置嵌套循环陷阱,卡住考生对 continue 作用域与变量作用域的理解。
🧠 解题思维 完整思考链:外层循环 i 从 0 到 4 共 5 次,内层循环条件 i < i 恒为假,因此内层循环体(含 continue)一次都不执行。内层循环结束后,printf 立即执行,输出当前 i 的值。逐次运行:i=0→打印 0,i=1→打印 1,i=2→打印 2,i=3→打印 3,i=4→打印 4。最终输出序列为 0,1,2,3,4。
🪤 陷阱拆解 陷阱点 1:continue 仅在内层循环体执行时生效,但内层循环条件 i < i 恒假,循环体一次都不执行,continue 形同虚设。陷阱点 2:嵌套循环中 i 的作用域,内层循环不执行就不会修改外层 i,因此外层循环正常推进。陷阱点 3:题干说"输出 0123",考生易误以为只输出前四个数,而代码实际输出 0,1,2,3,4 五个数。
🔄 反命题思维 命题人若将内层条件改为 i < 3,则 i=0,1,2 时内层循环执行,continue 会跳过 printf,最终只输出 3,4。反之若删除内层循环,输出仍为 0,1,2,3,4。刷到此类题,先问自己:"内层循环真的会执行吗?"