普考申論題
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; }
三、觀察以下 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 的預設輸出精度即可推斷出正確結果。
小題 (二)
根據上題(一)之輸出為 a = b、a < b 或 a > b,請說明其原因?(15 分)
思路引導 VIP
看到浮點數(double/float)的四則運算與等號判斷(==),應立刻聯想到「IEEE 754 浮點數精確度」與「二進位儲存誤差」問題。解題關鍵在於指出十進位小數轉二進位時產生的截斷誤差,以及運算後誤差累積的結果,並點出浮點數不可直接使用 '==' 比較的實務觀念。
小題 (三)
Heap tree
思路引導 VIP
看到「Heap tree」,考生應立刻聯想到資料結構中的「完全二元樹 (Complete Binary Tree)」,並點出其核心特性:父節點與子節點的大小關係(Max-Heap / Min-Heap)。最後補充其實務應用(如優先權佇列、堆積排序)以獲得完整分數。
小題 (四)
Concurrency
思路引導 VIP
看到 Concurrency,應立刻想到『多任務在重疊時間內推進』的概念,並將其與 Parallelism(平行)作出明確區隔。作答時需點出時間切片(Time-slicing)或上下文切換(Context Switch)等底層機制,以展現對系統架構的理解。