GESP 二级 · GESP 202506 C++ 二级 第 7 题

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

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

题目

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

int i, Sum = 0;
for (i = 1; i < 10; i++) {
    Sum += i;
    if(i % 2) continue;
    if(i % 7) break;
}
cout << Sum;
答案:C

考点

循环控制

解题思维

答案C。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。

常见错误

整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。

详细解析(节选)

【考点】for 循环控制|continue 语句|break 语句

解题思维:手动模拟执行流程。i=1 时 Sum=1,i%2=1 触发 continue 跳过剩余语句;i=2 时 Sum=3,i%2=0 不跳过,接着判断 i%7=2≠0 成立,立即 break 退出循环,最终输出 3。

陷阱拆解:选项 A(45)是 1~9 累加结果,对应把 continue 误当成"跳过本循环但不影响后续";选项 B(28)是 1~7 累加,对应把 if(i%7) 读反成"i 是 7 的倍数才 break";选项 D(0)是误以为 continue 会中断整个循环。最阴险的是 if(i%7) 这个条件——它等价于"i 不是 7 的倍数",命题人特意反用取模逻辑制造认知冲突,且 break 触发时机在 i=2 而非 i=7,很多考生一眼看到 7 就默认循环到 7 再 break。

反命题思维:若将 if(i%2) 改为 if(i%2==0),continue 条件反转,循环会继续处理偶数;若将 if(i%7) 改为 if(i%7==0),break 会触发在 i=7 处,Sum 变成 28。刷到此类题先问:条件表达式到底是"等于"还是"不等于"?continue/break 作用域是否被视觉误导?

同考点真题

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