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

C語言打印空心菱形:巢狀循環與條件控制實現

     編輯:C 語言問答

空心菱形打印算法設計

空心菱形由上半部(含中線)和下半部組成,每行包含前導空格、邊界星號、內部空格。

固定大小版(高度7行)

#include 

int main() {
    int n = 4;  // 上半部行數(含中線)
    
    // 上半部
    for (int i = 1; i <= n; i++) {
        // 前導空格
        for (int j = 1; j <= n - i; j++) printf(" ");
        // 星號與內部空格
        for (int k = 1; k <= 2*i - 1; k++) {
            if (k == 1 || k == 2*i - 1) printf("*");
            else printf(" ");
        }
        printf("\n");
    }
    
    // 下半部
    for (int i = 1; i <= n - 1; i++) {
        for (int j = 1; j <= i; j++) printf(" ");
        for (int k = 1; k <= 2*(n-i) - 1; k++) {
            if (k == 1 || k == 2*(n-i) - 1) printf("*");
            else printf(" ");
        }
        printf("\n");
    }
    return 0;
}

輸出結果

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

通用版:使用者輸入行數(必須為奇數)

int main() {
    int rows;
    printf("請輸入菱形行數(奇數): ");
    scanf("%d", &rows);
    if (rows % 2 == 0) { printf("必須為奇數!\n"); return 1; }
    
    int mid = rows / 2 + 1;
    
    // 上半部
    for (int i = 1; i <= mid; i++) {
        for (int j = 1; j <= mid - i; j++) printf(" ");
        for (int k = 1; k <= 2*i - 1; k++)
            printf(k == 1 || k == 2*i - 1 ? "*" : " ");
        printf("\n");
    }
    // 下半部
    for (int i = 1; i < mid; i++) {
        for (int j = 1; j <= i; j++) printf(" ");
        for (int k = 1; k <= 2*(mid-i) - 1; k++)
            printf(k == 1 || k == 2*(mid-i) - 1 ? "*" : " ");
        printf("\n");
    }
    return 0;
}

核心邏輯總結

  • 第 i 行星號數:2*i - 1(上半部)或 2*(n-i) - 1(下半部)
  • 前導空格數:n - i(上)或 i(下)
  • 邊界條件:第一個和最後一個位置印 *,中間印空格
  • 三元運算符簡化條件判斷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved