在終端機用 *、# 等字元繪製幾何圖形,是鍛鍊巢狀迴圈、條件判斷、座標轉換思維的最佳方式。本課展示 5 種經典圖形,涵蓋三角形、菱形、正弦波等。
for (int i = 0; i < 10; i++) {
for (int j = 0; j < i; j++) printf(" ");
printf("%s\n", a); // a 為 "*********"
}
外層控制行數,內層印空格產生縮排效果。
for (i = 0; i < 10; i++) {
if (i % 2 != 0)
for (int j = 0; j < i; j++) printf(" ");
printf("%s\n", a);
}
加入奇偶判斷,形成交錯視覺效果。
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 遞增控制中間 * 數量遞減,構成菱形內部空洞。
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 座標,雙星號對稱繪製完整正弦波週期。
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");
}
外層倒數控制行數,內層空格遞減、星號遞增,形成倒三角。


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