試卷測驗 - 105 年 - 105 APCS程式設計觀念題(105/03/05)#107285-阿摩線上測驗
左滄定剛剛做了阿摩測驗,考了100分
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
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 ;
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)
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