用c++ 编程实现:输入数字n(n<10),输出n层正方形图案。正方形图案最外层的数字是层数,最内层的数字是1,从外向内数字递减。
时间: 2024-05-13 19:16:58 浏览: 144
C++算法:第 N 位数字原理、源码、测试用例
以下是使用C++实现的代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入层数n:";
cin >> n;
int len = 2 * n - 1; // 正方形边长
int num = n; // 最外层数字
int matrix[len][len]; // 存储图案的矩阵
// 初始化矩阵
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
matrix[i][j] = min(min(i, j), min(len - 1 - i, len - 1 - j));
}
}
// 替换数字
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (matrix[i][j] == n - 1) {
matrix[i][j] = num;
} else if (matrix[i][j] < n - 1) {
matrix[i][j] = num - matrix[i][j];
}
}
}
// 输出图案
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
思路分析:
1. 根据输入的层数n,计算出正方形的边长为2n-1。
2. 创建一个2n-1行2n-1列的矩阵,用于存储图案。
3. 初始化矩阵中每个位置的数字,即为该位置到最外层的距离。
4. 遍历矩阵,将距离为n-1的位置替换为最外层数字num,将距离小于n-1的位置替换为num-距离。
5. 输出矩阵,即为所求的正方形图案。
例如,当输入n为3时,输出的图案为:
```
3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3
```
阅读全文