下面 C++ 代码执行后输出的是 3 。
int ans = 0;
for (int idx = 1; idx <= 7; idx += 2) {
if (idx == 5)
continue;
if (idx * idx > 30)
break;
ans += idx;
}
cout << ans;模拟循环执行流程,注意idx递增步长为2,循环内先判断continue再判断break,ans累加发生在两个条件之后。关键要逐次代入idx值跟踪状态变化。
A选项陷阱在于学生容易忽略continue的跳过效应,误以为5会被累加;或者把break条件误读为idx>30而非idx*idx>30。循环边界idx=7时idx*idx=49>30触发break,但idx=5时continue跳过累加,这两处细节决定最终结果。
本题考查GESP一级大纲中"循环结构"与"条件语句"模块。命题人卡住的是学生是否真正理解continue与break的语义差异——绝大多数考生会机械执行循环却忽略continue的跳过效应,或者在break条件判断上出现代数错误。
看到题先模拟循环:idx从1开始每次+2,循环体内按顺序执行三个语句。逐次代入:
最终ans=4,题目断言输出3,故判断为错误。