目標列印高度為 2*num-1 行的菱形空心圖(num=5):
本程式採用「上三角 + 下三角」兩段式列印,條件判斷 j == num-i+1 || j == num+i-1 精確定位兩側邊緣。
#include <stdio.h>
const int num = 5;
int main()
{
int i, j;
// 印上三角(不含中間行)
for (i = 1; i < num; i++) {
for (j = 1; j < 2*num; j++) {
if (j == num-i+1 || j == num+i-1) printf("*");
else printf(" ");
}
printf("\n");
}
// 印下三角(含中間行)
for (i = num; i > 0; i--) {
for (j = 1; j < 2*num; j++) {
if (j == num-i+1 || j == num+i-1) printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
*
* *
* *
* *
* *
* *
* *
* *
*
第 i 行(1-based),寬度 2*num-1:
num - i + 1num + i - 1下半部 i 從 num 遞減至 1,同樣公式適用,自然形成鏡像。
num 改為使用者輸入j >= left && j <= right 列印實心菱形sleep() 與 ANSI 轉義碼)