#include<stdio.h>
int main()
{
int a[10][10]={0};
int n;
scanf("%d",&n);
int i=0,j=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
a[i][j]=-1;
}
}
i=0;j=0;
int num=1;
int flag=1;
while(num<=n*n){
if(a[i][j]==-1){
a[i][j]=num;
num++;
}
if(flag==1){
j++;
if(j==n||a[i][j]!=-1){
j--;
flag=2;
}
} else
if(flag==2){
i++;
if(i==n||a[i][j]!=-1){
i--;
flag=3;
}
} else
if(flag==3){
j--;
if(j==-1||a[i][j]!=-1){
j++;
flag=4;
}
}
if(flag==4){
i--;
if(i==-1||a[i][j]!=-1){
i++;
flag=1;
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
}
这题核心就是将四个方向移动设为1,2,3,4;
当触及到没有着数点就将数填入,遇到拐角改变方向即可
数组题不算难