【问题描述】以下是一个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值。 【输出形式】输出螺旋方阵。 通过C语言实现,写出源代码
时间: 2024-02-22 16:58:22 浏览: 63
以下是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 = 0; // 初始位置
int rowmin = 0, rowmax = n - 1, colmin = 0, colmax = n - 1; // 边界
while (num <= n * n)
{
// 向右走
for (j = col; j <= colmax; j++)
a[row][j] = num++;
rowmin++;
if (num > n * n)
break;
// 向下走
for (i = row; i <= rowmax; i++)
a[i][colmax] = num++;
colmax--;
if (num > n * n)
break;
// 向左走
for (j = colmax; j >= colmin; j--)
a[rowmax][j] = num++;
rowmax--;
if (num > n * n)
break;
// 向上走
for (i = rowmax; i >= rowmin; i--)
a[i][colmin] = num++;
colmin++;
if (num > n * n)
break;
}
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:5
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
```
阅读全文