
臺灣港務股份有限公司 108年度新進從業人員甄試
專業科目試題
筆試科目:程式設計概要
甄選類科:34 員級_資訊
1
這是一個以 C語言撰寫的輸入國文、英文、數學三科的分數,分別存入
變數之中,再判斷輸入的分數是否介於 0到100(含 0與100)之間,
如果三科分數都介於 0到100(含 0與100)之間,則輸出「您輸入的
資料格式正確」;若有一科或多科沒有介於 0到100(含 0與100)之 間 ,
則輸出「您輸入的資料格式有錯」,並將該科目及其成績印出。這個程
式共輸入了 6
組測試資料,請以將程式碼填入空格的方式,完成此程式。
(每格 1分,共 25 分)
(續下頁)
考科編號:40
第1頁 共 5 頁

2
(一) 程式設計常用的變數種類有「全域變數」與「區域變數」兩種,請個別說明
此二種變數的定義、有效範圍、生命週期。(共12 分)
(二) 程式設計運算過程中,常會使用到「遞增++」或「遞減--
各題 A和B最後執行結果分別為多少?(每格 1分,共 8分)
題目 執行結果
A=5;
A=
A=5;
B=++A;
A=
B=
A=5;
A=
A=5;
B=--A;
A=
B=
(三) 每個資料型態宣告時都需佔有一定大小的記憶體空間,如:整數型態的宣告
就有以下幾種
資料型態 所需記憶體空間 資料表示範圍
短整數
至
int 整數 4 bytes -2147483648 至2147483647
長整數
63至
63
如果程式裡宣告一個變數 A是整數型態,經過程式執行計算後 A的值是
2147483649,試問若直接透過程式印出結果,A的值會是多少
(共5分)
配分: (一)每個答案 2分,共 12 分。
(二)每個答案 1分,共 8分。(請繪製表格)
(三)回答 A的值佔 2分,原因說明佔 3分,共 5分。
共25 分。
第3頁 共 5 頁

3
目前電視流行的卡通–烏龍派出所,卡通主角兩津勘吉想要好好幫自己存一筆錢買
模型用,提出了一個「倍倍儲蓄法」,內容如下:
「第一天存 1元、第二天存 2元、第三天存 4元,每天都比前一天多存一
倍的錢。」
請回答以下問題
(一) 如果要將每天存的金額記錄下來,應該用何種資料結構比較適合,請直接宣
告第 1天到第 50 天的變數結構來?(共3分)
(二) 承第一小題,「每天都比前一天多存一倍的錢」這句話如何用程式語言來表
示?(共4分)
(三) 承第二小題,請撰寫一段程式來計算「前 20 天的存款總金額」。(請以 for 迴
圈作答)(共8分)
(四) 承第三小題,試問如果要存到 100
找出需要幾天才可以存到 100 萬元」的可執行程式。(請以 while 迴圈作答)(共
分
配分: (一) 3 分、 (二) 4 分、 (三) 8 分、 (四) 10 分。共 25 分。
第4頁 共 5 頁

4
(一) 副程式在設計時會思考要傳遞哪些參數供副程式使用,請分別作答以下題目
1. 參數傳遞分為哪兩種形式?(共4分)
2. 這兩種參數傳遞的主要差異為何?(共6分)
(二) 數學求最大公因數時,大多是利用輾轉相除法來計算,其方法利用兩數反覆
相除,直到餘數為 0時,最大公因數即為當下的除數。其數學式子如下:
≠
=
=0A%B
)%
,(
0A%B
)
,( ifB
AB
GCD
ifB
BAGCD
,其中%代表取餘數。
以下為 Java 的程式語言
public static vo id main(String[] args)
{
int A, B;
Scanner num = new Scanner( Syst em.in);
//輸入 A, B
System.out.print(“請輸入 A:”);
A = num.ne xtInt() ;
System.out.print(“請輸入 B:”);
B = num.nextInt( );
//輸出最大公因數
System.out.println(“最大公因數= ” + Factor(A, B));
}
static int Factor(int A, int B)
{
//請完成遞迴函數的程式
} (a) 請撰寫遞迴函數 Factor 的程式(共9分)
(b) 如果輸入 A=20,B=14,請填寫下方表格裡遞迴函數的執行過程(每格 1
共6分)
步驟 呼叫遞迴函數
Factor(第一個參數, 第二個參數) 計算後的餘數
第一個參數
第二個參數
1 20 14 6
2
3
配分:(一) 1.各2分。
2.各3分。
(二) 1.程式撰寫 9分。
2.每一格 1分。(請繪製表格)
共25 分。
第5頁 共 5 頁