113 關務特考四等 資訊處理(選試英文) 程式設計概要 考古題詳解

113 年・關務特考・四等・資訊處理(選試英文)
試題代碼 程式設計概要

第 一 題25 分

請利用 Python、Java、C#、C 和 C++ 五種程式語言的任一種程式語言,撰寫一個包含 main() 函式(function 或 method)且至少包含有一個子函式(function 或 method)的完整程式,應用它來從一系列輸入的整數中找到最大值。

但必須要有防呆機制,用於檢查使用者輸入是否為整數。如果使用者輸入的是整數,程式將進行比較並找到最大值;如果輸入的不是整數,程式將提示使用者輸入有誤,要求重新輸入。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查基本輸入驗證、迴圈、函式設計與最大值比較。程式先逐筆讀取輸入,再確認輸入內容可否轉成整數;只有驗證成功的整數才參與比較。輸入無效時提示錯誤並要求重新輸入,不更新最大值。

最大值可用「目前最大值」逐筆更新:若新輸入的整數 xx 大於目前最大值 mm,就令 m=xm=x;否則保留 mm。

解題方法

以下以 Python 撰寫,包含 main 與子函式 read_integer。程式先輸入資料筆數,再逐筆呼叫 read_integer;該函式會持續要求輸入,直到取得整數為止。第一筆整數直接設為最大值,後續整數再逐一比較。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題25 分

編寫一個程式(使用 Python、Java、C#、C 和 C++ 五種程式語言任一種),用於計算某家公司的月薪分布。

該程式需要將員工月薪等級分為三類,並計算每個等級的員工數量分布。月薪的三個等級定義如下:

A 等級:低於 35000(包含 35000)

B 等級:35000~100000(包含 100000)

C 等級:100000 以上

使用者將輸入一系列員工月薪的收入,程式需要驗證輸入格式的正確性。完成輸入後,應顯示各等級月薪員工的分布情況。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查輸入驗證、條件判斷與計數器。程式逐筆讀取員工月薪,確認輸入符合數字格式,再依薪資區間歸類,並累計各等級的人數。

題目區間有重疊:A 級包含 35,00035{,}000,B 級也從 35,00035{,}000 起;B 級包含 100,000100{,}000,C 級則為 100,000100{,}000 以上。為避免同一筆薪資重複計數,採用明確且互斥的判斷規則:

  • A 級:月薪 ≤35,000\leq 35{,}000
  • B 級:35,000<35{,}000 < 月薪≤100,000\leq 100{,}000
  • C 級:月薪 >100,000>100{,}000

解題方法

以下以 Python 示範。輸入以空白分隔的月薪數字,按 Enter 結束;程式逐筆驗證格式,若有非整數輸入便提示錯誤並重新輸入。題目未規定月薪必須為正數,因此此解法將非負整數視為有效月薪。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題25 分

編寫程式或程式片段(使用 Python、Java、C#、C 和 C++ 五種程式語言任一種):

(一) 計算使用者所輸入的一系列數據之平均值。這個程式將會不斷地從使用者那裡接收輸入,直到使用者輸入一個特定的結束標記(例如「done」)後,即進行計算並顯示「所有輸入數據」的平均值。(8 分)

(二) 請寫一個程式包含下列函式定義:

def compute_cube(num): return num * num * num

並且,寫一個語句,傳遞一個數值 55 給這個函式,並將其處理計算的結果傳回值指派給一個變數 result。(8 分)

(三) 撰寫一個 if-else 語句,如果速度變數在 9090 到 110110 的範圍內,顯示「速度在正常駕駛範圍內(9090-110110 公里每小時)」。如果速度變數的值在這個範圍之外,顯示「速度異常,可能會被罰款」。(9 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查程式設計的基本流程控制與函式呼叫:

  • 累計與計數:以變數分別累加輸入數值、計算輸入筆數。
  • 哨兵值:用特定結束標記(本題以 done 為例)判斷何時停止輸入;標記本身不屬於數據。
  • 平均值公式:總和除以數據筆數,即 平均值=總和/筆數\text{平均值}=\text{總和}/\text{筆數}。
  • 函式與回傳值:以 return 傳回函式計算結果,再指派給變數。
  • 條件判斷:用 if-else 檢查數值是否落在指定範圍內。範圍「90 到 110」包含端點,因此條件為 90≤速度≤11090 \leq \text{速度} \leq 110。

解題方法

以下以 Python 作答。

(一)輸入多筆數據並計算平均值

使用 while 持續讀取輸入。輸入 done 時離開迴圈;其他輸入轉換成數值後,加入總和並增加筆數。迴圈結束後,以總和除以筆數計算平均值。

total = 0.0
count = 0

while True:
 data = input("請輸入數值(輸入 done 結束):")

 if data == "done":
 break

 number = float(data)
 total += number
 count += 1

if count > 0:
 average = total / count
 print("平均值:", average)
else:
 print("沒有輸入任何數據,無法計算平均值")

例如依序輸入 10、20、30、done,則總和為 10+20+30=6010+20+30=60,筆數為 33,平均值為 60/3=2060/3=20。程式先確認 count > 0,避免使用者一開始就輸入 done 時發生除以零的錯誤。

(二)定義函式並呼叫

函式將輸入參數 num 連乘三次,傳回其立方值。呼叫函式時傳入 5,並把回傳值指派給 result。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題25 分

請分別說明「全域變數」(Global Variables)與「區域變數」(Local Variables)的定義和個別的作用域(Scope)。並請比較兩者的優缺點。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查變數的宣告位置、可見範圍與程式設計上的取捨。全域變數與區域變數的主要差異,在於程式的哪些部分可以直接存取該變數。此題為程式設計概念題,不涉及特定法條。

解題方法

作答時可從「宣告位置」判斷變數類型,再說明其作用域,最後比較對程式共享資料、模組化與除錯的影響。不同程式語言對作用域細節的規定不盡相同,以下依一般程序式程式設計的通則說明。

全域變數

**定義:**在函式、程序或區塊之外宣告的變數,稱為全域變數。

**作用域:**通常可在宣告所在的程式單元內,由多個函式或程序存取;若語言支援模組或檔案層級的存取控制,實際範圍也可能受其限制。其他函式若直接修改全域變數,會影響後續讀取該變數的程式碼。

優點:

  • 可供多個函式共用資料,減少參數傳遞。
  • 適合表示整個程式或模組共同使用的狀態或設定。

缺點:

  • 多處程式碼都能讀寫,資料變化來源較難追蹤,增加除錯與維護難度。
  • 函式依賴外部狀態,降低獨立性與重用性。
  • 變數名稱若與區域變數重複,可能發生名稱遮蔽,使讀寫對象不易判斷。

區域變數

**定義:**在函式、程序或特定區塊內宣告的變數,稱為區域變數。

**作用域:**通常限於宣告它的函式、程序或區塊內;離開該範圍後,其他部分不能直接以該變數名稱存取。其生命週期依語言規則而定,常見情形是在函式或區塊執行期間建立,離開時結束。

優點:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

資訊處理(選試英文)《程式設計概要》其他年度