(5)下面是一个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
#include<stdio.h>
#define n 5
int main()
{
int a[n][n]={0};
int i,j;
int x,y;
x=0;y=0;
for(i=1;i<=n*n;){
while(y<n&&a[x][y]==0) a[x][y++]=i++;
y--;x++;
while(x<n&&a[x][y]==0) a[x++][y]=i++;
y--;x--;
while(y>=0&&a[x][y]==0) a[x][y--]=i++;
y++;x--;
while(x>=0&&a[x][y]==0) a[x--][y]=i++;
y++;x++;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
putchar('\n');
}
return 0;
}