一、题目背景
想象有一张 n × n 的方格纸,小杨从第 1 行画到第 n 行,每行从第 1 列画到第 n 列。每一个格子决定画什么字符。
二、H 字绘制规则
对于任意位置 (i, j),其中 i 为行号,j 为列号:
- 最左列:如果 j == 1,输出
|。 - 最右列:如果 j == n,输出
|。 - 中间行:如果 i == (n+1)/2,输出
-。 - 其他地方:输出
a。
逻辑总结:
- 如果 列==1 或 列==n → 输出
| - 否则如果 行是中间行 → 输出
- - 否则 → 输出
a
三、参考程序
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) { // 控制行
for(int j = 1; j <= n; j++) { // 控制列
if(j == 1 || j == n) {
cout << "|";
} else if(i == (n + 1) / 2) {
cout << "-";
} else {
cout << "a";
}
}
cout << endl;
}
return 0;
}
四、图形打印通用模板
此类问题通常使用双重循环配合坐标判断来解决。
for(int row = ; row <= n; row++) {
( col = ; col <= n; col++) {
(条件 ) cout << ;
(条件 ) cout << ;
cout << ;
}
cout << endl;
}


