下面 C++ 代码执行后的输出是 ( )。
x = 1;
while (x < 100) {
if (x % 3 != 0)
cout << x << ",";
else if (x / 10)
break;
else
x += 5;
x += 2;
}
cout << x;答案D。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】循环控制|条件判断|变量更新
🎯 考纲定位 本题考查 GESP 二级"循环与条件判断"综合应用。命题人专门设计这道题卡住那些只背"If-Else 结构"的考生——他们往往忽略循环体内变量更新的时序关系,误以为条件分支会改变后续所有迭代。
🧠 解题思维 模拟执行:x=1 进循环,1%3≠0 打印"1,",x+=2 得 3;x=3 时 3%3=0,3/10=0,走 else 分支 x+=5 得 8,再 x+=2 得 10;x=10 打印"10,",x 变 12;x=12 时 12%3=0 但 12/10=1 触发 break 退出。输出"1,10,12"。
通法:含无条件增量的循环,必须按执行顺序逐次跟踪变量——先判断哪个分支成立,再应用该分支操作,最后执行所有迭代都会触发的语句(本题是末尾的 x+=2)。
🪤 陷阱拆解 A 项只算到第一次打印,漏掉后续迭代;B 项误以为 x 直接变成 3 就打印,忽略 x+=2 在 else 分支之后;C 项完全没注意到 x=12 时的 break 条件,以为会继续打印到 15、17。最阴险的是"else if(x/10)"——当 x=12 时 x/10=1 为真,直接跳出,但考生容易误判为