註:答案僅供參考 教育部全國高級中學八十七學年度 資訊學科能力競賽決賽 筆試題目 說明: 1.答案必須寫在答案卷上。 2.作答時間80分鐘。本試題共有50題選擇題。 3.若需計算或作圖,請利用本試題的空白處或反面。 4.每題請選一最適當答案,答對得2分,答錯倒扣0.5分,不答不倒扣。 5.試題不必交回。僅繳交答案卷即可。 選擇(4選1)每題2分,共50題。 (B)1.若電腦用二進位表示整數,以下何者錯誤? (A)如果用 2 補數(2's complement)表示負數,則所有位元(bit)為 1 表示 -1 (B)如果用 2 補數表示負數,則除最右位元(bit)為 0 外全為1表示 -1 (C)如果用 1 補數表示負數,則除最右位元(bit)為 0 外全為1表元 -1 (D)如果用 2 補數表示負數,則 0 有 +0 和 -0 (D)顯然也是錯的 (B)2.若電腦用二進位表示整數,且用2補數表負數,以下何者錯誤? (A)一正數加一負數不可能溢位 (overflow) (B)兩數相加,有進位到 sign bit,但沒從 sign bit 進位出去,這表示沒溢位 (C)一負數減去一負數不可能溢位 (D)一正數減去一正數不可能溢位 (B)3.有部電腦12位元表示實數: 如下圖,左邊 sign bit,接著為 5 bits 的指數,以 excess 16 base 2 的方式存 放,再下去為 Fractional Mantissa( 6 bit,無 hidden bit ) 1 10011 111100 (沒有 hidden bit) ┬ ──┬── ============ Sign  EXP Fractional mantissa 則以上二進位表示十進位值 (A)-3.75 (B)-7.5 (C)-15.0 (D)-30.0 (B)4.如果某陣列 x[3][2] 在記憶體中位址恰等於交大在台復校的公元年數,且 x[2][3] 在記憶體中位址恰等於今年的公元年數,則該機器上資料在記憶體中的安排採用: (A)以列為主(row major) (B)以行為主(column magor) (C)無法判別 (D)都有可能 (B)5.函數 P 中,X 是以址呼叫(called by reference)而 Y 是以值呼叫 (called by value)。另外,K、L、M 和 Z 都是整數變數(global variables)。 long P(int& X,int y) { K = K + 1 ; L = 3 ; M = 5 ; return X + Y + M ; } 如果我們在主程式中這樣叫用 P: K = 1 ; L = 1 ; M = 1 ; Z = P(K,L); 則變數 Z 會得到: (A)7 (B)8 (C)9 (D)10 (B)6.假設 P1、P2、P3 都是子程式,且 B 是布林變數(Boolean variable),以下這段 P1; repeat P2 until(B); P3; 若用 while loop 改寫,有時會錯寫成: (i) P1; (ii) while(not B)do (iii) P2; (iv) P3; 其實正確寫法應是: (A)把 (ii) 中的 "not B" 換成 "B" (B)在 lines (i) 和 (ii) 間加一個 P2; (C)把 line (i) 移到 lines (ii) 和 (iii) 間 (D)把 "P1" 換成 "If(B) then P1" (B)7.陣列(array)可用來表示單鍊串列(singly linked list),例如用陣列 VALUE 和 陣 列 LINK,LINK[I] 指向 VALUE[I] 的後者。若 VALUE[N] 為新加入的元素,則程式 句: LINK[N] := LINK[I]; LINK[I] := N; 將會: (A)把 VALUE[N] 插入到串列中 VALUE[I] 之前 (B)把 VALUE[N] 插入到串列中 VALUE[I] 之後 (C)把串列中 VALUE[N] 換成 VALUE[I] (D)把串列中 VALUE[I] 換成 VALUE[N] (B)8.考慮以下二元樹和以下 C-like 程式,Root 指向 A: A / \ B C / \ / \ D E F G #define not ! init(Q);/* 空的 Queue */ enqueue(Q,Root); while(not empty(Q)) { a = dequeue(Q); if(a <> 0) { print(a); enqueue(Q,a->left); enqueue(Q,a->right); } enqueue(q,y) 是把 y 加入佇列(queue)q 中,dequeue(Q) 則是由佇列 Q 中拿出排 在最前面的元素,則以上程式會輸出: (A)ABCDEFG (B)ABDECFG (C)DBEAFCG (D)GFEDCBA (B)9.指出下列不屬於作業系統(Operation system)之任務: (A)提供應用程式之輸出入作業。 (B)檢測應用程式之邏輯錯誤。 (C)分配應用程式所需之主記憶體。 (D)收集應用式之系統資源使用記錄。 (B)10.以下程式可把陣列 List 排好(sort),其做資料相比之次數和N的關係為: (A)O(N) (B)O(N*N) (C)O(2*(N-1)) (D)O(N*(log2 N)) (註:log2表以2為底的對數) for Pass : = 1 to N-1 do begin for Item : = 1 to N-Pass do begin if(List[Item] int f(int &a) {return a++;} int g(int b) {return ++b;} main(){inr n=3; printf("%d",f(n)); printf("%d",g(n)); printf("%d",n); } (A)454 (B)344 (C)345 (D)354 (B)34.某部遠方的電腦中存有 560Mb 的資料,如果用目前市面上 baud rate 為 56K 的 數據機(moden)下載這些資料,大約需要多少時間? (A)十多天 (B)一天多 (C)約三小時 (D)約一小時 (B)35.某程式處理 n 筆資料所需的秒數為 T(n),可以表示如下 ┌ T(1) = 1 ┤ └ T(n) = 2*T(n/2)+n for n>1 試問該程式處理 1024 筆資料需要多久? (A)將近三小時 (B)約三十五小時 (C)2^1024 秒(註:2^n 表 2 的 n 次方) (D)以上皆非 這一題應該是 1024×11 所以是 (A) (C)36.SRAM 常被用在主記憶(main memory)與磁碟(disk)之間加快存取速度叫平麼 memory? (A)hash (B)mesh (C)cache (D)cash (A)37.遞迴函數(recursive function)的執行過程,與電腦系統中那一種資料結構的關係 最密切? (A)stack (B)queue (C)hash table (D)tree (C)38.下面那些是 WWW 上的導覽系統? 1.Microsoft IE 2.BBS 3.Nescape Navigator 4.NEWS 5.Hot Java (A)1、3 only (B)1、3、4 (C)1、3、5 (D)1、3、4、5 (A)39.AND、OR、NOT 與 XOR 四種邏輯匣(logic gate)當中,何種搭配不足以用來組合成 各式各樣的邏輯線路? (A)AND 與 OR (B)AND 與 NOT (C)OR 與 NOT (D)NOT 與 XOR (A)40.八進位數 44.4 和十六進位數 44.4 之和,若以四進位表示,應該是多少? (A)1220.3 (B)1220.6 (C)123 (D)220.3 (A)41.前置式(prefix expression)為+/+ab*+cdef的數式,如果用中置式 (infix expression)表示,最少需要幾括弧? (A)2 (B)3 (C)4 (D)5 (a+b)/((c+d)*e)+f 所以是 (B) (A)42.想在 n 個未排序的數字中,挑出最大的數字,至少需要幾次數字大小的比較? (A)n-1 (B)n/2 (C)log2 n (D)n(log2 n) (註:log2表以2為底的對數) (C)43.利用插入排序法(insertion sort)對 n 筆資料排序,在平均情況下(arerage-case )所需的執行時間(time complexity)為何?選最恰當的: (A)O(n) (B)O(n (log n)) (C)O(n^2) (D)O(n^2 (log n)) (E)O(n^3)(註:2^n 表 2 的 n 次方) (A)44.如果某棵二元樹(binary tree)T上,每個節點所儲存的資料均不相同,則由 T 的 哪兩種 traversal 無法唯一決定 T 的形狀? (A)preorder + postorder (B)inorder + preorder (C)inorder + postorder (D)以上組合皆可唯一決定 T 的形狀 (B)45.對於堆疊(stack)我們通常可用 Push、Pop、Top and IsEmpty。假設 Pop 後是指 拿掉 Top 元素後留下的Stack,則以下何者是錯的? (A)Pop(Push(Stack,Elem)) = Stack (B)Top(Pop(Push(Push(Stack,Elem1),Elem2))) = Elem2 (C)Top(Pop(Push(Push(Stack,Elem1),Elem2))) = Elem1 (D)Top(Push(Stack,Elem))= Elem (C)46.在BASIC語言中,"A" + "B" 之結果為: (A)語法錯誤 (B)邏輯錯誤 (C)"AB" (D)十六進數 83 (D)47.在 C 語言中,'A' + 'B' 之結果為(假設電腦用ASCII code): (A)語法錯誤 (B)邏輯錯誤 (C)"AB" (D)十六進數 83 (B)48.以下為一個 C function int F(int n){ int m=0; if(n == 0)return m; m++;return F(n-1)+m; } 試問 F(5) 為多少? (A)1 (B)5 (C)20 (D)21 (?)49.此題送分 (B)50.假設一個解碼器(decoder)有 M 個輸入端和 N 個輸出端,則 M 與 N 的關係為何 ? (A)M > N (B)M < N (C)M = N (D)不一定