網上常見菱形打印代碼輸出的*緊湊相連,本文實現每個*號後帶一空格,視覺效果更對齊、更美觀。
邊長為n的實心菱形,總行數 = 2n-1(奇數行)。
i行(1≤i≤2n-1)前導空格數 = |n-i|。i行*數量 = n - |n-i|。*後輸出一空格(printf("* ")),首行末行同理。#include <stdio.h>
#include <stdlib.h> // abs()
int main() {
printf("請輸入邊長 n:");
int n;
if (scanf("%d", &n) != 1 || n <= 0) return 1;
for (int i = 1; i <= 2*n - 1; i++) {
// 前導空格
for (int j = 1; j <= abs(n - i); j++)
printf(" ");
// 星號 + 空格
for (int k = 1; k <= n - abs(n - i); k++)
printf("* ");
printf("\n");
}
return 0;
}
* * * * * * * * *
每行*間均勻分布,菱形輪廓清晰對稱。
abs(n-i)統一處理上半部(遞增)與下半部(遞減)的空格/星號數學規律。printf("* ")而非printf("*"),實現星號間距。n>0且scanf成功。#、@)。掌握幾何規律轉代碼邏輯,是鍛煉迴圈控制能力的經典入門題。