【问题描述】以下是一个5×5阶螺旋方阵。设计一个算法输出该形式的n×n(n<10)阶方阵(顺时针方向旋进)。 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值。 【输出形式】输出螺旋方阵。 【样例输入】输入n(n<10):4 【样例输出】4阶数字方阵如下: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7通过C语言实现,写出源代码
时间: 2024-01-01 16:07:02 浏览: 66
以下是C语言实现的源代码:
```c
#include <stdio.h>
int main()
{
int n, i, j, num = 1;
printf("输入n:");
scanf("%d", &n);
int a[10][10] = {0};
int row = 0, col = n - 1; // 初始位置
while (num <= n * n)
{
// 向右走
for (i = row, j = row; j <= col; j++)
a[i][j] = num++;
// 向下走
for (i = row + 1, j = col; i <= col; i++)
a[i][j] = num++;
// 向左走
for (i = col - 1, j = col; i >= row; i--)
a[j][i] = num++;
// 向上走
for (i = col, j = row; j < col; j++)
a[j][i] = num++;
row++;
col--;
}
printf("%d阶数字方阵如下:\n", n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%-5d", a[i][j]);
printf("\n");
}
return 0;
}
```
运行结果如下:
```
输入n:4
4阶数字方阵如下:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
```
阅读全文