13 列菱形 = 上半部 7 列 + 下半部 6 列。
第 i 列(1-based):
#includeint main() { // 上半部 1~7 for (int i = 1; i <= 7; i++) { for (int s = 0; s < 7-i; s++) putchar(' '); for (int s = 0; s < 2*i-1; s++) putchar('*'); putchar('\n'); } // 下半部 1~6 for (int i = 1; i <= 6; i++) { for (int s = 0; s < i; s++) putchar(' '); for (int s = 0; s < 13-2*i; s++) putchar('*'); putchar('\n'); } return 0; }
void print_diamond(int n) { // n 為上半部行數,總行數 = 2n-1
for (int i = 1; i <= n; i++) { // 上半部
for (int s = 0; s < n-i; s++) putchar(' ');
for (int s = 0; s < 2*i-1; s++) putchar('*');
putchar('\n');
}
for (int i = n-1; i >= 1; i--) { // 下半部
for (int s = 0; s < n-i; s++) putchar(' ');
for (int s = 0; s < 2*i-1; s++) putchar('*');
putchar('\n');
}
}
int main() {
print_diamond(7); // 13 列
return 0;
}
下半部第 k 列(k=1~n-1)對應上半部第 n-k 列,空格星號公式完全一致,故可合併為單一迴圈邏輯。
菱形列印核心在於**推導行號與空格/星號數的線性關係**。通用版本以參數 `n` 控制大小,消除魔術數字,提升程式彈性與可讀性。