GESP 一级 · GESP202609 C++ 一级 第 11 题

选择题 · 答案 D

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

题目

如下 C++ 代码执行时,下列说法错误的是(  )。

int N, tot;
cin >> N;
tot = 0;
while (N > 0) {
cout << N << "#";
tot += 1;
N -= 1;
}
cout << tot << "-END";
答案:D

解题思维

模拟代码执行流程,注意while循环条件N>0只允许正数进入循环体。每次循环输出当前N值后N减1,同时tot累加。循环结束后输出tot和-END。关键要逐行推演变量变化过程。

常见错误

选项D把tot误算为0——实际上输入1时循环执行一次,tot从0变1,输出应为1#1-END。选项A看似奇怪(末尾又出现3),但循环共执行3次,每次输出递减的N(3、2、1),循环结束后输出的是tot值3,所以末尾的3-END完全正确。

详细解析(节选)

1. 考纲定位

本题考查GESP一级《算法流程》模块中的while循环与变量累加。命题人故意把循环次数和输出值混淆,卡住的是初学者对"循环体执行后变量如何变化"的基本理解——很多学生只看循环次数,忽略循环体内N和tot的同步递减与累加。

2. 解题思维

模拟执行,严格按代码顺序推演:

步骤N值tot值输出
初始10—
while判断1>0 ✅——
循环体1输出1#tot=1N=0
while判断0>0 ❌——
循环结束———
最后输出—tot=11-END

因此输入1时,完整输出应为:1#1-END。

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