113 關務特考四等 資訊處理(選試英文) 程式設計概要 考古題詳解
第 一 題25 分
請利用 Python、Java、C#、C 和 C++ 五種程式語言的任一種程式語言,撰寫一個包含 main() 函式(function 或 method)且至少包含有一個子函式(function 或 method)的完整程式,應用它來從一系列輸入的整數中找到最大值。
但必須要有防呆機制,用於檢查使用者輸入是否為整數。如果使用者輸入的是整數,程式將進行比較並找到最大值;如果輸入的不是整數,程式將提示使用者輸入有誤,要求重新輸入。
登入後即可作答並保存紀錄。
核心觀念
本題考查基本輸入驗證、迴圈、函式設計與最大值比較。程式先逐筆讀取輸入,再確認輸入內容可否轉成整數;只有驗證成功的整數才參與比較。輸入無效時提示錯誤並要求重新輸入,不更新最大值。
最大值可用「目前最大值」逐筆更新:若新輸入的整數 大於目前最大值 ,就令 ;否則保留 。
解題方法
以下以 Python 撰寫,包含 main 與子函式 read_integer。程式先輸入資料筆數,再逐筆呼叫 read_integer;該函式會持續要求輸入,直到取得整數為止。第一筆整數直接設為最大值,後續整數再逐一比較。
第 二 題25 分
編寫一個程式(使用 Python、Java、C#、C 和 C++ 五種程式語言任一種),用於計算某家公司的月薪分布。
該程式需要將員工月薪等級分為三類,並計算每個等級的員工數量分布。月薪的三個等級定義如下:
A 等級:低於 35000(包含 35000)
B 等級:35000~100000(包含 100000)
C 等級:100000 以上
使用者將輸入一系列員工月薪的收入,程式需要驗證輸入格式的正確性。完成輸入後,應顯示各等級月薪員工的分布情況。
登入後即可作答並保存紀錄。
核心觀念
本題考查輸入驗證、條件判斷與計數器。程式逐筆讀取員工月薪,確認輸入符合數字格式,再依薪資區間歸類,並累計各等級的人數。
題目區間有重疊:A 級包含 ,B 級也從 起;B 級包含 ,C 級則為 以上。為避免同一筆薪資重複計數,採用明確且互斥的判斷規則:
- A 級:月薪
- B 級:月薪
- C 級:月薪
解題方法
以下以 Python 示範。輸入以空白分隔的月薪數字,按 Enter 結束;程式逐筆驗證格式,若有非整數輸入便提示錯誤並重新輸入。題目未規定月薪必須為正數,因此此解法將非負整數視為有效月薪。
第 三 題25 分
編寫程式或程式片段(使用 Python、Java、C#、C 和 C++ 五種程式語言任一種):
(一) 計算使用者所輸入的一系列數據之平均值。這個程式將會不斷地從使用者那裡接收輸入,直到使用者輸入一個特定的結束標記(例如「done」)後,即進行計算並顯示「所有輸入數據」的平均值。(8 分)
(二) 請寫一個程式包含下列函式定義:
def compute_cube(num): return num * num * num
並且,寫一個語句,傳遞一個數值 給這個函式,並將其處理計算的結果傳回值指派給一個變數 result。(8 分)
(三) 撰寫一個 if-else 語句,如果速度變數在 到 的範圍內,顯示「速度在正常駕駛範圍內(- 公里每小時)」。如果速度變數的值在這個範圍之外,顯示「速度異常,可能會被罰款」。(9 分)
登入後即可作答並保存紀錄。
核心觀念
本題考查程式設計的基本流程控制與函式呼叫:
- 累計與計數:以變數分別累加輸入數值、計算輸入筆數。
- 哨兵值:用特定結束標記(本題以
done為例)判斷何時停止輸入;標記本身不屬於數據。 - 平均值公式:總和除以數據筆數,即 。
- 函式與回傳值:以
return傳回函式計算結果,再指派給變數。 - 條件判斷:用
if-else檢查數值是否落在指定範圍內。範圍「90 到 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,則總和為 ,筆數為 ,平均值為 。程式先確認 count > 0,避免使用者一開始就輸入 done 時發生除以零的錯誤。
(二)定義函式並呼叫
函式將輸入參數 num 連乘三次,傳回其立方值。呼叫函式時傳入 5,並把回傳值指派給 result。
第 四 題25 分
請分別說明「全域變數」(Global Variables)與「區域變數」(Local Variables)的定義和個別的作用域(Scope)。並請比較兩者的優缺點。
登入後即可作答並保存紀錄。
核心觀念
本題考查變數的宣告位置、可見範圍與程式設計上的取捨。全域變數與區域變數的主要差異,在於程式的哪些部分可以直接存取該變數。此題為程式設計概念題,不涉及特定法條。
解題方法
作答時可從「宣告位置」判斷變數類型,再說明其作用域,最後比較對程式共享資料、模組化與除錯的影響。不同程式語言對作用域細節的規定不盡相同,以下依一般程序式程式設計的通則說明。
全域變數
**定義:**在函式、程序或區塊之外宣告的變數,稱為全域變數。
**作用域:**通常可在宣告所在的程式單元內,由多個函式或程序存取;若語言支援模組或檔案層級的存取控制,實際範圍也可能受其限制。其他函式若直接修改全域變數,會影響後續讀取該變數的程式碼。
優點:
- 可供多個函式共用資料,減少參數傳遞。
- 適合表示整個程式或模組共同使用的狀態或設定。
缺點:
- 多處程式碼都能讀寫,資料變化來源較難追蹤,增加除錯與維護難度。
- 函式依賴外部狀態,降低獨立性與重用性。
- 變數名稱若與區域變數重複,可能發生名稱遮蔽,使讀寫對象不易判斷。
區域變數
**定義:**在函式、程序或特定區塊內宣告的變數,稱為區域變數。
**作用域:**通常限於宣告它的函式、程序或區塊內;離開該範圍後,其他部分不能直接以該變數名稱存取。其生命週期依語言規則而定,常見情形是在函式或區塊執行期間建立,離開時結束。
優點: