for (k=1; k<=2*h-1; k++)
if (k<2*h-1) printf("*");
if (k=2*h-1) printf("*\n"); // 錯誤1:= 應為 ==
for (i=2; i<=h; i++)
if (j<=i-1 || ...) // 錯誤2:j 未初始化、未循環
#include
int main() {
int h, i, j;
scanf("%d", &h);
// 第一行:2*h-1 個 *
for (j = 1; j <= 2*h-1; j++) putchar('*');
putchar('\n');
// 中間行:兩側 *,中間空格
for (i = 2; i < h; i++) {
for (j = 1; j <= 2*h-1; j++) {
if (j == h-i+1 || j == h+i-1) putchar('*');
else putchar(' ');
}
putchar('\n');
}
// 最後一行:中間一個 *
if (h > 1) {
for (j = 1; j < h; j++) putchar(' ');
putchar('*');
putchar('\n');
}
return 0;
}
gcc -Wall -Wextra -pedantic,編譯器會提示 if (k=...) 等隱患。i, j, k 變化。printf("i=%d j=%d\n", i, j);,對比預期與實際。心法: 先在紙上畫幾行找規律,再寫循環;調試是常態,不怕錯,怕不找錯。