資訊處理 99 年程式語言考古題
題目為考試當年公告版本,實務標準請以現行規範為準。
下列是以C、Java 及Javascript 三種語言撰寫存取陣列(array)的程式片斷,請問 此程式片斷執行後,會產生什麼結果?如果結果錯誤,錯誤訊息為何?各用什麼方 法可避免錯誤。請寫出完整的程式來說明你的方法。(25 分) C: int a[] = {0, 1, 2, 3}; for (i=0; i<=sizeof(a); i++) printf(“%d”, a[i]); Java: int[] a = {0, 1, 2, 3}; for (i=0; i<=a.length; i++) System.out.println(a[i]); Javascript: var a = [0, 1, 2, 3]; for(i=0; i<=a.length; i++) document.write(a[i]);
變數、繫結和資料型態:(25 分) #include<iostream> using namespace std; int counter; ……… void test(); main(){ int i; ……… for(i=0; i<5; i++) { test(); cout<<counter <<endl; } } void test(){ int *i= new int; … static int counter=0; … counter = counter +1; cout<< counter <<" "; } 變數a 變數b 變數c 變數d ㈠請說明變數型態的繫結(Type Binding)和記憶體配置的繫結(Storage Binding) 的種類。 ㈡請比較變數a、b、c、d 四個變數之型態的繫結(Type Binding),記憶體配置的 繋結(Storage Binding)以及有效範圍(Scoping)。 ㈢程式的執行結果為何? 99年特種考試地方政府公務人員考試試題 類 科: 資訊處理
下面是一個使用Scheme functional language 寫成之程式。回答下列問題:(25 分) (define unknown (lambda (L) (cond ((null? L) L) ((null? (cdr L)) L) ((eqv? (car L) (car (cdr L))) (unknown (cdr L))) (else (cons (car L) (unknown (cdr L))))))) ㈠請說明Functional Language 之主要優缺點。 ㈡請說明上述程式之功能。 ㈢請說明 (unknown ‘(3 3 2 2 2 4 4 3 4 2 2 1 0)) 之執行結果為何?
設g, h, n為正整數,定義x ≡ gh mod n,其中x為gh除以n的餘數。請寫一個遞迴( recursive)的C/C++函式在給定的g, h, n下來計算x,其中h, n可以達到226 - 1。在計 算的過程中,你必須考慮到你暫時的運算結果可以儲存在變數int or long中。(25 分)
㈠何謂捷徑計算(short-circuit evaluation)?(10 分) ㈡若語言本身不提供捷徑計算,則下列程式片段會出現什麼錯誤訊息?(10 分) index : = 1; while(index <= listlen) and (list[index] <> key) do index : = index + 1; (假設list [1..listlen]為被查詢之陣列,而key 為要查詢之值)