GESP 二级 · GESP 202606 C++ 二级 第 14 题

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

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

题目

如下 C++ 代码执行后,输入 $4$ 后,输出的数字图形是( )。

int n;
cin >> n;
for (int i = n; i > 0; i--) {
    for (int j = 0; j < n - i; j++)
        cout << "0 ";
    for (int k = 0; k < i; k++)
        cout << k + 1 << " ";
    cout << endl;
}

A.

1 2 3 4
1 2 3 0
1 2 0 0
1 0 0 0

B.

1 2 3 4
0 1 2 3
0 0 1 2
0 0 0 1

C.

1 2 3 4
2 3 4 0
3 4 0 0
4 0 0 0

D.

0 0 0 1
0 0 1 2
0 1 2 3
1 2 3 4
答案:B

考点

循环控制

解题思维

答案B。考点: 循环结构——for/while的执行与嵌套。

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

详细解析(节选)

【考点】嵌套循环控制|动态范围计算|输出格式化

🎯 考纲定位 本题考查 GESP 二级《基本编程》模块中的嵌套循环考点。命题人专门设计这道题,就是要卡住那些"只记得会写循环,但不懂循环变量如何影响内层逻辑"的考生——外层循环变量 i 同时控制内层两个循环的迭代次数,这种"动态范围"是二级到三级跨越时的典型失分点。

🧠 解题思维 看到双重 for 循环,第一反应是"每行输出内容随 i 变化"。关键观察:内层循环 1 执行 n−i 次,循环 2 执行 i 次,两者相加恒等于 n——这意味着每行总宽度固定,只是 0 与数字的分配比例在变。外层 i 从 n 递减到 1,所以第一行全数字、最后一行全 0。通法:嵌套循环题,先确认内层循环次数是否依赖外层变量,若依赖则逐行模拟输出,注意循环边界 i>0 而非 i<n。

🪤 陷阱拆解

细节:每行末尾都有空格,但选项里没体现——这是打印题常见的视觉干扰项。

🔄 反命题思维 如果把外层条件改成 i < n,循环 2 改成 cout << i+1,整个图形就会变成"数字递增、0 递减"的镜像版。刷到类似题,先问自己"外层循环是递增还是递减?内层次数和当前变量是什么关系?"——这三问答对,90% 的嵌套循环题都能秒杀。

同考点真题

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