lawpalyer logo

資訊處理 108 年程式設計概要考古題

民國 108 年(2019)資訊處理「程式設計概要」考試題目,共 9 題 | 資料來源:考選部

0 題選擇題 + 9 題申論題

以下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(); } } }
Java 程式PreStars 會印出什麼結果?維持巢狀for 迴圈架構,小修 PreStars,讓它印出以下的星星構圖。(25 分) 1 2 public class PreStars 3 { 4 public static void main(String[] args) 5 { 6 for (int i=1; i<=5; i++) { 7 for (int j=1; j<=i; j++) 8 System.out.print('*'); 9 System.out.println(); 10 } 11 } 12 } ********** ********* ******** ******* ****** ***** **** *** ** *
質數(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.
下列為Reverse class 的程式規範與其執行結果,試以遞迴(recursive) 的方式完成副程式reverse(int[] arr, int x),撰寫時,必須使用相同的參數 名稱與資料型態。reverse(int[] arr, int x)會回傳一個倒過來擺置的整數 串:arr[n-1], arr[n-2], … arr[x+1], arr[x],假設arr 內共有n 個元素,而 且x <= n。(25 分) 2 public class Reverse 3 { 4 public static String reverse(int[] arr, int x) 5 { 6 7 } 8 9 public static void main(String[] args) 10 { 11 int[] intArr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 12 String results = reverse(intArr, 2); 13 System.out.println(results); 14 System.out.println(reverse(intArr, 7)); 15 } 16 } 10 9 8 7 6 5 4 3 10 9 8
請以遞迴(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) 20 分
(0)
(0)
(1)
(1)
(2)
(2)
(10)
(10)
(15)
(15)
(0)
(1)
(2)
(10)
(15)
下列Python 程式的執行結果為何?(15 分) list = [2,2,3,7,7,7,9,9,10,10] count = 1 current = list[0] for i in list: if i > current : list[count] = i count += 1 current = i last = len(list) if last > count: for i in range(count, last): list.pop() print("count = ", count) print("list = ", list)
請寫出以下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))
數學中複數是實數的延伸,複數通常表示為a+bi 或(a, b),其中a, b 為實 數,分別稱為複數的實部與虛部,i 為虛數單位,且i2=-1。複數的加、 減、乘、除運算定義如下: (a+bi)+(c+di) = (a+c)+(b+d)i (a+bi)–(c+di) = (a–c)+(b–d)i (a+bi)*(c+di) = (ac-bd)+(ad+bc)i (a+bi)/(c+di) = ((ac+bd)/(c2+d2))+((bc-ad)/(c2+d2)) 試參考以下程式回答問題:(35 分) 此程式的列印結果為何? 利用add(),在ComplexTest.java 中加入一行程式以印出 “x + y = (3.0, 3.0)” 於Complex.java 中撰寫 public Complex division(Complex right) 回傳資料型態與參數命名必須分別為Complex 與right。 利用division(),在ComplexTest.java中算出y=(2, 2)的倒數(如果y’*y=1 則稱 y’為y 的倒數),並列印出有意義的訊息。 撰寫public String standardForm()以印出複數的另一表示法a+bi。注意 0.0+bi 要表示為bi;a+0.0i 要表示為a;a+1.0i 要表示為a+i。 2 public class Complex 3 { 4 private double real; 5 private double imaginary; 6 7 public Complex() 8 { 9 this(0.0, 0.0); 10 } 11 public Complex(double r, double i) 12 { 13 real = r; 14 imaginary = i; 15 } 16 public Complex add(Complex right) 17 { 18 return new Complex(real + right.real, 19 imaginary + right.imaginary); 20 } 21 public Complex subtract(Complex right) 22 { 23 return new Complex(real - right.real, 24 imaginary - right.imaginary); 25 } 26 public String toString() 27 { 28 return String.format("(%.1f, %.1f)", real, imaginary); 29 } 30 } // end class Complex 2 public class ComplexTest 3 { 4 public static void main(String[] args) 5 { 6 Complex x = new Complex(1, 1); 7 Complex y = new Complex(2, 2); 8 9 System.out.printf("x = %s%n", x.toString()); 10 System.out.printf("y = %s%n", y); 11 } 12 } // end class ComplexTest
下列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