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

C/C++ 學習之路(第 08 課):字元繪圖 — 迴圈控制的視覺化練習

     編輯:關於C語言

用字元畫圖:最經典的迴圈邏輯訓練

在終端機用 *、# 等字元繪製幾何圖形,是鍛鍊巢狀迴圈、條件判斷、座標轉換思維的最佳方式。本課展示 5 種經典圖形,涵蓋三角形、菱形、正弦波等。

五大圖形程式碼解析

1. 左對齊直角三角形

for (int i = 0; i < 10; i++) {
    for (int j = 0; j < i; j++) printf(" ");
    printf("%s\n", a); // a 為 "*********"
}

外層控制行數,內層印空格產生縮排效果。

2. 隔行縮排三角形

for (i = 0; i < 10; i++) {
    if (i % 2 != 0)
        for (int j = 0; j < i; j++) printf(" ");
    printf("%s\n", a);
}

加入奇偶判斷,形成交錯視覺效果。

3. 空心菱形 (雙邊框)

int k = 0;
for (i = 0; i < 6; i++) {
    for (int j = 0; j < i; j++) printf(" ");
    printf("#");
    for (j = 10 - i - k; j >= 0; j--) printf("*");
    k++;
    printf("#\n");
}

利用 k 遞增控制中間 * 數量遞減,構成菱形內部空洞。

4. 正弦波曲線

double y = 1;
for (; y >= -1; y -= 0.1) {
    int m = acos(y) * 10; // 反餘弦映射 x 座標
    for (int x = 0; x < m; x++) printf(" ");
    printf("*");
    for (; x < 62 - m; x++) printf(" ");
    printf("*\n");
}

數學函數 acos() 將 y ∈ [-1,1] 映射到角度 [π,0],再縮放為螢幕 x 座標,雙星號對稱繪製完整正弦波週期。

5. 倒置等腰三角形

k = 0;
for (i = 9; i > 0; i--) {
    for (int j = i; j > 0; j--) printf(" ");
    for (j = 0; j <= 9 - i + k; j++) printf("*");
    k++;
    printf("\n");
}

外層倒數控制行數,內層空格遞減、星號遞增,形成倒三角。

執行結果展示

圖形輸出結果 1

圖形輸出結果 2

進階挑戰

  • 繪製愛心形狀 (參數方程式)
  • 動畫效果:system("cls") + Sleep() 實作旋轉/跳動
  • 使用 ANSI 轉義碼繪製彩色圖形
  • 實作簡易 ASCII 畫圖工具 (支援線段、矩形、圓)

核心收穫

字元繪圖看似無用,實則強迫你將「幾何直覺」轉化為「離散迴圈邏輯」。這種「座標→索引」的轉換能力,是圖形學、遊戲開發、影像處理的基石。建議嘗試不看參考碼,自行推導每個圖形的迴圈條件。

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