有初學者嘗試用 C 語言打印楊輝三角,但程序輸出不正確。以下是原始代碼片段:
int a[10][10];
int i, j, h;
scanf_s("%d", &h); // 想打印的行數
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (j > i) a[i][j] = 0; // 對列大於行的元素清零
for (i = 0, j = 0; i < 10; i++) a[i][0] = 1; // 把第一列全部變成1
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (j = i) a[i][j] = 1; // 這裡用了賦值而非比較
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
if (i > 0 && j > 0) a[i][j] = a[i-1][j] + a[i-1][j-1];
for (i = 0; i < h+1; i++) {
for (j = 0; j < h+1; j++) {
if (i >= j) printf("%d", a[i][j]);
}
printf("\n");
}
#include <stdio.h>
int main() {
int a[10][10] = {0}; // 整體初始化為0
int i, j, h;
scanf("%d", &h); // 輸入行數
// 設置第一列為1
for (i = 0; i <= h; i++) a[i][0] = 1;
// 設置對角線為1
for (i = 0; i <= h; i++) a[i][i] = 1;
// 填充內部元素
for (i = 2; i <= h; i++) {
for (j = 1; j < i; j++) {
a[i][j] = a[i-1][j] + a[i-1][j-1];
}
}
// 打印楊輝三角
for (i = 0; i <= h; i++) {
for (j = 0; j <= i; j++) {
printf("%d\t", a[i][j]);
}
printf("\n");
}
return 0;
}
通過以上修正,程序即可正確打印指定行數的楊輝三角。建議初學者多練習邊界條件與初始化,養成良好的編碼習慣。