請寫出一個 C 語言程序,該程序對輸入的任意正整數n,產生並且顯示相應的 n 階螺旋式數字方陣。
例如,當 n =5時,要顯示的螺旋式數字方陣爲
#include <stdio.h>
int main()
{
int n, i, j;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%3d", get(i, j, n));
printf("\n");
}
}
// 每次輸出一個口
int get(int i, int j, int n)
{
// 第一行 1 2 3 4 5
if (i == 1) return j;
// 最後一行 3*5-1-1=13 3*5-2-1=12
if (i == n) return 3 * n - j - 1;
// 第一列(第二~倒數第二行) 4*5-2-2=16
if (j == 1) return 4 * n - i - 2;
// 最後一列(第二~倒數第二行) 5+2-1=6
if (j == n) return n + i - 1;
// 中間行和列 4*5-4+1=20-3=17
return 4 * n - 4 + get(i - 1, j - 1, n - 2);
}