免費開始練習
司法三等申論題 113年 [檢察事務官電子資訊組] 程式語言

第 一 題

📖 題組:
三、圖 1 是一個 Java 程式碼,其功能是計算標準輸入 N 個整數的平均值,輸出結果為小數點四捨五入到整數,其中 N 是一個命令列參數。其預期執行的結果如圖 2 所示。 1 2 public class main { 3 public static void main(String[] args) { 4 int N = args[0]; 5 int[] a = new int[N]; 6 for (int i=0; ijava main 5 1 2 3 4 5 Mean: 3
題組圖片
📝 此題為申論題,共 2 小題

小題 (一)

這個程式依據題目說明以及預期呈現結果,會有三種錯誤,分別是語法錯誤(Syntax error)、執行錯誤(Run-time error)以及語意錯誤(Semantic error)。請分別指出是那些行數指令造成上述三種錯誤、錯誤的原因以及修正之方法。(15 分)

思路引導 VIP

面對程式除錯題,應依序檢視程式的生命週期:首先是『編譯期』(語法錯誤),檢查變數宣告與型別轉換(如 String 轉 int);其次是『執行期』(執行錯誤),思考邊界條件與例外狀況(如陣列越界、除以零、轉型失敗);最後是『邏輯期』(語意錯誤),核對程式流程是否完全符合題目給定的計算規格與結果(如陣列索引是否對應正確參數、除法是否做了四捨五入)。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】明確區分程式錯誤發生的三個階段:編譯期檢查(語法錯誤)、執行期例外拋出(執行錯誤),以及運算邏輯不符預期規格(語意錯誤),針對變數型態、陣列索引及除法精確度進行除錯。 【解析】 一、語法錯誤(Syntax error)

小題 (二)

請說明這個程式功能是否可以改為不使用陣列而節省記憶體空間的方法。若是,請說明如何修改程式;若否,請說明原因。(5 分)

思路引導 VIP

本題考查空間複雜度的優化概念與基本資料流的處理。看到計算『平均值』或『總和』的題型,應立刻想到此為可即時處理的累加問題,只需使用單一變數存放當前總和即可,無須動態配置陣列保存所有歷史數值。答題時除了說明原理外,也建議一併修正原程式碼中明顯的型別轉換(String 轉 int)與陣列索引(應從 args[1] 開始)錯誤。

🤖
AI 詳解
AI 專屬家教

【破題】 可以改為不使用陣列。計算總和與平均值無需將所有數值同時保存在記憶體中,可透過單一迴圈「邊讀取邊累加」來省去額外的陣列空間配置。 【論述】

升級 VIP 解鎖