删除下面 C++ 代码中的 continue 不影响程序的执行效果。( )
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
printf("偶数");
continue;
}
else
printf("奇数");
}答案A。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】循环控制|continue 语句|语句块执行范围
出品|
【解题思维】看到 continue 先定位它在 if 块内。执行 if 条件后打印偶数,continue 让循环直接跳到下一次迭代,else 分支根本不会执行。删掉 continue 后,if 块内仍只有 printf,else 依然只对应奇数分支——偶数时直接结束本次循环,奇数时走 else 打印。本质是判断"continue 后面是否有有效代码",这类题通法就是检查 continue 是否真能跳过后续语句。
【陷阱拆解】选项 B 的陷阱在于把 continue 和 break 混淆,以为去掉它会进入 else 分支——其实 else 本来就只对应奇数,偶数时 if 成立直接执行 continue 跳过 else。更隐蔽的坑是认为 continue 必须存在才能"结束本次循环",但 continue 只是跳过后续语句,这里后续已无语句。命题人刻意把 continue 放在 printf 后,诱导你联想"跳过 else",实则 else 本就不执行。
【反命题思维】若把 if 条件换成 i % 3 == 0,删除 continue 后,i=3 时会执行 else 分支打印"奇数",错误输出。若把 continue 移到 if 块外,它始终跳过整个循环体,输出全变"偶数"。这类题本质是考 continue 的"作用域",刷到类似题先问"continue 后面有没有要跳过的语句"。