#include <stdio.h>
int main()
{int a[20][20];
int i,j,n,x,y,x1,y1,n1,sum;
printf("please input : n:\n");
scanf("%d",&n);
n1=sum=n,x=0,y=1,x1=1,y1=0;
for(i=1;i<=n*n;i++) //只需要解释一下这里
{x+=x1;y+=y1;a[x][y]=i;
if (i==sum)
{if(x1==1||x1==-1 )
{n1-=1;sum+=n1; y1=x1; x1=0; }
else{sum+=n1;
x1=-y1;
y1=0; //到这里就够了
}}}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
{printf("%3d",a[j][i]);}
printf("\n");
}return 0;}
//谢谢。。我始终弄不明白算法怎么回事。。。。
int main()
{int a[20][20];
int i,j,n,x,y,x1,y1,n1,sum;
printf("please input : n:\n");
scanf("%d",&n);
n1=sum=n,x=0,y=1,x1=1,y1=0;
for(i=1;i<=n*n;i++) //只需要解释一下这里
{x+=x1;y+=y1;a[x][y]=i;
if (i==sum)
{if(x1==1||x1==-1 )
{n1-=1;sum+=n1; y1=x1; x1=0; }
else{sum+=n1;
x1=-y1;
y1=0; //到这里就够了
}}}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
{printf("%3d",a[j][i]);}
printf("\n");
}return 0;}
//谢谢。。我始终弄不明白算法怎么回事。。。。