创建个标识就可以 直接看代码吧
1 2 3
8 9 4
7 6 5
int main()
{
int a[100][100];
int n;
scanf("%d",&n);
int m=n*n;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=0;printf("%d",a[i][j]);
}
printf("\n");
}
int d=1,sum=1;
int i=0,j=n-1;
while(1)
{
if(d==1&&i<n)
{
a[i][j]=sum;
sum=sum+1;
i++;
if(i==n||a[i][j]!=0)
{
d=2;
i--;
sum--;
}
}
if(d==2&&j>=0)
{
a[i][j]=sum;
sum++;
j--;
if(a[i][j]!=0||j==-1)
{
d=3;
j++;
sum--;
}
}
if(d==3&&i>=0)
{
a[i][j]=sum;
sum++;
i--;
if(a[i][j]!=0||i==-1)
{
d=4;
i++;
sum--;
}
}
if(d==4&&j<n)
{
a[i][j]=sum;
sum++;
j++;
if(a[i][j]!=0||j==n)
{
d=1;
j--;
sum--;
}
}
if(a[i][j+1]!=0&&a[i][j-1]!=0&&a[i+1][j]!=0&&a[i-1][j]!=0)
break;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(a[i][j]==0)
a[i][j]=sum;
printf("%3d",a[i][j]);
}
printf("\n");
}
}