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

C 語言實作:輸入任意行數列印聖誕樹

     編輯:關於C語言

還記得大一《C 語言程式設計基礎》的經典作業——列印聖誕樹嗎?本文提供兩個版本的完整原始碼,支援使用者輸入任意行數動態生成樹形,並附上編譯後的執行檔下載連結,讓你輕鬆重溫經典或直接拿來當作教學示範。

版本一:單次輸入,標準迴圈實作

#include <stdio.h>

int main() {
    int rows, i, j, k, l, m;
    int starNo, spaceNo;

    printf("請輸入聖誕樹的行數: ");
    scanf("%d", &rows);

    for (i = 1; i <= rows; i++) {
        starNo = i * 2 - 1;        // 星號數:1, 3, 5, ...
        spaceNo = rows - i;        // 前導空格數

        // 印空格
        for (j = 0; j < spaceNo; j++) printf(" ");
        // 印星號
        for (k = 0; k < starNo; k++) printf("*");
        printf("\n");
    }

    // 印樹幹(固定 2 行,置中)
    for (l = 0; l < 2; l++) {
        for (m = 0; m < (rows * 2 - 1) / 2; m++) printf(" ");
        printf("||\n");
    }
    return 0;
}

版本二:可重複輸入,使用 goto 迴圈(教學示範用)

#include <stdio.h>

int main() {
    int rows, i, j, k, l, m;
    int starNo, spaceNo;

START:
    printf("請輸入聖誕樹的行數 (0 結束): ");
    scanf("%d", &rows);
    if (rows == 0) goto END;

    for (i = 1; i <= rows; i++) {
        starNo = i * 2 - 1;
        spaceNo = rows - i;
        for (j = 0; j < spaceNo; j++) printf(" ");
        for (k = 0; k < starNo; k++) printf("*");
        printf("\n");
    }
    for (l = 0; l < 2; l++) {
        for (m = 0; m < (rows * 2 - 1) / 2; m++) printf(" ");
        printf("||\n");
    }
    goto START;

END:
    return 0;
}

執行畫面範例 (rows = 5)

    *
   ***
  *****
 *******
*********
       ||
       ||

開發環境與下載

小提醒

  • 行數過大會導致終端機換行顯示錯亂,建議依終端機寬度調整。
  • goto 版本僅為展示流程控制,實務開發建議使用 while 或 do-while 迴圈,結構更清晰。

快拿去跑跑看,感受字元繪圖的樂趣吧!

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