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

第 一 題

📖 題組:
三、觀察以下 C++語言之程式,試回答下列問題: int main(){ double a = 0.2 * 0.2, b = 0.04; if(a == b){ cout << "a = b" << endl; } else if(a < b){ cout << "a < b" << endl; } else{ cout << "a > b" << endl; } cout << a << endl << b << endl; }
📝 此題為申論題,共 4 小題

小題 (一)

試問該程式之輸出為何?(10 分)

思路引導 VIP

本題核心考點為「浮點數的精度誤差」。看到浮點數(小數)直接進行等號比較時,必須警覺二進位無法精確表示 0.2 等十進位小數,這會導致乘法運算後產生微小的位元誤差,最後再結合 cout 的預設輸出精度即可推斷出正確結果。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】IEEE 754 浮點數在二進位轉換時的精度誤差與 cout 的預設顯示精度。 【詳解】 一、變數賦值與運算:

小題 (二)

根據上題(一)之輸出為 a = b、a < b 或 a > b,請說明其原因?(15 分)

思路引導 VIP

看到浮點數(double/float)的四則運算與等號判斷(==),應立刻聯想到「IEEE 754 浮點數精確度」與「二進位儲存誤差」問題。解題關鍵在於指出十進位小數轉二進位時產生的截斷誤差,以及運算後誤差累積的結果,並點出浮點數不可直接使用 '==' 比較的實務觀念。

🤖
AI 詳解
AI 專屬家教

【破題】 本題輸出結果為 a > b,核心考點在於計算機系統中「IEEE 754 浮點數的二進位表示法與運算誤差」。 【論述】

小題 (三)

Heap tree

思路引導 VIP

看到「Heap tree」,考生應立刻聯想到資料結構中的「完全二元樹 (Complete Binary Tree)」,並點出其核心特性:父節點與子節點的大小關係(Max-Heap / Min-Heap)。最後補充其實務應用(如優先權佇列、堆積排序)以獲得完整分數。

🤖
AI 詳解
AI 專屬家教

「Heap tree(堆積樹)」指一種基於完全二元樹(Complete Binary Tree)架構的特殊資料結構,旨在快速取得資料集中的最大值或最小值。其特徵包含:(1) 結構屬性:必須是完全二元樹,除最底層外其餘各層皆全滿,且最底層的節點需由左至右緊密排列;(2) 堆積屬性:根據節點值的大小關係,可分為「最大堆積(Max-Heap)」(父節點的值恆大於或等於子節點)與「最小堆積(Min-Heap)」(父節點的值恆小於或等於子節點)。 實務應用為實作優先權佇列(Priority Queue)、執行堆積排序法(Heap Sort),以及優化圖論演算法(如 Dijkstra 最短路徑演算法)的執行效率。

小題 (四)

Concurrency

思路引導 VIP

看到 Concurrency,應立刻想到『多任務在重疊時間內推進』的概念,並將其與 Parallelism(平行)作出明確區隔。作答時需點出時間切片(Time-slicing)或上下文切換(Context Switch)等底層機制,以展現對系統架構的理解。

🤖
AI 詳解
AI 專屬家教

「並行(Concurrency)」是指一個計算機系統具備在同一段時間內處理多個任務的能力,使這些任務在邏輯上呈現同時進行的狀態。特徵包含:(1) 任務的生命週期發生重疊,但不一定在同一絕對物理時刻同時執行;(2) 在單一處理器環境下,主要透過時間切片(Time-slicing)與上下文切換(Context Switch)機制,讓處理器在多個執行緒間快速交錯執行,產生同時運作的錯覺;(3) 本質著重於程式結構的任務分解與狀態管理,有別於依賴多核心硬體真正同時執行的「平行(Parallelism)」。實務應用常見於多執行緒程式設計(Multi-threading)與作業系統的多工作業(Multitasking)。

升級 VIP 解鎖