本程式外層迴圈 for(i=1; i<=num; i++) 從頂向下列印,邏輯與前題鏡像對稱,輸出圖形為頂朝上的等腰三角形(底部實心、上方空心)。
#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 ( (i < num && (j == num-i+1 || j == num+i-1)) || // 上方空心行
(i == num && j >= num-i+1 && j <= num+i-1) ) { // 底部實心行
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
* <- 第1行(頂)單點
* * <- 第2行空心
* * <- 第3行空心
* * <- 第4行空心
********* <- 第5行(底)實心
| 類型 | 外層迴圈 | 頂點位置 | 底部樣式 |
|---|---|---|---|
| 頂朝上空心+實心底 | i=1..num | 頂 | 實心 |
| 底朝上空心+實心底 | i=num..1 | 底 | 實心 |
| 完整菱形空心 | 上下分段 | 上下各一 | 無(尖端) |
| 完整菱形實心 | 上下分段 | 上下各一 | 中間最寬 |
第 i 行(1-based,從頂開始),寬度 W = 2*num-1:
num - i + 1num + i - 1空心:j==left || j==right;實心:j>=left && j<=right。
