民國112年 普通考試 資訊處理 程式設計概要考古題

民國112年 普通考試 資訊處理 程式設計概要收錄考選部官方試題,共 4 題可線上瀏覽,考選部未公告本科目答案。

官方資料

題目與答案

第1題

根據以下C程式碼,回答下列問題: #include <stdio.h> void g(int *x, int *y) { *x = *y - 1; *y = *y - 2; printf("*x = %d, *y = %d\n", *x, *y); } void f(int *z, int *w) { int n = 13; g(w, &n); printf("*z = %d, *w = %d, n = %d\n", *z, *w, n); } int main() { int i = 21; int j = 5; int n = 137; f(&i, &j); printf("print 1: i = %d, j = %d, n = %d\n", i, j, n); g(&n, &n); printf("print 2: i = %d, j = %d, n = %d\n", i, j, n); return 0; } 請說明程式碼第8行至第12行中,每一行之運算子符號「*」及「&」操 作所代表的意義。(10分) 請問該程式碼執行後輸出的結果為何?(15分)

第2題

根據以下C程式碼,回答下列問題: #include <stdio.h> int f(int a, int b){ if (b==1) return a; else { int value = a + f(a, b-1); return value; } } int main() { printf("%d\n", f(5, 3)); printf("%d\n", f(0, 0)); } 請問那一行是此遞迴程式的中止條件?(5分) 請說明第10行的輸出,以及其運作邏輯。(6分) 請說明第11行的輸出,以及其運作邏輯。(7分) 請說明函式f的主要功能,包含輸入參數與輸出結果的關係。(7分)

第3題

關於搜尋法程式: 說明循序(Sequential)搜尋法,以及二元(Binary)搜尋法的優缺點。 (8分) 以下二元搜尋程式碼有部分錯誤,若要修正為正確程式,請說明「最少」 需修改程式碼行數、原因與修改方法。(17分) 01 public class BinarySearch{ public int faultyBinarySearch(int[] arr, int x){ int l=0, r=arr.length-1; int m=(l+r)/2; while(l<=r){ m=(l+r)/2; if(arr[m]==x) return m; if(arr[m]>x) l=m+1; if(arr[m]<x) r=m-1; } return -1; } 13 }

第4題

請依據以下Java程式碼回答下列問題: import java.util.Scanner; public class MyJavaCode { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); Animal dog = new Dog(); dog.run(a); dog.run(); } } class Dog extends Animal { public void run(int units){ System.out.println("Dog's running speed is " + units); } public void run(){ System.out.println("Dog's default running speed is 20"); } } 請說明Java中class、abstract class與interface之間的主要差異?(10分) 請說明上述程式碼那幾行會產生編譯錯誤,以及錯誤的原因。(5分) 不改變原1-19行程式碼順序的條件下,請修正問題 之編譯問題,使之 可以正常執行。修正不包含左右大括號「{}」,新增或修改之指令行數 不可以超過3行。(10分)