輸入奇數行數 n,打印對稱菱形。例如 n=7:
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
菱形可分為上半部(含中線)與下半部:
i 行(1-based,上半部 1 ≤ i ≤ (n+1)/2):(n-1)/2 - (i-1),星號數 = 2*i - 1;i 行(下半部 1 ≤ i ≤ (n-1)/2):i,星號數 = n - 2*i。#include <stdio.h>
int main() {
int n;
printf("請輸入菱形行數 (奇數): ");
scanf("%d", &n);
if (n % 2 == 0) { printf("請輸入奇數!\n"); return 1; }
int half = (n + 1) / 2;
// 上半部含中線
for (int i = 1; i <= half; ++i) {
for (int s = 0; s < half - i; ++s) putchar(' ');
for (int s = 0; s < 2*i - 1; ++s) putchar('*');
putchar('\n');
}
// 下半部
for (int i = 1; i < half; ++i) {
for (int s = 0; s < i; ++s) putchar(' ');
for (int s = 0; s < n - 2*i; ++s) putchar('*');
putchar('\n');
}
return 0;
}
$ ./diamond
請輸入菱形行數 (奇數): 13
*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
stars = n - 2 * abs(i - half);printDiamond(int n, FILE *out) 支持重定向輸出。