先放这里吧,明天再用一个循环搞定一起写总结,主要就是flag和上下界sup,inf的作用,合理设置上下界的变化还有合适的flag插入点和变化点,就可以很好的解决问题。 推测这个循环可以衍生出贪吃蛇。 #include<stdio.h>

int main() { int n=0,i=0,j=0; int arr[20][20]={0}; scanf("%d",&n); int flag=1; //1右转2下转3左转4上转 int count=1; int sup=n,inf=n; int max=0,min=0; while(count<=n*n) { if(flag==1) { while(j<sup) arr[i][j++]=count++; flag=2; j--; i++; } if(flag==2) { while(i<inf) arr[i++][j]=count++; i--; j--; flag=3; sup--; inf--; } if(flag==3) { while(j>=min) arr[i][j--]=count++; i--; j++; flag=4; } if(flag==4) { while(i>max) arr[i--][j]=count++; i++; j++; max++; min++; flag=1; } }

 for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        printf("%d ",arr[i][j]);   
    }
      printf("\n");
}
return 0;

}