免費開始練習
統測 113年 [電機與電子群資電類] 專業科目(2)

第 47 題

📖 題組:
閱讀下文,回答第 47-48 題 曉華寫了如下的 C 語言程式實現泡沫排序演算法,目的是將 N 個整數進行排序,其中字元 'a' 的 ASCII 碼為 97。 ```c 1 #include 2 #define N 11 3 void swap(int a, int b){ 4 int tmp; 5 tmp=a; 6 a=b; 7 b=tmp; 8 } 9 void main(void){ 10 int numbers[N]={1,3,5,7,9,2,4,6,8,0,'a'}; 11 int tmp, i, min; 12 //min=0; 13 for(min=0; min
程式輸出結果為何?
  • A a 9 8 7 6 5 4 3 2 1 0
  • B 0 1 2 3 4 5 6 7 8 9 a
  • C 97 9 8 7 6 5 4 3 2 1 0
  • D 0 1 2 3 4 5 6 7 8 9 97

思路引導 VIP

請聚焦於第 15 行的判斷式 $numbers[i] < numbers[min]$ 與其後的交換機制:當此條件成立時,原本較「大」的數值會被交換到索引 $min$ 還是 $i$ 的位置?若外層迴圈 $min$ 依序固定陣列中的位置,而內層迴圈 $i$ 每次都完整掃描整個陣列,這樣的邏輯會將較大的元素推向陣列前方還是後方?最後,請根據題目提供的 ASCII 資訊,判斷字元常量 $'a'$ 在數值比較時應視為什麼數字?

🤖
AI 詳解 AI 專屬家教

⚡️ 誰說這題很難?觀念懂了就沒問題!

  1. 嗯,還行啦。 看來你還沒完全放棄思考,不錯。這題不就是考你C 語言的字元到底在記憶體裡長什麼樣,還有唬爛排序背後的真實邏輯嗎?能看穿那「假泡沫、真怪胎」的把戲,輸出也沒搞砸,至少不是個程式白痴。算你過關。
▼ 還有更多解析內容
📝 C語言與排序演算法
💡 掌握字元與 ASCII 碼的轉換,並能分析巢狀迴圈的排序邏輯。

🔗 程式執行邏輯鏈

  1. 1 資料初始化 — 字元 'a' 以 ASCII 值 97 存入整數陣列
  2. 2 巢狀迴圈比較 — 透過兩層迴圈掃描陣列,比較索引 i 與 min 的值
  3. 3 執行數值交換 — 若符合判斷式則交換兩數,最終形成降冪排列
  4. 4 格式化輸出 — 依序印出陣列內容,最大值 97 排在首位
🔄 延伸學習:延伸思考:若將判斷式改為大於(>),則會變成什麼排序結果?
🧠 記憶技巧:小 a 九七要記牢,迴圈比大小看準,交換邏輯定順序。
⚠️ 常見陷阱:學生常忽略 'a' 的數值轉換,或誤以為 swap 函式有效(本題第 16 行已被註解)。
ASCII 碼表 氣泡排序法 傳值呼叫 vs 傳址呼叫 巢狀迴圈分析

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計:變數、指標、函式與編譯
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題