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

C語言列印 13 列菱形:動態行數通用算法與幾何公式推導

     編輯:關於C

幾何規律

13 列菱形 = 上半部 7 列 + 下半部 6 列。
第 i 列(1-based):

  • 上半部:空格 = `7-i`,星號 = `2*i-1`
  • 下半部:空格 = `i`,星號 = `13-2*i`

固定 13 列版本

#include 

int main() {
    // 上半部 1~7
    for (int i = 1; i <= 7; i++) {
        for (int s = 0; s < 7-i; s++) putchar(' ');
        for (int s = 0; s < 2*i-1; s++) putchar('*');
        putchar('\n');
    }
    // 下半部 1~6
    for (int i = 1; i <= 6; i++) {
        for (int s = 0; s < i; s++) putchar(' ');
        for (int s = 0; s < 13-2*i; s++) putchar('*');
        putchar('\n');
    }
    return 0;
}

通用動態版本(任意奇數列)

void print_diamond(int n) { // n 為上半部行數,總行數 = 2n-1
    for (int i = 1; i <= n; i++) {       // 上半部
        for (int s = 0; s < n-i; s++) putchar(' ');
        for (int s = 0; s < 2*i-1; s++) putchar('*');
        putchar('\n');
    }
    for (int i = n-1; i >= 1; i--) {     // 下半部
        for (int s = 0; s < n-i; s++) putchar(' ');
        for (int s = 0; s < 2*i-1; s++) putchar('*');
        putchar('\n');
    }
}

int main() {
    print_diamond(7); // 13 列
    return 0;
}

公式統一性驗證

下半部第 k 列(k=1~n-1)對應上半部第 n-k 列,空格星號公式完全一致,故可合併為單一迴圈邏輯。

總結

菱形列印核心在於**推導行號與空格/星號數的線性關係**。通用版本以參數 `n` 控制大小,消除魔術數字,提升程式彈性與可讀性。

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