1 #include<stdio.h> 2 int main() 3 { 4 int i,j,m,n; 5 while(scanf("%d",&n)!=EOF) 6 { 7 int k=0,num[100][100]; 8 if(n%2==0)//计算旋转次数; 9 m=n/2; 10 else 11 m=n/2+1; 12 for(i=0;i<m;i++)//顺时针旋转;根据第一层找到规律; 13 { 14 for(j=i;j<n-i;j++) 15 num[j][n-i-1]=++k; 16 for(j=n-i-2;j>=i;j--) 17 num[n-i-1][j]=++k; 18 for(j=n-i-2;j>=i;j--) 19 num[j][i]=++k; 20 for(j=i+1;j<n-i-1;j++) 21 num[i][j]=++k; 22 } 23 for(i=0;i<n;i++)//输出,注意格式; 24 { 25 for(j=0;j<n;j++) 26 { 27 if(j==0) 28 printf("%d",num[i][j]); 29 else 30 printf(" %d",num[i][j]); 31 } 32 printf(" "); 33 } 34 } 35 return 0; 36 }