輸出一個由星號 * 組成的菱形圖案,上半部為正三角形,下半部為倒三角形。要求使用 while、if 或 for 實現,並附帶詳細註釋。
#include <stdio.h>
int main() {
int i, j, k;
// 上半部:正三角形(4 行)
for (i = 0; i <= 3; i++) {
// 打印前導空格
for (j = 0; j <= 2 - i; j++)
printf(" ");
// 打印星號:第 i 行有 2*i+1 個
for (k = 0; k <= 2 * i; k++)
printf("*");
printf("\n");
}
// 下半部:倒三角形(3 行)
for (i = 0; i <= 2; i++) {
for (j = 0; j <= i; j++)
printf(" ");
for (k = 0; k <= 4 - 2 * i; k++)
printf("*");
printf("\n");
}
return 0;
}
i 從 0 到 32 - i(遞減)2*i + 1(遞增:1, 3, 5, 7)i 從 0 到 2i(遞增)4 - 2*i(遞減:5, 3, 1)// 上半部 while 版本
i = 0;
while (i <= 3) {
j = 0;
while (j <= 2 - i) { printf(" "); j++; }
k = 0;
while (k <= 2 * i) { printf("*"); k++; }
printf("\n");
i++;
}
<= 與 < 的區別,避免多印或少印一行。row, space, star),關鍵步驟加註釋。掌握「找規律 → 列公式 → 寫迴圈」的思維框架,即可輕鬆應對各類圖形打印題目。