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

C 語言經典圖形打印:菱形星號實現與 while/for 迴圈解析

     編輯:程式設計疑難解答

題目回顧

輸出一個由星號 * 組成的菱形圖案,上半部為正三角形,下半部為倒三角形。要求使用 while、if 或 for 實現,並附帶詳細註釋。

標準 for 迴圈實現

#include <stdio.h>

int main() {
    int i, j, k;
    // 上半部:正三角形(4 行)
    for (i = 0; i <= 3; i++) {
        // 打印前導空格
        for (j = 0; j <= 2 - i; j++)
            printf(" ");
        // 打印星號:第 i 行有 2*i+1 個
        for (k = 0; k <= 2 * i; k++)
            printf("*");
        printf("\n");
    }
    // 下半部:倒三角形(3 行)
    for (i = 0; i <= 2; i++) {
        for (j = 0; j <= i; j++)
            printf(" ");
        for (k = 0; k <= 4 - 2 * i; k++)
            printf("*");
        printf("\n");
    }
    return 0;
}

關鍵邏輯解析

上半部規律

  • 行號 i 從 0 到 3
  • 空格數 = 2 - i(遞減)
  • 星號數 = 2*i + 1(遞增:1, 3, 5, 7)

下半部規律

  • 行號 i 從 0 到 2
  • 空格數 = i(遞增)
  • 星號數 = 4 - 2*i(遞減:5, 3, 1)

while 迴圈等價改寫

// 上半部 while 版本
i = 0;
while (i <= 3) {
    j = 0;
    while (j <= 2 - i) { printf(" "); j++; }
    k = 0;
    while (k <= 2 * i) { printf("*"); k++; }
    printf("\n");
    i++;
}

教學重點總結

  1. 觀察規律:先分析每行空格與星號的數學關係,再寫代碼。
  2. 巢狀迴圈:外層控制行,內層分別控制空格與星號。
  3. 邊界條件:注意 <= 與 < 的區別,避免多印或少印一行。
  4. 風格建議:縮進清晰、變量命名有意義(如 row, space, star),關鍵步驟加註釋。

掌握「找規律 → 列公式 → 寫迴圈」的思維框架,即可輕鬆應對各類圖形打印題目。

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