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

C語言列印菱形星號圖形:雙層迴圈邏輯詳解

     編輯:關於C語言

目標圖形

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

共 13 行,上半部 7 行遞增,下半部 6 行遞減。

完整程式碼

#include 

int 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;
}

邏輯推導

上半部第 i 行(1-based)

  • 星號個數:2*i - 1
  • 前導空格:n - i
  • 總列寬:(n-i) + (2*i-1) = n + i - 1
  • 判斷條件 j > n - i 即為進入星號區。

下半部第 i 行(1-based,i=1 對應第 8 行)

  • 星號個數:2*(n-i) - 1
  • 前導空格:i
  • 總列寬:i + 2*(n-i)-1 = 2*n - i - 1
  • 判斷條件 j > i。

通用化改寫

將 n 改為讀取使用者輸入,即可列印任意奇數高度菱形。若需支援偶數高度,需調整中間行邏輯。

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