07 輸出螺旋式數字方陣

請寫出一個 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);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章