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

輸出圖案問題的通用解題思路:從半正方形到側三角形

     編輯:關於C語言

輸出圖案問題的通用解題思路:從半正方形到側三角形

控制台輸出圖案類題目(如三角形、菱形、金字塔)是程式設計入門經典,核心在於「雙重迴圈」與「代數表達式」的結合。本文以兩道經典題目為例,詳細拆解從觀察規律到建立數學模型、再到編寫通用代碼的完整思維過程。

題目一:半個 5×5 正方形(直角三角形)

#####
####
###
##
#

步驟 1:先構想完整矩形

外層迴圈控制行數(1~5),內層迴圈每行輸出 5 個 #,得到 5×5 矩形。

for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= 5; col++) printf("#");
    printf("\n");
}

步驟 2:分析每行符號數量變化規律

第 1 行 5 個、第 2 行 4 個……第 5 行 1 個。內層迴圈上限需隨行號遞減:6 - row。

步驟 3:驗證表達式

row需要符號數6-row
155
244
333
422
511

最終代碼

for (int row = 1; row <= 5; row++) {
    for (int col = 1; col <= 6 - row; col++) printf("#");
    printf("\n");
}

題目二:側三角形(對稱梯形)

#
##
###
####
###
##
#

步驟 1:拆解為兩個單調區間

前 4 行遞增(1~4),後 3 行遞減(3~1)。總行數 7,中間行為第 4 行。

步驟 2:尋找統一代數表達式

嘗試 8 - row 得到 7,6,5,4,3,2,1 —— 不符合。
引入中間值 4:4 - row 得到 3,2,1,0,-1,-2,-3。
取絕對值 |4 - row| 得到 3,2,1,0,1,2,3 —— 這正是每行的**空格數**!

步驟 3:由空格數反推 # 數

若每行固定寬度 4 格,則 #數 = 4 - |4 - row|。

row|4-row|#數
131
222
313
404
513
622
731

最終代碼(含空格輸出)

#include  // for abs
for (int row = 1; row <= 7; row++) {
    int spaces = abs(4 - row);
    int hashes = 4 - spaces;
    for (int s = 0; s < spaces; s++) printf(" ");
    for (int h = 0; h < hashes; h++) printf("#");
    printf("\n");
}

通用解題組合拳

  1. 畫圖、列表:將幾行典型輸出寫出,標註行號與符號數。
  2. 構想矩形:先用固定上限寫出完整矩形框架。
  3. 找規律、建表達式:用行號 row 表示每行符號/空格數,常用技巧:row、N-row、|mid-row|、mid-|mid-row|。
  4. 驗證邊界:檢查首行、末行、中間行是否符合預期。
  5. 編寫雙重迴圈:外層行,內層分段輸出空格與符號。

掌握這套方法,面對各種幾何圖案輸出題目都能條理清晰、快速落筆。

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