小思路
#include<stdio.h>
int main() {
int i,j,n,t,w,e=0,b=0,c=0,d=0;
scanf("%d",&n);
int a[n][n];
i=0;
j=0;
w=1;
for(t=1; t<=n*n; t++) {
a[i][j]=t;
switch(w) {
case 1:
j++;
if(j==n-1-e) {
w=2;
b++;
break;
case 2:
i++;
if(i==n-1-d) {
w=3;
e++;
}
break;
case 3:
j--;
if(j==0+c) {
w=4;
d++;
}
break;
case 4:
i--;
if(i==0+b) {
w=1;
c++;
}
break;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%3d ",a[i][j]);
}
printf("\n");
}
return 0;
}