楊輝三角(Pascal's Triangle)是經典的程式設計練習題目,許多初學者在接觸 C 語言時都會被要求印出這個數學結構。本文將從基本概念出發,詳細解析如何用 C 語言印出 7 行楊輝三角,並提供完整的代碼註解,幫助新手理解陣列操作與迴圈邏輯。
楊輝三角是一個由數字排成的三角形幾何圖形。其特性是:

我們使用二維陣列 a[N][N] 來儲存三角形的值,其中 N = 7:
a[i][0] 和對角線元素 a[i][i] 設為 1a[i][j] = a[i-1][j-1] + a[i-1][j]#include <stdio.h>
#define N 7
int main() {
int a[N][N]; // 宣告 7x7 二維陣列儲存楊輝三角
int i = 0, j = 0; // 迴圈控制變數
// 步驟 1:初始化每行首尾為 1
for (i = 0; i < N; i++) {
a[i][0] = 1; // 每行第一個元素
a[i][i] = 1; // 每行最後一個元素(對角線)
}
// 步驟 2:計算內部元素值(從第 3 行開始)
for (i = 2; i < N; i++) { // i=2 代表第 3 行(索引從 0 開始)
for (j = 1; j < i; j++) { // j 從 1 到 i-1,跳過首尾
a[i][j] = a[i-1][j-1] + a[i-1][j]; // 核心公式:上左 + 上右
}
}
// 步驟 3:格式化輸出三角形
for (i = 0; i < N; i++) {
for (j = 0; j <= i; j++) { // 第 i 行有 i+1 個元素
printf("%d ", a[i][j]);
}
printf("\n"); // 換行,形成塔狀結構
}
return 0;
}
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1
A:雖然實際用到的空間是三角形,但二維陣列必須是矩形。定義 [7][7] 方便索引計算,浪費的空間在現代電腦中可忽略不計。
A:j=0 和 j=i 的位置已在初始化階段設為 1,內部計算只需處理中間的元素。
A:將 #define N 7 改為變數,並加入 scanf("%d", &N) 即可,但需注意陣列大小限制或改用動態記憶體配置。
觀察發現:計算第 i 行只需要第 i-1 行的資料。我們可以用一維陣列 int a[N] 從右向左更新,將空間複雜度從 O(N²) 降為 O(N)。有興趣的同學可以嘗試實作!
楊輝三角是理解陣列操作、巢狀迴圈與數學規律轉化為程式邏輯的絕佳練習。掌握「邊界初始化 → 內部遞推 → 格式輸出」這三步驟,不僅能解決此題,更能舉一反三應用於其他動態規劃問題。