所屬科目:APCS大學程式設計先修檢測
1. 右側程式正確的輸出應該如下: 在不修改右側程式之第 4 行及第 7 行程 式碼的前提下,最少需修改幾行程式碼 以得到正確輸出? (A) 1 (B) 2 (C) 3 (D) 4
2. 給定一陣列 a[10]={ 1, 3, 9, 2, 5, int f (int a[], int n) { 8, 4, 9, 6, 7 },i.e., a[0]=1,a[1]=3, …, a[8]=6, a[9]=7,以 f(a, 10)呼叫執行右側 for (int i=1; i<=n-1; i=i+1) { 函式後,回傳值為何? (A) 1(B) 2 (C) 7(D) 9
3. 給定一整數陣列 a[0]、a[1]、…、a[99]且 a[k]=3k+1,以 value=100 呼叫以下兩函式,假設 函式 f1 及 f2 之 while 迴圈主體分別執行 n1 與 n2 次 (i.e, 計算 if 敘述執行次數,不 包含 else if 敘述),請問 n1 與 n2 之值為何? 註: (low + high)/2 只取整數部分。 (A) n1=33, n2=4 (B) n1=33, n2=5 (C) n1=34, n2=4 (D) n1=34, n2=5
4. 經過運算後,右側程式的輸出為何? (A) 1275 (B) 20(C) 1000 (D) 810
5. 函數 f 定義如下,如果呼叫 f(1000),指令 int f (int n) { sum=sum+i 被執行的次數最接近下列何者? (A) 1000 (B) 3000 (C) 5000(D) 10000
6. List 是一個陣列,裡面的元素是 element, 它的定義如右。List 中的每一個 element 利用 char data; next 這個整數變數來記錄下一個 element int next; 在陣列中的位置,如果沒有下一個 element, } next 就會記錄-1。所有的 element 串成了一個串列 (linked list)。例如在 list 中有三筆資料
它所代表的串列如下圖RemoveNextElement 是一個程序,用來移除 串列中 current 所指向的下一個元素,但是必須 保持原始串列的順序。例如,若 current 為 3 (對應到 list[3]), 呼叫完 RemoveNextElement 後,串列應為
請問在空格中應該填入的程式碼為何?
(A) list[current].next = current ; (B) list[current].next = list[list[current].next].next ; (C) current = list[list[current].next].next ; (D) list[list[current].next].next = list[current].next ;
7. 請問以 a(13,15)呼叫右側 a()函式,函式執行完後其回傳值為何?
(A) 90 (B) 103 (C) 93(D) 60
9. 請問右側程式輸出為何?
(A) 1 (B) 4(C) 3 (D) 33
10. 給定右側 g() 函式,g(13) 回傳值為何?
(A) 16 (B) 18(C) 19 (D) 22
11. 定義 a[n] 為一陣列(array),陣列元素的指標為 0 至 n-1。若要將陣列中 a[0]的元素移到 a[n-1],右側程式片段空白處該填入何運算式?
(A) n+1 } (B) n (C) n-1 (D) n-2 5 105 年 3 月 5 日 程式設計觀念題
12. 給定右側函式 f1() 及 f2()。f1(1)運算過程中,以下敘述何者為錯?
(A) 印出的數字最大的是 4 (B) f1 一共被呼叫二次 (C) f2 一共被呼叫三次 (D) 數字 2 被印出兩次
13. 右側程式片段擬以輾轉除法求 i 與 j 的最大公 i = 76; 因數。請問 while 迴圈內容何者正確? (A) k = i % j;
i = j;
j = k; (B) (C) (D)
14. 右側程式輸出為何? (A) bar: 6
15. 若以 f(22)呼叫右側 f()函式,總共會印出多少數字?(A) 16 (B) 22 (C) 11(D) 15
16. 右側程式執行過後所輸出數值為何?
(A) 11 (B) 13 (C) 15 (D) 16
17. 右側程式片段主要功能為:輸入 六個整數,檢測並印出最後一個 數字是否為六個數字中最小的 值。然而,這個程式是錯誤的。請問以下哪一組測試資料可以測試出程式有誤? (A) 11 12 13 14 15 3 (B) 11 12 13 14 25 20 (C) 23 15 18 20 11 12 (D) 18 17 19 24 15 16
20. 右側為一個計算 n 階層的函式,請問該如何修改才會得到正確的結果?
(A) 第 2 行,改為 int fac = n; (B) 第 3 行,改為 if (n > 0) { (C) 第 4 行,改為 fac = n * fun(n+1); (D) 第 4 行,改為 fac = fac * fun(n-1);
21. 右側程式碼,執行時的輸出為何?
(A) 0 2 4 6 8 10 (B) 0 1 2 3 4 5 6 7 8 9 10 (C) 0 1 3 5 7 9 (D) 0 1 3 5 7 9 11
22. 右側 f()函式執行後所回傳的值為何?
(A) 1023 (B) (C) 2047 (D) 2048
23. 右側 f()函式 (a), (b), (c) 處需分別填入哪些數 字,方能使得 f(4) 輸出 2468 的結果?
(A) 1, 2, 1 (B) 0, 1, 2 (C) 0, 2, 1 (D) 1, 1, 1
24. 右側 g(4)函式呼叫執行後,回傳值為何?(A) 6 (B) 11 (C) 13 (D) 14
25. 右側 Mystery()函式 else 部分運算式應為何,才能使得 Mystery(9) 的回傳 值為 34。 (A) x + Mystery(x-1) else { (B) x * Mystery(x-1) (C) Mystery(x-2) + Mystery(x+2) (D) Mystery(x-2) + Mystery(x-1)