下面 C++ 代码执行后输出是( )。
int i;
for(i = 1; i < 5; i++){
if(i % 3 == 0)
break;
printf("%d#",i);
}
if(i > 5) printf("END\n");答案A。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】for 循环|条件语句|break 语句
解题思维:先逐轮推演。i=1 时 1%3≠0,打印"1#";i=2 时 2%3≠0,打印"2#";i=3 时 3%3==0 触发 break,循环终止且 i 保持为 3。跳出后判断 i>5,3>5 为假,故不输出"END"。最终输出"1#2#"。
陷阱拆解:B 错在默认循环会继续执行到 i=4 甚至输出"END",忽略了 break 立即终止循环;D 错在完全无视 break 且误判 i>5,把循环看成无条件执行。最阴险处在于 break 后 i 的值仍为触发条件的那个数(3),许多学生凭直觉以为"结束"意味着 i 会自增到 4,实际并非如此。
反命题思维:若把判断改为 i%2==0,break 会在 i=2 时触发,输出将只有"1#";若把末尾条件改为 i>=5,则 3>=5 仍为假,输出不变。这类变式常用来检验你是否真正理解循环控制流与条件判断的先后顺序。