菱形圖案由上半部分正三角形和下半部分倒三角形組成。核心難點:每行前導空格數與星號數的數學規律。
行號(i) 空格數(4-i) 星號數(2*i-1) 視覺效果
1 3 1 " *"
2 2 3 " ***"
3 1 5 " *****"
4 0 7 "*******"
5 1 5 " *****"
6 2 3 " ***"
7 3 1 " *"
#include
void print_diamond_fixed(int n) { // n 為上半部分行數
// 上半部分 (含中線)
for (int i = 1; i <= n; i++) {
for (int s = 1; s <= n - i; s++) printf(" "); // 空格
for (int s = 1; s <= 2 * i - 1; s++) printf("*"); // 星號
printf("\n");
}
// 下半部分
for (int i = 1; i <= n - 1; i++) {
for (int s = 1; s <= i; s++) printf(" ");
for (int s = 1; s <= 2 * (n - i) - 1; s++) printf("*");
printf("\n");
}
}
int main() {
print_diamond_fixed(4);
return 0;
}
#include
#include // abs()
void print_diamond_unified(int rows) { // rows 必須為奇數
int mid = rows / 2; // 中線索引 (0-based)
for (int i = 0; i < rows; i++) {
int spaces = abs(mid - i);
int stars = rows - 2 * spaces;
for (int s = 0; s < spaces; s++) printf(" ");
for (int s = 0; s < stars; s++) printf("*");
printf("\n");
}
}
int main() {
int n;
printf("輸入菱形行數(奇數): ");
scanf("%d", &n);
if (n % 2 == 1) print_diamond_unified(n);
else printf("請輸入奇數!\n");
return 0;
}
void print_diamond_single_loop(int n) {
for (int i = 1; i <= 2 * n - 1; i++) {
int spaces = (i <= n) ? n - i : i - n;
int stars = (i <= n) ? 2 * i - 1 : 2 * (2 * n - i) - 1;
for (int s = 0; s < spaces; s++) putchar(' ');
for (int s = 0; s < stars; s++) putchar('*');
putchar('\n');
}
}
printf(" ")或putchar(' ')輸出單個空格void print_hollow_diamond(int n) {
for (int i = 1; i <= 2 * n - 1; i++) {
int spaces = abs(n - i);
int stars = 2 * (n - spaces) - 1;
for (int s = 0; s < spaces; s++) putchar(' ');
for (int s = 0; s < stars; s++) {
if (s == 0 || s == stars - 1) putchar('*');
else putchar(' ');
}
putchar('\n');
}
}
void print_char_diamond(int n, char ch) {
for (int i = 1; i <= 2 * n - 1; i++) {
int spaces = abs(n - i);
int chars = 2 * (n - spaces) - 1;
for (int s = 0; s < spaces; s++) putchar(' ');
for (int s = 0; s < chars; s++) putchar(ch);
putchar('\n');
}
}
printf("i=%d sp=%d st=%d\n", i, spaces, stars);'.'替換空格可視化對齊:putchar('.')菱形打印是循環嵌套、數學建模、格式化輸出的綜合訓練。掌握「找規律→建公式→寫循環」的思維,可舉一反三解決各類幾何圖案打印問題。