臺灣港務股份有限公司 108 年度新進從業人員 甄試 專業科目試題
筆試科目:程式設計概要 甄選類科:34 員級_資訊
題號 題 目
1
這是一個以 C 語言撰寫的輸入國文、英文、數學三科的分數,分別存入 變數之中,再判斷輸入的分數是否介於 0 到 100(含 0 與 100)之間,
如果三科分數都介於 0 到 100(含 0 與 100)之間,則輸出「您輸入的 資料格式正確」 ;若有一科或多科沒有介於 0 到 100(含 0 與 100)之間,
則輸出「您輸入的資料格式有錯」,並將該科目及其成績印出。這個程 式共輸入了 6 組測試資料,請以將程式碼填入空格的方式,完成此程式。
(每格 1 分,共 25 分)
(續下頁)
第 1 頁 共 5 頁
1
(承上頁)
6 筆測試資料的輸入與輸出如下:
請輸入國文, 英文, 數學的分數:
102 103 -1(輸入值) 您輸入的資料格式有錯 數學:-1
英文:103 國文:102
請輸入國文, 英文, 數學的分數:
120 110 90(輸入值) 您輸入的資料格式有錯 英文:110
國文:120
請輸入國文, 英文, 數學的分數:
98 120 -19(輸入值) 您輸入的資料格式有錯 數學:-19
英文:120
請輸入國文, 英文, 數學的分數:
80 120 78(輸入值) 您輸入的資料格式有錯 英文:120
請輸入國文, 英文, 數學的分數:
120 89 78(輸入值) 您輸入的資料格式有錯 國文:120
請輸入國文, 英文, 數學的分數:
90 100 0(輸入值) 您輸入的資料格式正確
配分: 每個空格 1 分,共 25 分。
第 2 頁 共 5 頁
2
(一) 程式設計常用的變數種類有「全域變數」與「區域變數」兩種,請個別說明 此二種變數的定義、有效範圍、生命週期。(共 12 分)
(二) 程式設計運算過程中,常會使用到「遞增++」或「遞減--」兩種運算子,以下 各題 A 和 B 最後執行結果分別為多少?(每格 1 分,共 8 分)
題目 執行結果
A=5;
B=A++;
A=
B=
A=5;
B=++A;
A=
B=
A=5;
B=A--;
A=
B=
A=5;
B=--A;
A=
B=
(三) 每個資料型態宣告時都需佔有一定大小的記憶體空間,如:整數型態的宣告 就有以下幾種
資料型態 所需記憶體空間 資料表示範圍 short 短整數 2 bytes -32768 至 32767
int 整數 4 bytes -2147483648 至 2147483647 long 長整數 8 bytes -263至 263-1
如果程式裡宣告一個變數 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 迴圈作答)(共 10 分)配分: (一) 3 分、 (二) 4 分、 (三) 8 分、 (四) 10 分。共 25 分。
第 4 頁 共 5 頁
4
(一) 副程式在設計時會思考要傳遞哪些參數供副程式使用,請分別作答以下題目 1. 參數傳遞分為哪兩種形式?(共 4 分)
2. 這兩種參數傳遞的主要差異為何?(共 6 分)
(二) 數學求最大公因數時,大多是利用輾轉相除法來計算,其方法利用兩數反覆 相除,直到餘數為 0 時,最大公因數即為當下的除數。其數學式子如下:
≠
= =
0 A%B )
% , (
0 ) A%B
,
( GCD B A B if if B B
A
GCD ,其中%代表取餘數。
以下為 Java 的程式語言
public static void main(String[] args) {
int A, B;
Scanner num = new Scanner(System.in);
//輸入 A, B
System.out.print(“請輸入 A:”);
A = num.nextInt();
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 頁