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

C/C# 列印星號金字塔圖案:巢狀迴圈邏輯與變體擴展

     編輯:程式設計綜合問答

需求分析:列印左對齊直角三角形

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

第 i 行列印 i 個星號 (i 從 1 到 5)。

C 語言標準實作

#include <stdio.h>

int main() {
    int rows = 5;
    for (int i = 1; i <= rows; i++) {       // 外層:控制行數
        for (int j = 1; j <= i; j++) {      // 內層:控制每行星號數
            printf("*");
        }
        printf("\n");                       // 換行
    }
    return 0;
}

C# 現代寫法

using System;

class Program {
    static void Main() {
        int rows = 5;
        for (int i = 1; i <= rows; i++) {
            // 字串重複:new string('*', i) 比迴圈更簡潔高效
            Console.WriteLine(new string('*', i));
        }
        
        // 進階:LINQ 一行寫法
        // Enumerable.Range(1, rows).Select(i => new string('*', i)).ToList().ForEach(Console.WriteLine);
    }
}

變體擴展:其他常見星號圖案

圖案名稱輸出範例 (rows=5)核心邏輯
左對齊直角三角形
*\n**\n***\n****\n*****
第 i 行印 i 個 *
右對齊直角三角形
    *\n   **\n  ***\n ****\n*****
第 i 行印 (rows-i) 空格 + i 個 *
等腰三角形 (金字塔)
    *\n   ***\n  *****\n *******\n*********
第 i 行印 (rows-i) 空格 + (2*i-1) 個 *
倒置等腰三角形
*********\n *******\n  *****\n   ***\n    *
i 從 rows 遞減至 1
菱形金字塔 + 倒置金字塔 (不重複中間行)兩段迴圈合併
空心三角形邊緣印 *,中間印空格j==1 || j==2*i-1 || i==rows

通用金字塔 C 實作 (含空格對齊)

#include <stdio.h>

void print_pyramid(int rows) {
    for (int i = 1; i <= rows; i++) {
        // 印前導空格
        for (int s = 1; s <= rows - i; s++) printf(" ");
        // 印星號
        for (int j = 1; j <= 2 * i - 1; j++) printf("*");
        printf("\n");
    }
}

int main() {
    print_pyramid(5);
    return 0;
}

教學重點:巢狀迴圈三要素

  1. 外層迴圈:控制**行數** (1 到 rows)。
  2. 內層迴圈 1:控制**前導空格數** (視對齊需求)。
  3. 內層迴圈 2:控制**星號數** (視圖案幾何規律)。
  4. 行尾處理:printf("\n") / Console.WriteLine()。

進階技巧:避免內層迴圈,善用字串操作

// C: 使用 memset / sprintf (較複雜,不如迴圈直觀)
// C#: new string('*', count) - 高效、可讀、標準庫優化
// Python: '*' * count
// C++: std::string(count, '*')
// Java: "*".repeat(count) (Java 11+)

總結

列印星號圖案是**巢狀迴圈控制邏輯**的經典練習。核心在於:**外層迭代行、內層計算每行字元組成 (空格 + 星號)**。C# 等現代語言提供 new string(char, count) 等高階字串操作,能簡化內層迴圈、提升可讀性與效能。掌握「行號與字元數的數學關係」(如 2*i-1、rows-i) 是解決此類幾何圖案問題的關鍵。

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