从左上角填上 1 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 3 个字符,前面使用空格补齐。
时间: 2024-04-14 19:30:35 浏览: 65
你可以使用一个二维数组来表示矩阵,并使用两个变量来记录当前位置和填入的数字。以下是一个示例代码:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n = 3; // 矩阵的大小
int matrix[3][3] = {0}; // 初始化矩阵为全0
int num = 1; // 要填入的数字
int row = 0, col = 0; // 当前位置
int direction = 0; // 方向,0表示向右,1表示向下,2表示向左,3表示向上
while (num <= n * n) {
matrix[row][col] = num;
num++;
switch (direction) {
case 0: // 向右
if (col + 1 < n && matrix[row][col + 1] == 0) {
col++;
} else {
direction = 1; // 改为向下
row++;
}
break;
case 1: // 向下
if (row + 1 < n && matrix[row + 1][col] == 0) {
row++;
} else {
direction = 2; // 改为向左
col--;
}
break;
case 2: // 向左
if (col - 1 >= 0 && matrix[row][col - 1] == 0) {
col--;
} else {
direction = 3; // 改为向上
row--;
}
break;
case 3: // 向上
if (row - 1 >= 0 && matrix[row - 1][col] == 0) {
row--;
} else {
direction = 0; // 改为向右
col++;
}
break;
}
}
// 输出矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(3) << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这段代码会生成一个3x3的矩阵,并按照顺时针方向填入数字。运行结果如下:
```
1 2 3
8 9 4
7 6 5
```
你可以根据需要修改`n`的值来生成不同大小的矩阵。