空心菱形由上半部(含中線)和下半部組成,每行包含前導空格、邊界星號、內部空格。
#include
int main() {
int n = 4; // 上半部行數(含中線)
// 上半部
for (int i = 1; i <= n; i++) {
// 前導空格
for (int j = 1; j <= n - i; j++) printf(" ");
// 星號與內部空格
for (int k = 1; k <= 2*i - 1; k++) {
if (k == 1 || k == 2*i - 1) printf("*");
else printf(" ");
}
printf("\n");
}
// 下半部
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= i; j++) printf(" ");
for (int k = 1; k <= 2*(n-i) - 1; k++) {
if (k == 1 || k == 2*(n-i) - 1) printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
* * * * * * * * * * * *
int main() {
int rows;
printf("請輸入菱形行數(奇數): ");
scanf("%d", &rows);
if (rows % 2 == 0) { printf("必須為奇數!\n"); return 1; }
int mid = rows / 2 + 1;
// 上半部
for (int i = 1; i <= mid; i++) {
for (int j = 1; j <= mid - i; j++) printf(" ");
for (int k = 1; k <= 2*i - 1; k++)
printf(k == 1 || k == 2*i - 1 ? "*" : " ");
printf("\n");
}
// 下半部
for (int i = 1; i < mid; i++) {
for (int j = 1; j <= i; j++) printf(" ");
for (int k = 1; k <= 2*(mid-i) - 1; k++)
printf(k == 1 || k == 2*(mid-i) - 1 ? "*" : " ");
printf("\n");
}
return 0;
}
i 行星號數:2*i - 1(上半部)或 2*(n-i) - 1(下半部)n - i(上)或 i(下)*,中間印空格