*
***
*****
*******
*********
***********
*************
***********
*********
*******
*****
***
*
共 13 行,上半部 7 行遞增,下半部 6 行遞減。
#includeint main() { int i, j; int n = 7; // 菱形半高(上半部行數) /* 上半部:1 到 n 行 */ for (i = 1; i <= n; i++) { /* 每行總寬度 = n + i - 1 */ for (j = 1; j <= n + i - 1; j++) { if (j > n - i) // 列號大於左邊界 → 印星號 printf("*"); else printf(" "); } printf("\n"); } /* 下半部:n-1 遞減到 1 */ for (i = 1; i < n; i++) { /* 每行總寬度 = 2*n - i - 1 */ for (j = 1; j <= 2 * n - i - 1; j++) { if (j > i) // 列號大於左邊界 → 印星號 printf("*"); else printf(" "); } printf("\n"); } return 0; }
2*i - 1n - i(n-i) + (2*i-1) = n + i - 1j > n - i 即為進入星號區。2*(n-i) - 1ii + 2*(n-i)-1 = 2*n - i - 1j > i。將 n 改為讀取使用者輸入,即可列印任意奇數高度菱形。若需支援偶數高度,需調整中間行邏輯。