代码实现:
#include<stdio.h>
int main(){
int num;
scanf("%d",&num);
int i,j,k;
int flag;
flag=num/2;
int a[10][10];
int count=1;
for(k=1;k<=flag;k++)//表示循环的圈数,后面开展的循环都是围绕这个展开
{
//每一次循环位置都是固定的
i=k-1;//表示每一层的起始位置
j=k-1;
for(j;j<=num-2-(k-1);j++)//上
{
a[i][j]=count++;
}
for(i;i<=num-2-(k-1);i++)//右
{
a[i][j]=count++;
}
for(j;j>=k;j--)//下
{
a[i][j]=count++;
}
for(i;i>=k;i--)//左
{
a[i][j]=count++;
}
}
if(num%2==1)
{
a[num/2][num/2]=num*num;
}
for(i=0;i<=num-1;i++)
{
for(j=0;j<=num-1;j++)
{
printf("%5d ",a[i][j]);
}
printf("\n\n");
}
return 0;
}
运行结果: