原题链接+++++++++++++++++++++++++++
#include<stdio.h>
int main()
{
int n, i, j, k = 1;
int t = 0; //此处的t是用来记录圈数
int a[10][10] = { 0 };
scanf("%d", &n);
while (k <=n*n ) //顺时针走,k是元素个数,达到n*n时退出循环
{
for (i = t;i < n - t;i++) //向右赋值
a[t][i] = k++;
for (i = t + 1;i < n - t;i++) //向下赋值
a[i][n - t - 1] = k++;
for (i = t + 2;i <= n - t;i++) //向左赋值
a[n - t - 1][n - i] = k++;
for (i = t + 2;i < n - t;i++) //向上赋值
a[n-i][t] = k++;
t++;
}
for (i = 0;i < n;i++) //输出
{
for (j = 0;j < n;j++)
{
printf("%2d ", a[i][j]);
}
printf("\n");
}
return 0;
}