下面 C++ 代码执行后输出是( )。
num = 0;
while (num <= 5){
num += 1;
if (num == 3)
continue;
printf("%d#", num);
}答案A。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】while 循环|continue 语句|printf 输出
1. 🎯 考纲定位(考点定位) GESP 一级"循环与控制结构"必考基础题。命题人卡住的是考生对 continue 执行流程的盲区——很多人以为 continue 只是跳过 printf,却忘了它会让本次循环直接结束,连最后的 num += 1 都不会再执行。
2. 🧠 解题思维(拆解与通法) 初始化 num=0,循环条件 num<=5。每次进循环先 num+=1,再判断是否等于 3:等于 3 时 continue 直接跳过 printf;不等于 3 才打印。当 num 从 2 变到 3 时触发 continue,所以 3 不输出;当 num 从 5 变到 6 时打印 6#,此时循环条件 6<=5 为假,循环结束。最终输出 1#2#4#5#6#。
3. 🪤 陷阱拆解(命题人的套路) 选项 B 漏掉末尾 #,是忘记每次 printf 都带 #;选项 C/D 误把 3 输出来,是根本没理解 continue 会跳过后续代码;更阴险的是很多人以为 num 到 6 就停了,其实循环条件 num<=5 是在 num+=1 之后判断的,所以 num=6 那轮也会执行一次 printf。
4. 🔄 反命题思维(教练升华) 命题人把 continue 放在 printf 之前,就是专门测试你对循环体内语句执行顺序的敏感度——如果你只背结论,不看代码逻辑,就会掉进"3 也要输出"的坑里。