普考申論題
108年
[資訊處理] 程式設計概要
第 一 題
📖 題組:
數學中複數是實數的延伸,複數通常表示為 a+bi 或(a, b),其中 a, b 為實數,分別稱為複數的實部與虛部,i 為虛數單位,且 i^2=-1。複數的加、減、乘、除運算定義如下: (a+bi)+(c+di) = (a+c)+(b+d)i (a+bi)–(c+di) = (a–c)+(b–d)i (a+bi)*(c+di) = (ac-bd)+(ad+bc)i (a+bi)/(c+di) = ((ac+bd)/(c^2+d^2))+((bc-ad)/(c^2+d^2))i 試參考以下程式回答問題:(35 分) (一)此程式的列印結果為何? (二)利用 add(),在 ComplexTest.java 中加入一行程式以印出 “x + y = (3.0, 3.0)” (三)於 Complex.java 中撰寫 public Complex division(Complex right)回傳資料型態與參數命名必須分別為 Complex 與 right。 (四)利用 division(),在 ComplexTest.java 中算出 y=(2, 2) 的倒數(如果 y’*y=1 則稱 y’ 為 y 的倒數),並列印出有意義的訊息。 (五)撰寫 public String standardForm() 以印出複數的另一表示法 a+bi。注意 0.0+bi 要表示為 bi;a+0.0i 要表示為 a;a+1.0i 要表示為 a+i。 [程式碼見截圖第3、4頁...]
數學中複數是實數的延伸,複數通常表示為 a+bi 或(a, b),其中 a, b 為實數,分別稱為複數的實部與虛部,i 為虛數單位,且 i^2=-1。複數的加、減、乘、除運算定義如下: (a+bi)+(c+di) = (a+c)+(b+d)i (a+bi)–(c+di) = (a–c)+(b–d)i (a+bi)*(c+di) = (ac-bd)+(ad+bc)i (a+bi)/(c+di) = ((ac+bd)/(c^2+d^2))+((bc-ad)/(c^2+d^2))i 試參考以下程式回答問題:(35 分) (一)此程式的列印結果為何? (二)利用 add(),在 ComplexTest.java 中加入一行程式以印出 “x + y = (3.0, 3.0)” (三)於 Complex.java 中撰寫 public Complex division(Complex right)回傳資料型態與參數命名必須分別為 Complex 與 right。 (四)利用 division(),在 ComplexTest.java 中算出 y=(2, 2) 的倒數(如果 y’*y=1 則稱 y’ 為 y 的倒數),並列印出有意義的訊息。 (五)撰寫 public String standardForm() 以印出複數的另一表示法 a+bi。注意 0.0+bi 要表示為 bi;a+0.0i 要表示為 a;a+1.0i 要表示為 a+i。 [程式碼見截圖第3、4頁...]
📝 此題為申論題,共 5 小題
小題 (一)
此程式的列印結果為何?
思路引導 VIP
分析 ComplexTest.java 中的 main 函式。觀察變數 x 和 y 的初始值,以及 System.out.printf 如何格式化輸出。注意 toString() 的格式定義為 (%.1f, %.1f)。
小題 (二)
利用 add(),在 ComplexTest.java 中加入一行程式以印出 “x + y = (3.0, 3.0)”
思路引導 VIP
需要調用 x.add(y) 並將其結果格式化輸出。可以使用 printf 配合 %s 來顯示相加後的複數物件。
小題 (三)
於 Complex.java 中撰寫 public Complex division(Complex right)回傳資料型態與參數命名必須分別為 Complex 與 right。
思路引導 VIP
對照題目給出的除法公式:(a+bi)/(c+di) = ((ac+bd)/(c^2+d^2)) + ((bc-ad)/(c^2+d^2))i。
其中 a, b 為當前物件的 real 與 imaginary;c, d 為 right.real 與 right.imaginary。
小題 (四)
利用 division(),在 ComplexTest.java 中算出 y=(2, 2) 的倒數(如果 y’*y=1 則稱 y’ 為 y 的倒數),並列印出有意義的訊息。
思路引導 VIP
複數 y 的倒數即為 1 / y。在程式中可表示為 (1.0 + 0.0i) / y。需先建立一個值為 (1, 0) 的 Complex 物件再執行 division(y)。
小題 (五)
撰寫 public String standardForm() 以印出複數的另一表示法 a+bi。注意 0.0+bi 要表示為 bi;a+0.0i 要表示為 a;a+1.0i 要表示為 a+i。
思路引導 VIP
這題考驗邏輯判斷的完整性。需要針對實部(real)是否為 0、虛部(imaginary)是否為 0、以及虛部是否為 1 或 -1 等特殊情況進行字串組合。