普考申論題
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; }
四、觀察以下 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),依序讀取來源字元並嚴格套用運算子優先權與括號處理規則進行推導,即可確保無誤。
小題 (二)
承上題,根據 Result 比對 Source 陣列內容,試問此轉換目的為何?(15 分)
思路引導 VIP
看到此題,應先辨識出程式的核心演算法為「中序式轉後序式」(Infix to Postfix)。接著從「人類閱讀習慣」與「電腦底層運算架構(堆疊 Stack)」的差異切入,思考為何電腦需要捨棄帶有括號與優先權的中序式,轉而使用後序式來進行算術求值。