GESP 二级 · GESP 202409 C++ 二级 第 11 题

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

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

题目

下图是 C++ 程序执行后的输出。为实现其功能,横线处应填入代码是( )。

7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
int lineNum;
cin >> lineNum;
for (int i = 1; i < lineNum + 1; i++) {
    for (int ____________)
        cout << j << " ";
    cout << endl;
}
答案:C

考点

循环控制

解题思维

答案C。循环补全要分析循环变量的初始值、条件和更新方式,确保能产生目标输出。

常见错误

代入法验证时注意选项之间的细微差别。循环条件中的<和<=可能导致完全不同的结果。

详细解析(节选)

【考点】嵌套循环控制|循环变量初始化与条件|算术表达式比较

1. 🎯 考纲定位:本题属于 GESP 二级"循环与数组"模块核心题型。命题人故意把内层循环条件藏进选项,卡住的是"循环变量必须同时满足起始值与终止条件"这一基本功——很多考生只关注外层 i 控制行数,却忽略内层 j 要从 i 开始、到 2i-1 结束,导致输出完全跑偏。

2. 🧠 解题思维:看到输出图案,第一反应是每行数字个数递增,且起始数字等于行号。关键观察:第 i 行从 i 开始,到 2i-1 结束(共 i 个数)。因此内层循环必须满足:j 初始为 i,终止条件为 j<2*i。外层 i 从 1 到 lineNum,内层 j 从 i 到 2*i-1,恰好覆盖每一行。

3. 🪤 陷阱拆解:A 选项 j=i; j<i 只会执行一次(j=i 时 j<i 为假),B 选项 j=1; j<i 输出的是 1 到 i-1,与行号无关,D 选项 j=i+1; j<i+i 起始值多 1,导致第一行输出 2,全部错误。最阴险的是 C 选项的 j<i*2,表面看像 j<i 的变体,但乘号优先级高,实际正确——只有理解"起始值=行号,终止值=2*行号"才能避开。

4. 🔄 反命题思维:如果把这道题改成输出从 i 到 i+lineNum 的数字,答案会变成 j=i; j<i+lineNum; j++,这样就是另一类题。刷到类似题时,先问自己"命题人想考我什么",是考循环条件还是考算术表达式优先级,避免条件反射式选错。

同考点真题

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