#include<stdio.h>
#define N 16 //行和列
int n, //n为输入的数量
bianjie,
i,j,
direct=1;//1为右 2为下 3为左 4为上
int a[N][N]={0};
int pointer=2;
void main()
{
scanf("%d",&n);//总数量
for(i=0;i<N;i++)
{
if(i*i>=n)
{
bianjie=i;
break;
}
}
for(i=0,j=0,a[0][0]=1;pointer<=n;)
{
if(direct==1)//应往右
if(j+1==bianjie || a[i][j+1]!=0)//已到边界
{
direct=2;i++;
}
else//没没到边界
j++;
else if(direct==2)//应往下
if(i+1==bianjie || a[i+1][j]!=0)//已到边界
{
direct=3;j--;
}
else//没没到边界
i++;
else if(direct==3)//应往左
if(j==0 || a[i][j-1]!=0)//已到边界
{
direct=4;i--;
}
else//没没到边界
j--;
else if(direct==4)//应往上
if(i==0 || a[i-1][j]!=0)//已到边界
{
direct=1;j++;
}
else//没没到边界
i--;
a[i][j]=
C语言练习,螺旋填数
最新推荐文章于 2022-03-08 10:03:52 发布