1. 题目解析与需求理解
这道编程题要求我们实现一个生成H字矩阵的功能。题目描述通常包含以下核心要素:给定一个正整数n作为矩阵规模参数,程序需要输出一个由大写字母H构成的特定图案矩阵。
从实际教学经验来看,这类题目主要考察以下几个方面的能力:
- 对循环结构的掌握程度(特别是嵌套循环)
- 对二维矩阵坐标的理解和操作能力
- 对字符输出格式的控制技巧
- 对问题抽象和模式识别的能力
1.1 H字矩阵的视觉特征
典型的H字矩阵具有以下视觉特征:
- 矩阵规模为(2n+1)×(2n+1)
- 主对角线(从左上到右下)和副对角线(从右上到左下)由字母H组成
- 矩阵中心点是一个H
- 其余位置用英文句点(.)填充
例如当n=2时,正确的输出应该是:
code复制H...H
.H.H.
..H..
.H.H.
H...H
1.2 解题思路分析
解决这类问题的关键在于找到坐标(i,j)与输出字符之间的数学关系。通过观察可以发现:
- 主对角线上的点满足i == j
- 副对角线上的点满足i + j == 2n
- 中心点同时满足以上两个条件
- 其他位置输出点号
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 代码实现与详细解析
2.1 基础版本实现
cpp复制#include <iostream>
using namespace std;
void printHMatrix(int n) {
int size = 2 * n + 1;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (i == j || i + j == size - 1) {
cout << 'H';
} else {
cout << '.';
}
}
cout << endl;
}
}
int main() {
int n;
cin >> n;
printHMatrix(n);
return 0;
}
代码解析:
- 矩阵尺
