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

C語言列印菱形圖案:雙重迴圈邏輯與動態行數實作

     編輯:關於C

菱形幾何特徵分析

以 7 列上半部、6 列下半部(共 13 列)為例:

  • 第 i 列(1-based):空格數 = `7-i`,星號數 = `2*i-1`
  • 下半部第 i 列(1-based):空格數 = `i`,星號數 = `13-2*i`

固定大小版本(原始碼)

#include 
#include 

int main() {
    int i, j, k;
    // 上半部(含中線)
    for (i = 0; i <= 6; i++) {
        for (j = 0; j <= 5-i; j++) printf(" ");
        for (k = 0; k <= 2*i; k++) printf("*");
        printf("\n");
    }
    // 下半部
    for (i = 0; i <= 5; i++) {
        for (j = 0; j <= i; j++) printf(" ");
        for (k = 0; k <= 10-2*i; k++) printf("*");
        printf("\n");
    }
    return 0;
}

動態行數通用版本

#include 

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() {
    int rows;
    printf("請輸入菱形上半部行數: ");
    scanf("%d", &rows);
    print_diamond(rows);
    return 0;
}

邏輯推導關鍵公式

部分行號 i (1~n)前導空格星號數
上半部in - i2*i - 1
下半部i (n-1 ~ 1)n - i2*i - 1

下半部可視為上半部鏡像,故公式相同,只需反向迴圈。

進階變體:空心菱形

void print_hollow_diamond(int n) {
    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((s == 0 || s == 2*i-2) ? '*' : ' ');
        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((s == 0 || s == 2*i-2) ? '*' : ' ');
        putchar('\n');
    }
}

常見錯誤與除錯

  1. 迴圈邊界錯誤:`<=` vs `<` 混淆,導致多一行或少一行。
  2. 空格/星號公式錯誤:未正確推導幾何關係。
  3. 忘記換行:`printf("\n")` 或 `putchar('\n')` 必須在每行結束呼叫。
  4. 輸入驗證缺失:行數 ≤ 0 應處理。

總結

列印菱形是迴圈巢狀與幾何邏輯轉換的經典練習。關鍵在於:

  1. 將圖形分解為「上半部」與「下半部」兩個獨立迴圈。
  2. 推導每行「空格數」與「星號數」隨行號的數學關係。
  3. 使用通用參數 `n` 取代魔術數字,提升程式彈性。

掌握此模式,即可輕鬆擴展為三角形、平行四邊形、空心圖形等變體。

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