以下 C++ 代码判断一个正整数 $N$ 的各个数位是否都是偶数。如果都是,则输出“是”,否则输出“否”。例如 $N=2024$ 时输出“是”。则横线处应填入( )。
int N,Flag;
cin >> N;
Flag = true;
while (N != 0){
if (N % 2 != 0){
Flag = false;
________;
}
else
N /= 10;
}
if(Flag == true)
cout << "是";
else
cout << "否";这题核心是循环控制里的提前退出。只要发现一个奇数位,Flag 变 false 后就没必要继续遍历了,直接跳出循环即可,所以横线填 break。
最容易把 continue 当 break 用,觉得反正 Flag 已经是 false 了,跳过当前语句继续下一轮好像也行,殊不知 continue 会跳过 else 里的 N/=10 导致死循环。还有人会被 else 分支已有的除法干扰,下意识想填 N/=10 以为双重除法没坏处,其实逻辑完全多余。
这道题考查的是 GESP 二级 C++ 基础语法中的循环控制能力,具体对应大纲"循环语句"模块。命题人设置这道题的意图非常明确:卡住那些"只会写完整循环但不会提前退出"的考生。GESP 二级对循环体的完整性要求不苛刻,但循环的终止条件判断是核心,这题就是专门测这个弱点的。
从关联数据看,"循环控制"在题库里总共只考了 5 题,覆盖 3 个考试级别(2019-2024),其中 GESP 二级就占了 2 题。这说明它不是高频考点,但一旦考到,往往就是"精准打击",专门针对学生容易混淆的 break 和 continue。