GESP 二级 · GESP 202406 C++ 二级 第 13 题

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

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

题目

下面 C++ 代码用于实现如下图所示的效果,其有关说法正确的是( )。

1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
for (int i = 1; i < 6; i++) { // L1
    for (int j = 1; j < i+1; j++) // L2
        cout << i*j << " ";
    cout << endl;
}
答案:A

考点

循环控制

解题思维

答案A。for循环每次迭代后执行更新表达式(如i++)。循环体执行次数由初始值、条件和更新共同决定。

常见错误

循环变量的初值、终值和步长共同决定循环次数。for(i=0;i<n;i++)执行n次。

详细解析(节选)

【考点】嵌套循环控制|条件边界判定|输出流操作

🎯 考纲定位 本题考查 GESP 二级"循环结构"模块的核心能力——循环嵌套与边界控制。命题人专挑"循环边界"这个高频失分点:二级考生容易混淆 i<6 与 i<=6 的差别,误以为 6 行才完整,忽略了题目图示本身就只到 5 行。

🧠 解题思维 外层 i 从 1 到 5 决定行数(共 5 行),内层 j 从 1 到 i 决定每行元素个数(第 1 行 1 个、第 2 行 2 个……形成三角形)。i*j 产生乘积序列,L2 内输出后、L1 末尾的 endl 完成换行——这是生成多行表格的标准范式:先处理单行数据,再统一结束该行。

🪤 陷阱拆解 B 错在把 endl 嵌入 L2 内部:每输一个数就换行,变成 25 行单列输出,完全破坏表格结构。 C 错在移到 L1 外部:所有数字挤在一行输出,末尾才有一个换行,等于没换行。 D 错在删掉 endl:同样造成单行超长输出,且没有换行符结尾(程序输出不规范)。 最阴险的细节是 L1 条件写死为 i<6,看似"少一行",实则与题目图示完美匹配——考生若不加细看题图,就会凭经验补成 6 行。

🔄 反命题思维 若把 L1 改成 i<=6,会多输出一行"6 12 18 24 30 36 ",直接破坏表格形状;若把 L2 改成 j<=i,因 j 从 1 开始,效果不变。 刷到类似题先问自己:这个循环到底控制什么维度?边界条件为什么是这个数?

同考点真题

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