資訊處理 108 年程式設計概要考古題(共 5 題) 資料來源:考選部歷屆試題|法律人 LawPlayer 整理 https://lawplayer.com/exam/information-processing/108-%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E6%A6%82%E8%A6%81 第 1 題 以下Java 程式執行後,螢幕會顯示什麼?(15 分) public class Problem1 { public static void main(String[] args) { for(int i = 1; i <= 5; i++) { for(int j = 1; j <= i; j++) System.out.print(' '); for(int j = 1; j <= 6-i; j++) System.out.print("**"); System.out.println(); } } } 第 2 題 質數(prime number)是大於1 的自然數中,只能被1 和自身整除的數。 例如,2, 3, 5, 7, …。試在不使用Java 中質數相關API 的情況下,撰寫 Java main()程式(不要另訂class, method 或function),來找出小於500 的所有質數,其結果列印必須如下:(25 分) 2 is prime. 3 is prime. 5 is prime. 7 is prime. 11 is prime. 13 is prime. 17 is prime. 19 is prime. 23 is prime. . . . 491 is prime. 499 is prime. 95 primes found. 第 3 題 請以遞迴(recursive)的方式撰寫下列Java 程式片斷中的method sumOfEvens()。sumOfEvens(n)會回傳小於或等於n 的所有正偶數的總 和,例如sumOfEvens(6)會回傳12,因為12 = 2+4+6。sumOfEvens()完 成後,必須確保main()執行後會印出正確結果,不需檢查n 是否為含零 的正整數。(20 分) public class Problem3 { public static int sumOfEvens(int x) { … } public static void main(String[] args) { System.out.printf("sumOfEvens(0) = %d\n", sumOfEvens(0)); System.out.printf("sumOfEvens(1) = %d\n", sumOfEvens(1)); System.out.printf("sumOfEvens(2) = %d\n", sumOfEvens(2)); System.out.printf("sumOfEvens(10) = %d\n", sumOfEvens(10)); System.out.printf("sumOfEvens(15) = %d\n", sumOfEvens(15)); } } 執行結果: sumOfEvens(0) = 0 sumOfEvens(1) = 0 sumOfEvens(2) = 2 sumOfEvens(10) = 30 sumOfEvens(15) = 56 (6) 會回傳12,因為12 = 2+4+6。sumOfEvens()完 成後,必須確保main()執行後會印出正確結果,不需檢查n 是否為含零 的正整數。(20 分) public class Problem3 { public static int sumOfEvens(int x) { … } public static void main(String[] args) { System.out.printf("sumOfEvens(20 分) (0) = %d\n", sumOfEvens (0) ); System.out.printf("sumOfEvens (1) = %d\n", sumOfEvens (1) ); System.out.printf("sumOfEvens (2) = %d\n", sumOfEvens (2) ); System.out.printf("sumOfEvens (10) = %d\n", sumOfEvens (10) ); System.out.printf("sumOfEvens (15) = %d\n", sumOfEvens (15) ); } } 執行結果: sumOfEvens (0) = 0 sumOfEvens (1) = 0 sumOfEvens (2) = 2 sumOfEvens (10) = 30 sumOfEvens (15) = 56 第 4 題 請寫出以下Python 程式的執行結果。(15 分) def secret(nums, target): seen = [] for index, num in enumerate(nums): other = target - num if other in seen: return [seen[other], index] else: seen[num] = index return [] print(secret([1,3,5], 4)) print(secret([2,3,6,8,10], 16)) print(secret([1,3,5], 7)) 第 5 題 下列Java 程式有三個類別(class): TeeShirt, CustomTee and DemoTees, 其中CustomTee 繼承TeeShirt,而DemoTees 為測試類別。 試回答以下問題:(25 分) ㈠請撰寫TeeShirt 類別中的 public String toString() 格式請參考執行後結果。 ㈡請撰寫CustomTee 類別中的 public String toString() 格式請參考執行後結果。 ㈢在main()中,以array 的方式和兩個for 迴圈,產生5 件T 恤,依序 印出每件T 恤屬性,最後加總5 件的總價,結果顯示如後。 public class TeeShirt { private int orderNumber; private String size; private String color; private double price; public void setOrderNumber(int num) { orderNumber = num; } public void setSize(String sz) { size = sz; if(size == "XXL" || size == "XXXL") price = 22.99; else price = 19.99; } public void setColor(String color) { this.color = color; } public int getOrderNumber() { return orderNumber; } public String getSize() { return size; } public String getColor() { return color; } public double getPrice() { return price; } public String toString() { … } } public class CustomTee extends TeeShirt { private String slogan; public void setSlogan(String slgn) { slogan = slgn; } public String getSlogan() { return slogan; } public String toString() { … } } public class DemoTees { public static void main(String[] args) { … } } 執行結果: Order # 100 Description: S red Slogan: Cute Girl Price: $19.99 Order # 101 Description: S red Slogan: Cute Girl Price: $19.99 Order # 102 Description: XXL blue Slogan: Happy Boy Price: $22.99 Order # 103 Description: XXL blue Slogan: Happy Boy Price: $22.99 Order # 104 Description: XXL blue Slogan: Happy Boy Price: $22.99 ----------------------------- Total: $108.95 題目為考試當年公告版本,實務標準請以現行規範為準。