第1个回答 2019-10-18
个人程度还不够好啊,写了好长才写出来,。:
#include<stdio.h>
#define
MAX
500
main()
{
int
i=0,j=0,a[MAX][MAX]={0},n,number=1,mod=1;
printf("输入阶数\n");
scanf("%d",&n);
getchar();
do
{
if(a[i][j]==0)
{
a[i][j]=number;
number++;
}
if(mod==1)
{
if(j<n-1&&a[i][j+1]==0)
j++;
else
{
i++;
mod=2;
}
}
else
if(mod==2)
{
if(i<n-1&&a[i+1][j]==0)
i++;
else
{
j--;
mod=3;
}
}
else
if(mod==3)
{
if(j>=1&&a[i][j-1]==0)
j--;
else
{
i--;
mod=4;
}
}
else
if(mod==4)
{
if(i>=1&&a[i-1][j]==0)
i--;
else
{
if(a[i][j+1]!=0&&a[i+1][j]!=0&&a[i-1][j]!=0&&a[i][j-1]!=0)
{
break;
}
j++;
mod=1;
}
}
}while(mod!=5);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
getchar();
}