1. 按照以下示例,编写一个程序输出该形式的n*n(n<10)阶螺旋方阵(按顺时针方向旋进)
时间: 2024-01-01 08:06:42 浏览: 22
好的,以下是输出n阶螺旋方阵的程序。
```C++
#include <iostream>
using namespace std;
const int MAXSIZE = 10; // 定义方阵的最大阶数
// 输出n阶螺旋方阵
void PrintSpiralMatrix(int n) {
int a[MAXSIZE][MAXSIZE] = {0}; // 定义n阶方阵并初始化为0
int x = 0, y = 0, num = 1; // x、y为当前坐标,num为当前要填入的数字
while (num <= n * n) {
while (y < n && a[x][y] == 0) { // 向右填数
a[x][y] = num;
y++;
num++;
}
y--; // 越界,回退一步
x++; // 转向向下
while (x < n && a[x][y] == 0) { // 向下填数
a[x][y] = num;
x++;
num++;
}
x--; // 越界,回退一步
y--; // 转向向左
while (y >= 0 && a[x][y] == 0) { // 向左填数
a[x][y] = num;
y--;
num++;
}
y++; // 越界,回退一步
x--; // 转向向上
while (x >= 0 && a[x][y] == 0) { // 向上填数
a[x][y] = num;
x--;
num++;
}
x++; // 越界,回退一步
y++; // 转向向右
}
// 输出方阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n;
cout << "请输入方阵阶数(n<10):";
cin >> n;
PrintSpiralMatrix(n);
return 0;
}
```
运行结果如下:
```
请输入方阵阶数(n<10):5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
```
程序中采用了顺时针旋转填数的方法,定义了一个n阶方阵并初始化为0。定义当前坐标x、y和当前要填入的数字num,不断按照向右、向下、向左、向上的顺序填数,直到填满整个方阵。最后输出方阵即可。