GESP 三级 · GESP 202509 C++ 三级 第 4 题

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

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

题目

执行以下 C++ 代码后,变量 sum 的值是( )。

int sum = 0;
for (int i = 1; i <= 5; i += 2) {
    sum += i;
    int sum=0;
}
答案:B

考点

循环控制

解题思维

答案B。追踪for循环:记录每次循环变量的值和累积结果的变化。注意循环终止条件。

常见错误

for循环体可能一次都不执行!这是和while循环一样的"先判断后执行"机制。

详细解析(节选)

【考点】循环控制|变量作用域|赋值语句

本题考查 C++ 三级《循环结构》中变量作用域与循环控制两条核心规则。命题人专盯"循环体内重复赋值"这一高频失分点,90% 考生会忽略局部变量覆盖效应,误以为内层赋值能重置外层累加器。

关键观察是内层 int sum=0; 声明的是局部变量,与外层 sum 同名但不同作用域,内层赋值不影响外层累加。按 i 序列 1,3,5 依次执行 sum+=i,外层 sum 最终为 1+3+5=9。注意循环条件 i<=5 与步长 i+=2 确保遍历恰好三次。

错项 A(6) 源于误以为每次循环 sum 被重置后只累加前两个 i;错项 C(15) 是忽略内层变量覆盖,直接累加 1+3+5+... 到 9 后继续;错项 D 则把 int sum=0; 当成语句而非变量声明,误判为死循环。最阴险处在内层"int sum=0;"看似重置却实际不作用,背结论必栽。

若将内层改为 sum=0;(去掉类型),则外层 sum 会被清零,结果变 5;若删除内层语句,sum 将为 9 仍正确。刷到类似题先问"这个赋值到底影响哪一层变量",避免被变量名迷惑。

同考点真题

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