下面 C++ 代码执行后输出是( )。
int k = 0;
while (k < 8) {
k += 2;
continue;
if (k > 5)
break;
cout << k << "#";
}
if (k >= 8)
cout << "FINISH";看到题先识别循环体内有 continue,这意味着每次循环末尾会无条件跳到 while 条件判断,直接跳过后续所有语句。因此循环里那个 cout 和 if 里的 break 都不可能被执行。再数 k 的取值:0→2→4→6→8,当 k 变成 8 时 while 条件不成立,循环结束,进入最后的 if 输出 FINISH。
选项 B 和 D 是典型陷阱——考生看到 cout 就以为自己会输出,忽略 continue 的跳转;选项 C 是误以为 if(k>5)break 能生效,其实它被 continue 跳过了。另外,循环结束后的 if(k>=8) 这行容易被漏看,导致以为只有循环输出。
看到题先识别循环体内有 continue,这意味着每次循环末尾会无条件跳到 while 条件判断,直接跳过后续所有语句。因此循环里那个 cout 和 if 里的 break 都不可能被执行。再数 k 的取值:0→2→4→6→8,当 k 变成 8 时 while 条件不成立,循环结束,进入最后的 if 输出 FINISH。
选项 B 和 D 是典型陷阱——考生看到 cout 就以为自己会输出,忽略 continue 的跳转;选项 C 是误以为 if(k>5)break 能生效,其实它被 continue 跳过了。另外,循环结束后的 if(k>=8) 这行容易被漏看,导致以为只有循环输出。
本题考查 GESP 一级「程序控制结构」模块中的 while 循环与流程控制语句(continue/break)。命题人专门放这道题,就是为了卡住绝大多数考生对 continue 跳转行为的理解——很多人看到循环里写了 cout 就默认会执行,却忘了 continue 会直接跳到下一次条件判断,把后面所有语句都跳过。