题目描述
所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
题目分析:
由题目描述容易想到;这题应该是数组函数输出类型。
由样例输出可以分析出三点,
其一,是否存在中间数,如图中就是25,这点该思考。
其二,如何构造这个输出函数。
现在可以带着问题分析下面答案,可能的做题障碍:函数循环条件。
#include <stdio.h>
#define N 10
int main()
{
int i, j, n, a[N][N] = { 0 }, value = 1;
scanf("%d", &n);
int k, start, end;
k = n;
start = 0;
end = n;
while (k > 1) {
for (j = start; j < end; j++)
{
a[start][j] = value++;
}
for (i = start + 1; i < end; i++)
{
a[i][end - 1] = value++;
}
for (j = end - 2; j >= start; j--)
{
a[end - 1][j] = value++;
}
for (i = end - 2; i > start; i--)
{
a[i][start] = value++;
}
k = k - 2;
start = start + 1;
end = end - 1;
}
if (n % 2)
a[start][end - 1] = value;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%3d", a[i][j]);
printf("\n");
}
return 0;
}