作业介绍

双重循环与图形打印类问题核心知识点

双重循环图形打印问题的核心逻辑是

外层循环控制行数,内层循环控制每行的列数

通过精准控制循环变量实现各类规则/不规则图形的输出。以下是分模块的结构化知识点梳理:

一、双重循环基础语法

1. 循环结构选择

  • 优先使用for循环:适合行数/列数固定的场景,循环变量(行号i、列号j)的起始/终止条件清晰,可读性强。

  • 语法模板(以打印n行图形为例):

    for (int i = 1; i <= n; i++) {  // 外层循环:控制行(i从1开始符合认知习惯)
        for (int j = 1; j <= m; j++) {  // 内层循环:控制每行的列数
            cout << 字符;  // 输出图形元素(*、空格、数字等)
        }
        cout << endl;  // 一行结束后换行
    }
    

2. 循环变量的核心作用

  • 行变量i:决定当前打印的行数,通常与图形的“层数”“高度”直接相关(如金字塔的层数=行数)。
  • 列变量j:决定当前行的输出内容,需通过ij的数学关系控制(如空格数=总层数-i,星号数=2*i-1)。

二、图形打印的三大核心类型(竞赛高频考点)

1. 规则实心图形(基础必练)

  • 特征:每行的字符数量或类型有固定规律,无空心部分。
  • 典型题型:
    • 矩形:每行字符数固定(如n行m列的*矩形,内层循环j<=m)。
    • 三角形(金字塔):每行字符数递增/递减,如“右对齐三角形”(第i行输出i个*)、“居中三角形”(第i行先输出n-i个空格,再输出2i-1*)。
  • 关键技巧:通过i计算每行的“前缀空格数”和“目标字符数”,形成固定公式。

2. 空心图形(进阶考点)

  • 特征:仅图形边界输出字符,内部输出空格。
  • 典型题型:空心矩形、空心三角形、空心菱形。
  • 关键技巧:内层循环添加条件判断——仅当j是当前行的“边界列”(如第1列、最后1列)或i是“边界行”(如第1行、最后1行)时,输出目标字符,否则输出空格。 示例(空心矩形):
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= 5; j++) {
            if (i == 1 || i == 5 || j == 1 || j == 5) cout << "*";
            else cout << " ";
        }
        cout << endl;
    }
    

3. 复杂组合图形(竞赛难题)

  • 特征:由多个基础图形拼接而成(如“上下组合的三角形”“带数字/字母的图形”)。
  • 典型题型:
    • 数字图形:第i行输出i个i(如1、22、333),或按规律递增/递减的数字序列。
    • 对称图形:以中间一行为对称轴,上下图形对称(如菱形,上半部分递增,下半部分递减)。
  • 关键技巧:拆分图形为多个基础模块,分别编写每个模块的循环逻辑,再组合输出。

三、竞赛易错点与解题技巧

1. 高频易错点

  • 循环边界错误:如将i <= n写成i < n,导致少输出一行;内层循环列数计算错误(如居中三角形空格数少算1个)。
  • 空格与字符比例失调:忽略“空格数+字符数=固定值”(如居中图形总列数=2n-1),导致图形不规整。
  • 空心图形逻辑漏洞:忘记判断“边界行”或“边界列”,导致内部字符未替换为空格。

2. 解题三步法(通用模板)

  1. 分析图形结构:确定总行数n,每行的“空格数”“字符数”与行号i的关系,画出1-2行的具体示例(如第1行:3个空格+1个*)。
  2. 编写外层循环:控制行数i,明确起始(通常1)和终止(n)条件。
  3. 编写内层循环:根据i的规律,控制列数j,添加条件判断(如需空心/组合图形),输出对应字符。

3. 优化技巧

  • 公式化计算:将空格数、字符数转化为i的数学表达式(如空格数s = k - i,字符数c = 2i - 1),避免硬编码。
  • 模块化拆分:复杂图形按“上半部分+中间部分+下半部分”拆分,分别编写代码,降低逻辑复杂度。

四、竞赛真题适配(以GESP为例)

  • GESP一级/二级:侧重规则实心图形(矩形、右对齐三角形),考察双重循环的基本嵌套使用。
  • GESP三级/四级:侧重空心图形(空心矩形、菱形)和简单组合图形(数字图形),考察循环条件判断和规律总结能力。
  • 备考建议:先熟练掌握“三角形、矩形”的实心/空心写法,再练习对称图形和组合图形,每类图形至少编写3道不同变式题。

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
11
开始时间
2026-3-13 0:00
截止时间
2035-12-3 23:59
可延期
24 小时