代码如下
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int m[n][n],t=1,i=0,j=0,nff=1;
for (i = 0;i<n;i++){ //m[n][n]初始化
for (j = 0;j<n;j++)
m[i][j] = 0;
}
i = 0, j = 0;
while (t <= n * n){ //实现主体
if (m[i][j] == 0) {
m[i][j] = t++;
}
if(nff==1){
while(j+1<n&&m[i][j+1] == 0){
if(t>n*n)
break;
m[i][++j] = t++;
}
nff=2;
i++;
}
else if(nff==2){
while(i+1<n&&m[i+1][j] == 0){
if(t>n*n)
break;
m[++i][j] = t++;
}
nff=3;
j--;
}
else if(nff==3){
while(j-1>=0&&m[i][j-1] == 0){
if(t>n*n)
break;
m[i][--j] = t++;
}
nff=4;
i--;
}
else{
while(i-1>=0&&m[i-1][j] == 0){
if(t>n*n)
break;
m[--i][j] = t++;
}
nff=1;
j++;
}
}
for (i = 0;i<n;i++){ //打印
for (j = 0;j<n;j++){
if(m[i][j]<10)printf(" %d ", m[i][j]);
else printf("%d ", m[i][j]);
}
printf("\n");
}
return 0;
}