GESP 一级 · GESP 202403 C++ 一级 第 9 题

选择题 · 答案 B · 考点:循环控制

← 整套速查表 GESP 一级 全部真题

题目

下面 C++ 代码执行后的输出是( )。

int N = 10;
while(N){
    N -= 1;
    if(N%3 == 0)
        cout << N << "#";
}
答案:B

考点

循环控制

解题思维

这道题考的是while循环的执行流程与取模运算。拿到题先别急着看选项,盯着while(N)和N-=1的顺序:循环条件先判断,再进体,所以N=0时还会多跑一次,且此时N%3==0会触发输出。

常见错误

最容易掉进‘循环在N=1时停止’的直觉坑里,漏掉末尾的0#;或者把减法顺序搞反,以为先输出再减一,导致选项C那种把10也输出的错误;还有人会纠结while(N)和while(N>0)的区别,其实这题里N先减1再判条件,所以N=0时条件仍为真,这是命题人专门挖的‘条件检测时机’坑。

详细解析(节选)

考点定位

GESP一级 C++ 循环结构与条件判断。命题人卡住的是‘while条件检测时机’——90%考生误以为循环在 N=1 时停止,却忽略了 N 先减 1 再判条件,导致漏掉 0#。

逐行追踪

从 main 开始,记录每个变量的值变化。初始 N=10。

因此输出顺序为 9#6#3#0#,对应选项 B。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断