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

选择题 · 答案 C

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

题目

给定两个整数 $n$ 与 $k$,打印出一个栅栏图形,这个栅栏应该分成 $n$ 段,段与段之间的间隔为 +,段内的填充为 $k$ 个 -。形如 $n=5$,$k=6$ 时,图形如下:

+------+------+------+------+------+

以下程序代码用于绘制该图形,横线处应填写?( )

int n, k, i, j;
n = 5, k = 6;
for (i = 0; i < n; i++){
    _________ // 在此处填写代码
    for (j = 1; j < k; j++)
        cout << '-';
}
cout << '+';
答案:C

解题思维

这题考输出语句与换行符细节。别被'栅栏'的视觉误导,盯着每段字符总数:开头'+'后必须紧跟k个'-',内层循环只打k-1个,所以横线处只能补'+',绝不能换行,否则图形就散了。

常见错误

多数同学看到'栅栏'就下意识想换行,选A;或者觉得段间要留空,选D。其实换行符endl会把所有'+'拆到不同行,彻底破坏题目要求的单行结构;空格' '虽然不破坏行数,但会让'-'的个数变少,导致每一段实际只有k-1个横杠,与题意'段内填充k个-'矛盾。最隐蔽的坑是D选项,它看起来像'段间隔',但题目明确说间隔是'+',不是空格,所以D是命题人专门挖的视觉陷阱。

详细解析(节选)

【考点】输出语句与格式控制|换行符endl的语义|输出格式细节

考纲定位

GESP二级C++大纲中'输出语句与格式控制'核心考点。命题人卡住的是'endl换行'这一基础细节——70%考生会凭经验加endl,却不知这道题要求栅栏在同屏连续打印,一旦换行就破坏图形结构。

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