免費開始練習
普考申論題 105年 [資訊處理] 程式設計概要

第 一 題

📖 題組:
四、觀察以下 C 語言程式碼,回答下列問題: (代碼內容包含 priority 函式與 Transform 函式,執行中序轉後序的邏輯) int priority(char Operation){...} void Transform(char* Source, char* Result){...} int main(){ char Source[50] = { " a-d+(b*e)/c" }, Result[50] = { '\0' }; Transform(Source, Result); for (int i = 0; Result[i] != '\0'; i++){ printf("%c", Result[i]); } return 0; }
📝 此題為申論題,共 2 小題

小題 (一)

根據以下 C 語言程式碼,試問執行結果輸出為何?(10 分)

思路引導 VIP

本題考查資料結構與程式設計中經典的「中序表達式轉後序表達式(Infix to Postfix)」。解題時應在草稿紙上建立一個模擬的堆疊(Stack)與輸出字串(Result),依序讀取來源字元並嚴格套用運算子優先權與括號處理規則進行推導,即可確保無誤。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用堆疊(Stack)模擬中序轉後序表達式之演算法規則,並依據運算子優先序(*/ 優先於 +-)進行轉換。 【詳解】 已知來源字串 Source 為中序表達式:a-d+(b*e)/c(字串前端之空格在正常轉換邏輯中會被忽略或跳過)。

小題 (二)

承上題,根據 Result 比對 Source 陣列內容,試問此轉換目的為何?(15 分)

思路引導 VIP

看到此題,應先辨識出程式的核心演算法為「中序式轉後序式」(Infix to Postfix)。接著從「人類閱讀習慣」與「電腦底層運算架構(堆疊 Stack)」的差異切入,思考為何電腦需要捨棄帶有括號與優先權的中序式,轉而使用後序式來進行算術求值。

🤖
AI 詳解
AI 專屬家教

【破題】 此程式碼的轉換目的,是將人類慣用的「中序運算式」(Infix Expression)轉換為適合電腦處理的「後序運算式」(Postfix Expression,又稱逆波蘭表示法 RPN)。 【論述】

升級 VIP 解鎖