首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言列印星號圖形(二):倒三角菱形實作

     編輯:關於C

題目需求

使用巢狀迴圈列印指定的星號圖形。本題為系列第二題,輸出一個倒置的等腰三角形(或視為菱形的下半部)。

圖形樣式 (num=5)

*********
 *******
  *****
   ***
    *

第 1 行:9 顆星(2×5-1)
第 2 行:7 顆星(2×4-1)
第 3 行:5 顆星(2×3-1)
第 4 行:3 顆星(2×2-1)
第 5 行:1 顆星(2×1-1)

規律分析

  • 總行數 = num
  • 第 i 行(i 從 num 遞減至 1):
    • 前導空格數 = num - i
    • 星號數 = 2×i - 1

C 語言完整實作

#include <stdio.h>

const int num = 5;

int main() {
    int i, j;
    
    for (i = num; i >= 1; i--) {
        // 印前導空格
        for (j = 1; j <= num - i; j++) {
            printf(" ");
        }
        // 印星號
        for (j = 1; j <= 2*i - 1; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

原始碼邏輯解析(對應提供的版本)

提供的程式碼使用單一內層迴圈配合條件判斷:

for (i = num; i >= 1; i--) {
    for (j = 1; j < 2*num; j++) {
        if (j >= num-i+1 && j <= num+i-1) {
            printf("*");
        } else {
            printf(" ");
        }
    }
    printf("\n");
}

邏輯等價性說明:

  • 內層迴圈 j 從 1 到 2×num-1(共 2×num-1 列)
  • 星號區間:[num-i+1, num+i-1],長度 = (num+i-1) - (num-i+1) + 1 = 2i-1 ✓
  • 空格區間:其餘位置

關鍵技巧總結

  1. 找規律:觀察行號與星號/空格數的數學關係
  2. 巢狀迴圈:外層控制行,內層控制列
  3. 條件列印:單一內層迴圈配合 if-else 決定字元
  4. 分離迴圈:分別印空格與星號,邏輯更清晰

常見變體練習

  • 正三角形(星號遞增)
  • 菱形(正三角 + 倒三角)
  • 空心圖形(只印邊框)
  • 帶數字/字母的圖形

除錯建議

  • 先用小數值測試(如 num=3)驗證邏輯
  • 列印行號與計算值對照
  • 注意迴圈邊界條件(<= vs <)
  • 確認換行位置正確

星號圖形題目是迴圈控制與邏輯思維的基礎訓練,掌握「行號→字元數」的映射關係是關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved