免費開始練習
地特三等申論題 111年 [資訊處理] 程式設計

第 一 題

📖 題組:
四、有關 Java 程式設計,回答下列問題:
📝 此題為申論題,共 2 小題

小題 (一)

寫一找尋小於 10,000 的完美數(Perfect number)程式,所謂完美數是指:如果一個正整數等於它所有正因數的和,但不包括它自己,則此正整數被稱為完美數。例如,6 是第一個完美數,因為 6 = 3 + 2 + 1。接下來是 28 = 14 + 7 + 4 + 2 + 1。(11 分)

思路引導 VIP

看到這題應先確立「完美數」的計算邏輯:找出某數所有正因數(不含自身)並加總,再與原數比對。實作時可將「判斷完美數」抽離為獨立方法以提高可讀性,並注意因數尋找迴圈的終止條件設為 num / 2 甚至 Math.sqrt(num) 即可,藉此展現對效能優化的基本觀念。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用模組化設計將「判斷完美數」的邏輯獨立為單一方法,主程式則負責遍歷 1 到 9,999 的數值區間並呼叫判斷方法。在尋找因數的過程中,只需檢查至該數的一半(num / 2)即可,以減少不必要的運算次數。 【程式碼實作】

小題 (二)

以下程式功能為何?當輸入 32,56,80 時,其輸出結果分別為多少?(16 分) import java.util.Scanner; public class LSE111_r4_2 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("輸入一整數: "); int value = input.nextInt(); String oS = ""; while (value != 0) { int s = value % 8; oS = s + oS; value = value / 8; } System.out.println("輸出為: " + oS); } }

思路引導 VIP

首先觀察迴圈內的除以 8 和取 8 的餘數操作,可辨識出這是將十進位數值轉換為特定進位(此處為八進位)的標準演算法。接著透過逐步追蹤(Trace)迴圈中 value 和字串 oS 的變化,即可準確推導出各給定輸入值的輸出結果。

🤖
AI 詳解
AI 專屬家教

【解題思路】觀察迴圈內 value % 8value / 8 的運算,判斷為十進位轉八進位的演算法,並藉由逐步追蹤程式碼變數變化得出結果。 【詳解】 一、程式功能

📝 同份考卷的其他題目

查看 111年[資訊處理] 程式設計 全題

升級 VIP 解鎖