for (初始化; 條件判斷; 迭代增量) {
循環體;
}
巢狀迴圈中,外層控制「行」,內層控制「列/字符」,是圖形打印的通用模式。
#include <stdio.h>
int main(void) {
int n, i, j;
printf("輸入行數: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
// 1. 打印前導空格:n - 1 - i 個
for (j = 0; j < n - 1 - i; j++) putchar(' ');
// 2. 打印星號:2*i + 1 個
for (j = 0; j < 2 * i + 1; j++) putchar('*');
putchar('\n');
}
return 0;
}
輸入 5 輸出:
*
***
*****
*******
*********
關鍵規律:第 i 行(0-index)空格 n-1-i,星號 2*i+1。
#include <stdio.h>
int main(void) {
int i, j;
for (i = 1; i <= 9; i++) {
for (j = i; j <= 9; j++) { // j 從 i 開始 → 上三角
printf("%d*%d=%-3d ", i, j, i*j);
}
putchar('\n');
}
return 0;
}
輸出:
1*1=1 1*2=2 1*3=3 ... 1*9=9
2*2=4 2*3=6 ... 2*9=18
...
9*9=81
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) { // j 到 i 結束 → 下三角
printf("%d*%d=%-3d ", i, j, i*j);
}
putchar('\n');
}
輸出:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
...
9*1=9 ... 9*9=81
%-3d:左對齊佔 3 寬,保證列對齊。putchar 比 printf("%c") 輕量,適合單字符輸出。<= vs <,手寫推演前 2 行驗證。int i, j; 未初始化用於迴圈變量無妨,但良習建議 int i=0, j=0;。\"%d\" 而非 \"%d\n\",避免輸入阻塞。三角形與乘法表是 for 迴圈邏輯思維的「最小驗證集」。掌握「行號 → 空格/起始列數 → 打印數量」的映射關係,複雜圖形亦可拆解為多個簡單迴圈組合。