输出结果为: 4 13 2 3 4 12 13 14 15 11 16 15 6 10 9 16 7
#include <stdio.h>
#define M 9
#define N 9
int main()
{
int direction=4,a[M][N]={1},i=0,j=0,n,q=1;
scanf("%d",&n);
while(a[i][j]<n*n)
{
if(direction==4)
{
a[i][j+1]=a[i][j]+1;
if(j==n-q)
{
direction=3;
}
else {
direction=4;
j=j+1;
}
}
else if(direction==3)
{
a[i+1][j]=a[i][j]+1;
if(i==n-q)
{
direction=1;
}
else {
direction=3;
i=i+1;
}
}
else if(direction==1)
{
a[i][j-1]=a[i][j]+1;
if(j==q-1)
{
direction=2;
}
else {
direction=1;
j=j-1;
}
}
else
{
a[i-1][j]=a[i][j]+1;
if(i==q)
{
direction=4;
q++;
}
else {
direction=2;
i=i-1;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
}