#include<stdio.h> #include<string.h> int main() { int i,j=0,n,k,a[20][20],num=1;scanf("%d",&n); for(k=0;k<n/2;k++) { for(i=k;i<n-1-k;i++) a[i][k]=num++; for(i=k;i<n-1-k;i++) a[n-1-k][i]=num++; for(i=n-1-k;i>k;i--) a[i][n-1-k]=num++; for(i=n-1-k;i>k;i--) a[k][i]=num++; } if(n%2==1) A [n- / 2 ] [n-/ 2 ] * = n- n-; when // n is odd, there will be little above code bug, correction int In Flag = 0 ; for (I = 0 ; I <n-; I ++ ) for (J = 0 ; J <n-; J ++ ) { flag++; printf("%4d",a[i][j]); if(flag%n==0) the printf ( " \ n- " ); // control line feed } return 0; }