#include <iostream>
using namespace std;
const int NMAX = 100;
int n;
void fun(int arrays[NMAX][NMAX])
{
int c, i, j;
int z = n * n;
c = 0;
int counter = 1;
while (counter <= z)
{
i = 0;
j = 0;
for ( i += c,j+=c; j < n-c; j++)//从左到右 (c,c)开始到(c,n-c-1)
{
if (counter > z) break;
arrays[i][j] = counter++;
}
for (j--,i++; i < n-c; i++)//从上到下 (c,n-c-1) (n-c-1,n-c-1)
{
if (counter > z) break;
arrays[i][j] = counter++;
}
for (i--,j--; j>=c; j--)//从右向左 (n-c-1,n-c-1) (n-c-1,c)
{
if (counter > z) break;
arrays[i][j] = counter++;
}
for (j++,i--; i >= c+1; i--)//从下向上 (n-c-1,c)->(c+1,c)
{
if (counter > z) break;
arrays[i][j] = counter++;
}
c++;
}
}
int main()
{
int arr[NMAX][NMAX] = {};
cin >>n;
fun(arr);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%5d", arr[i][j]);
cout << endl;
}
system("pause");
return 0;
}
输入10