lawpalyer logo

程式語言概要考古題|歷屆國考試題彙整

橫跨多種國家考試的程式語言概要歷屆試題(選擇題 + 申論題)

年份:

資訊處理 81 題

下列為計算費波那契數列(Fibonacci numbers)的遞迴與非遞迴程式: 遞迴程式: def fib_r(n): if n == 0 or n == 1: return n else: return fib_r(n-1) + fib_r(n-2) 非遞迴程式: def fib_un(n): if n == 0 or n == 1: return n a = 0 b = 1 for i = 2 to n: temp = b b = a + b a = temp end return b  試計算使用遞迴及非遞迴方式求費波那契數列的時間複雜度為何? (9 分) 試說明使用遞迴 及非遞迴方式對費波那契數列分別有何優點?(8 分) 又有何缺點?(8 分)
請說明在CPU、記憶體(memory)、快取記憶體(cache)之間資料傳遞 時發生寫入(write through)與寫回(write back)之下列問題:  試述何謂寫入(write through)?(5 分) 試述何謂寫回( write back)?(5 分) 試述寫入( write through)與寫回(write back)分別有何優點、缺點? (15 分)
有一程式碼如下,試問總共create 出幾個process?(25 分) for(i=0;i<3;i++) { if(fork()==0) { fork(); fork(); fork(); } }
請說明直譯式程式語言(Interpreted language)與編譯式程式語言(Compiled language)之下列問題: 試說明何謂直譯式程式語言? (10 分) 試說明何謂編譯式程式語言? 10 分)  Javascript、Python、C、Pascal、HTML、Java,上述六個程式語言,何 者為直譯式程式語言?(5 分)
何謂保留字(reserved words)?在程式語言中,設定while 為保留字,試問編譯器在 處理那些指令時,會比較簡單?(25 分)
在下列計算費波那契數列(Fibonacci numbers)的程式: def fib(n): if x == 0 or x == 1: return n else: return fib(n-1) + fib(n-2) 請說明fib(4) 的呼叫過程與結果。(提示: fib(4) => fib(3) => …)(15 分) 當n 的數值很大時,這個程式在記憶體安排與效率上,會出現什麼問題?(10 分)
(4)
(4)
(3) 15 分
請說明程式語言編譯器(compiler)與解譯器(interpreter)之下列問題: 製作方式。(15 分) 何者和使用者,可以一行一行的互動式操作?(5 分) 執行一次或執行多次時,何者效率較高?(5 分)
請說明下列程式語言類型的基本概念、優點及適用情形: 物件導向程式語言(如 Java 或 C++)。(10 分) 函數式程式語言(如Scheme)。(10 分) 事件驅動化程式語言(如Visual Basic)。(5 分)
下列是一個指定語句(assignment statement)之語法 <assign> Æ <id> = <expr> <id> Æ X|Y|Z <expr> Æ <expr> + <id> | <expr> * <id> | (<expr>) |<id> 給予一個語句(statement)X = ( (X*Y) + Z ) * X,試繪出其 剖析樹(parse tree)。(10 分) 最右邊推導(rightmost derivation)。(10 分)
程式語言中,C++ 之指標(pointer)與 Java 之參考變數(reference variable)有何 差異?試說明之。(15 分)
給予下列 C 程式 int calculate (int *j) { *j += 5 return *j; } void main( ) { int y = 3; y = y + calculate (&y) } 請求出 main ( ) 中語句 y = y + calculate (&y) 執行完後之 y 值。 運算元(operand)從左到右評估。(5 分) 運算元(operand)從右到左評估。(5 分)
請試述下列名詞之意涵:(每小題5 分,共20 分) 摘要類別(abstract class) 屬性語法(attribute grammar) 自由聯盟(free union) 鋸齒狀陣列(jagged array)
程式語言中常用到移位減少演算法(shift-reduce algorithm),或稱移位減少解析器 (shift-reduce parser),試說明它如何運作。(15 分)
摘要資料類型(Abstract Data Type, ADT)是物件導向語言之重要元件,試說明 Abstract Data Type。(10 分) Java 與 C++ 在Abstract Data Type 的支援上類似,但還是有幾個重要之不同點, 試說明這些不同點。(10 分)
靜態類型程式語言需使用某種類型等價(type equivalence)方法以決定類型是否可 匹配(compatible),最常見的是名稱等價和結構等價,請說明這兩種方法。考慮 下列程式碼(X : T 表示變數X 之類型為T),在這兩種類型等價方法下,請分別 說明其中那些變數的類型為可匹配。(20 分) type T = array [1..10] of float X : T Y : T Z : array [1..10] of integer
物件導向語言中,對宣告之實體(如屬性、方法)的可見性(visibility)有那三 種常見的限制?請用你熟悉的語言舉一個簡單的例子解釋這三種限制造成的不同 可見性。(20 分)
請用上下文無關文法(context-free grammar)寫出一套文法規則,以產生與正規表 示式(regular expression),a*(ba*ba*)*,完全相同的語言(*符號代表可重複零到 無數次)。再用你所寫的文法規則,用最右推導(rightmost derivation),推導出 babaaabb 一句。(20 分)
下列的C 程式碼有何問題?如果忽略警告而逕行執行程式,在許多系統上,該程式 將顯示重複的行為,列印出0 1 2 3 4 5 6 7 8 9,為什麼?也請解釋為什麼在其他的 系統上,該程式的執行結果可能會有所不同,甚至結果是無法確定的。(20 分) void foo() { int i; printf("%d ", i++); } int main() { int j; for (j = 1; j <= 10; j++) foo(); }
假設你要寫一段程式碼,來管理數個並行執行緒(thread)之間共享的一雜湊表 (hash table),而雜湊表的操作必須符合原子性(atomicity)。你可以使用一個互 斥鎖(mutual exclusion lock)來保護整個表,你也可以用一個鎖分別保護每個雜湊 表的桶(bucket)。請分別說明這兩種做法的優點和缺點。(20 分)
試述程式語言之四大評核指標。(10 分)
假設某語言是以行為主(Column Major),宣告浮點數陣列A[9][10],設浮點數大小 為4,若A[0][0]在記憶體中的位址為250,則元素A[5][7]的位址為何?(10 分)
何謂布林運算子(Boolean Operator)之短路運算(Short-Circuit Evaluation)? (4 分) 試述短路運算有何優點?又有何缺點?(8 分) 試述C 語言如何處理布林運算子之短路運算。(8 分)
試將下列階乘函數改以遞迴方式撰寫。(20 分) int fact(int n) { int i, result = 1; for (i = 1; i <= n; i=i+1) result = result * i; return result; }
程式片段如下: for (int i=0; i <= n ; i++) K[i]=0; for (i=0; i <= n ; i++) for (j=0; j<=n ; j++) K[i] += j; 試述此程式片段的時間複雜度為何?(10 分) 若n = 8,則K[3]為何?(10 分) 六、假設某一公司有五種產品A、B、C、D 與E,其單價分別為12、16、10、14 與15 元; 而該公司共有三位銷售員,他們在某個月份的銷售量如下所示: 銷售員 產品A 產品B 產品C 產品D 產品E 1 33 32 56 45 33 2 73 38 68 45 52 3 43 55 32 67 61 根據上表,試寫一程式,達成下列功能: 儲存上表陣列內容。(4 分) 計算每位銷售員的銷售總金額,並將其結果印出。(8 分) 判斷那位銷售員的銷售總金額最多,並將其結果印出。(8 分)
以下為一C 程式,它有3 個變數宣告敘述(variable declaration statements):(16 分) 試說明在A、B、C、D 四個標示出的位置中的可見變數(visible variable)。 這些可見變數分別是在那個敘述中宣告的? void example(void) { int u, v, w; /* declaration 1 */ ..... while (....) { int v, w, x; /* declaration 2 */ ..... /* <=== A */ while (....) { int w, x, y; /* declaration 3 */ ..... /* <=== B */ } ..... /* <=== C */ } ..... /* <=== D */ }
在C++程式語言中,假設有一3 維陣列M,其各維度之最低指標(lowest subscript) 分別為L1、L2、L3,最高指標(highest subscript)分別為H1、H2、H3。若要存 取位於(i, j, k)之元素,試導出它的存取函式。(10 分) 若換成FORTRAN 程式語言,存取函式又為何?(10 分)
試證明以下之語法是不明確的(ambiguous)。(16 分) <statement> Æ <assignment> <assignment> Æ <assignment> + <assignment> | <identifier> <identifier> Æ x | y | z
在程式語言Java 中如何去釋放(Deallocate)一個物件(Object)?於此釋放物件的 過程有何存在之問題?如何解決?(16 分)
試說明C++程式語言中例外處理(Exception Handling)的try construct。(16 分) 六、解釋下列名詞:(每小題4 分,共16 分) 淺捆綁(Shallow binding) 位元碼(Byte code) 啟動錄(Activation record) 動態堆疊變數(Heap-dynamic variable)
大部分程式語言要求陣列(array)的元素必須是同一種資料型態(data type),而 且將陣列元素依照行(row)或列(column)為主的方式將其對應到記憶體位置, 假設A 是一個m×n 的二維整數陣列:(10 分) var A : array[1..m,1..n] of integer; 另外假設每個整數需要k 個bytes,陣列A 的開始位置為a。 以m = 2, n = 3, k = 4, a = 2000 為例,說明以行為主和以列為主時,陣列A 每個元 素在記憶體中的開始位置。 分別推導出以行為主和以列為主時,A[i, j], 1 ≤ i ≤ m, 1 ≤ j ≤ n 在記憶體中的開始 位置。
程式語言通常要求等號(assignment, =或:=)左右兩邊需要有相同的資料型態,檢查 資料型態是否相同的方法可分為靜態(static)和動態(dynamic)兩種方式,針對 以下敘述,判斷那些是對的?那些是錯的?並簡單說明其理由。(只有答案者不計 分)(20 分) 動態核對資料型態會使我們撰寫的程式執行起來更有效率。 核對資料型態使我們撰寫的程式比較不容易出錯。 任一種程式語言都可以用靜態方式來核對資料型態。 若程式可以分成許多模組,分別在不同時間翻譯,例如C 程式,則不管怎麼做, 採用靜態核對資料型態就無法完全核對資料型態是否相符。
許多程式語言的編譯器將程式所需使用的資料分別放在不同區域:(1)固定區(static)、 (2)堆疊區(stack)和(3)堆積區(heap)。(20 分) 說明將資料分區儲存的目的為何? 分別舉例說明那些資料最適合存放在那個區域。
(1)
(2)
(3) 20 分
以下是1 個函數(function),用類似C(C-like)的語言來表示。假設輸入的參數 n 都是正整數,請回答下列問題:(10 分) 這個函數在計算什麼?(用n 的函數來表示) 將這個函數改成不用recursive call 的寫法。 1) int f(n) { 2) if (n > 1) 3) return n * f(n – 1); 4) else 5) return 1; 6) } 100年公務人員特種考試海岸巡防人員考試、100年公務 人員特種考試關務人員考試、100年公務人員特種考試稅 務人員考試、100年特種考試退除役軍人轉任公務人員考 試及100年國軍上校以上軍官轉任公務人員考試試題 類(科)別: 資訊處理 全一張 (背面)
Prolog 是一個邏輯程式語言(logic programming language),它可以描述事實(fact)、 規則(rule)以及目標(goal),以下有5 個事實、2 個規則: 1) parent(carol, john). 2) parent(john, mary). 3) parent(mary, jim). 4) parent(john, sue). 5) parent(david, jim). 6) ancestor(X, Y) :=parent(X, Y). 7) ancestor(X, Z) :=parent(X, Y), ancestor(Y, Z). 假設目標是ancestor(john, X).則根據這些事實,滿足條件的X 有那些?(20 分) 六、程式語言的語法可用BNF(Backus-Naur Form)來描述,請參考以下語法,其中開 始符號(starting symbol)是S、a 為運算元(operand)、其餘3 個terminal symbols 為運算子(operator),請回答下列問題:(20 分) 1) S → S @ T | T 2) T → W ! T | W 3) W → # W | a 依照句子的長度,從短到長,寫出符合語法且長度不超過3 的所有句子。 依照從高到低的優先順序(precedence),列出此語言的3 個運算子。 那些為二元運算子? 那些二元運算子是左結合(left associative)?那些二元運算子是右結合(right associative)?
假設有三個函數或函數指標宣告如下: char * cmpA(int ); char (*cmpB)(int ); char * (*cmpC)(int); 請比較cmpA, cmpB, cmpC 三個變數之差異。(9 分) 試說明下列變數x 的定義有何不同: static int x;register int x;extern int x。(9 分)
請利用下列二種參數傳遞方式,將最後主程式裡array 的值分別列出:(12 分) Passed-by value Passed-by reference。 void fun(int first, int second) {first +=first; second+=second;} void main() { int array[2]={5,7}; fun(array[1], array[0]);}
int A[M][N];請利用new 的方式,動態產生這個二維陣列;接著利用delete 釋 放所要的記憶體。(12 分)
利用C 語言的語法,定義下列資料型態: Union data 包含char c, short s, long b, and double d.(8 分) Structures BitCard 包含三個unsigned bit 欄位(fields),換言之,face, suit, color 的長 度分別是4, 2 及1 bits。(6 分)
試用C++裡function template 的方式,寫出一個swap function,作任何兩個相同型 態變數的交換功能。(12 分) 六、利用C 程式的#define 功能,定義出計算某圓周長的函數如下: area(r)= ; (8 分) 請用C 程式的macro 功能,寫出下列函數: f(x, y) = (x + y) * sin x + 5x +6 (10 分) 七、試寫出一個副程式bitsdisplay(unsigned int p),使得這程式能將數字p 的每一個 bit 作輸出。例如:(14 分) bitsdisplay(65534) --- > 1111111111111110
(65534)
請撰寫程式。 設整數陣列INTDATA[M][N]已存值,請分別撰寫函數(Function)之副程式如下述, 並寫一主程式呼叫該函數,計算其值且列印出。 函數POSF 為找INTDATA 中的正值之項數,將此值存入NPOS 並列印出。(12 分) 函數EVENF 為找INTDATA 中的偶數之項數,將此值存入NEVEN 並列印出。 (13 分)
請說明下列程式片段各個Statement 執行幾次?及執行後N1, N2, N, M, NSUM 值各 為何?(25 分) INT NSUM, N1, N2, I, J, M, N; M=10; N=20; NSUM=0; N1=0; FOR I=1 TO N { N1=N1+1; N2=0; FOR J=1 TO M { N2=N2+1; NSUM=NSUM+1; } }
請逐步完成下列的程式設計: 試設計一父類別ClassA 內含兩個public 整數資料成員numA 與numB。(8 分) 設計一子類別ClassB,繼承自ClassA 類別,並加入set_num()函數,用來設定從父 類別繼承而來的成員numA 與numB,與show()函數,用來顯示numA 與numB 的 值。(8 分) 在主程式main()裡宣告ClassB 類別的變數bdata,利用set_num()函數將numA 設 值為55,numB 設值為88,再以show()印出成員之值。(9 分)
試就下列各小題說明computer 如何儲存值,並畫出其format。(12 分) 整數 2 bytes 正值 整數 2 bytes 負數 浮點數 4 bytes 正值 浮點數 4 bytes 負數 何謂例外(Exception)?為何需要例外的處理(Exception Handing)?(8 分) 說明程式語言中識別字及關鍵字。(5 分)
指出下列Java 程式有語法錯誤的敘述列號與錯誤的原因。 刪除有語法錯誤敘述後,寫出執行程式所印出的結果。 列號 程式 1 class javaTest
{public static void main(String args[])
{int a = 2; int b = 3; int c = 5; int d = 11;
System.out.println( "r1 = " + (d - d / b * b));
System.out.println( "r2 = " + (a++ + ++b));
System.out.println( "r3 = " + (a < b < c));
System.out.println( "r4 = " + ('k' - 'a'));
System.out.println( "r5 = " + ((a == 3)? (b == 3)? a: (c == 5)? b: c : d)); 9 } 10 } (20 分) 二、填入下列Java 程式的空格(不可是常數),使該程式能夠印出陣列dset 中所有值 在0 至100 的數的平均值。(請在試卷上作答) 指出此程式在何種狀況下會產生嚴重錯誤。只能修改一個敘述,且不能新增敘述 或刪除原有敘述,使程式能克服該項錯誤。 class javaTest {public static void main(String args[]) {int dset[] = {90,30,-5,70,95,110,80}; int c = 0; int s = 0; for (int i = 0; i < (1) ; i++) {if (dset[i] <= 100 (2) dset[i] >= 0) {c++; s+= dset[i]; } } System.out.println( "Av = "+(s/c)); } } (20 分) 97 年公務人員特種考試警察人員考試及 97 年公務人員特種考試關務人員考試試題 等 別:四等考試 類 科:資訊處理 科 目:程式語言概要 全一張 (背面) 三、何謂資訊隱藏(Information hiding)? 試以建立堆疊(Stack)抽象資料結構為例,說明Java 或C++(任擇一種)資訊 隱藏之作法。 (20 分) 四、寫出執行下列C++程式所印出的結果: #include <iostream> using namespace std; int binsearch(int * dset, int ib, int ie, int data) {cout << "search: ib = " << ib << ", ie = " << ie << endl; int ii; if (ib > ie) {ii = -1; } else { ii = (ib + ie) / 2; if (dset[ii] > data) {ii = binsearch(dset, ib, ii-1, data); } else if (dset[ii] < data) { ii = binsearch(dset, ii+1, ie, data); }; }; cout <<"search ib = "<<ib<<", ie = "<<ie<<" return: "<<ii<<endl; return ii; } int main() {int dset[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33}; cout << "Final data 13 is at: " << binsearch(dset,0,15,13) << endl; cout << "Final data 20 is at: " << binsearch(dset,0,15,20) << endl; return 0; } (20 分) 五、如果希望執行下列C++程式印出的結果是: x = 3 y = 5 寫出爲何下列程式不能達到目的的理由。 只能修改一個敘述,且不能新增敘述或刪除原有敘述,使程式能印出正確的結果。 void swap(int a, int b) {int temp = a; a = b; b = temp; return; } int main() {int x = 5; int y = 3; swap(x,y); cout << "x = " << x << " y = " << y << endl; return 0; } (20 分)
(1)
(2) 20 分
請用中文描述下列文法所定義的語言:(20 分) <S> -> <A> <B> <C> <A> -> a<A> | a <B> -> b<B> | b <C> -> c<C> | c
有些語言是靜態型態(static typed)語言,如C 和Java。靜態型態語言的程式必須 宣告(declare)變數(variables)的型態(types)。有些語言是動態型態(dynamic typed)語言,如Lisp 和Prolog。動態型態語言的程式不需宣告變數的型態。請敘 述這兩類語言的優缺點。(20 分)
命令語言(imperative language)中的變數(variable)是電腦什麼元件的抽象描述? (10 分)
一個語法分析樹(parse tree)可以用來描述一個程式結構(construct)的語法分析 過程。根據下列文法 E → T | T + E T → F | F * T F → digit | ( E ) 這裡E、T 和F 是非終端符號(nonterminals),而 +、*、(和)是終端符號 (terminals)。請畫出運算式7 * (4 + 6) + 9 的語法分析樹。(15 分)
有下列JAVA 程式片段,請寫出執行結果。(20 分) String s4 = new String(“restful”) ; String s5 = new String(“restful”) ; String s6 = new String(“peaceful”) ; String s7 = s4 ; String s8 = “restful” ; String s9 = “restful” ; System.out.println(s4.equals(s5)) ; System.out.println(s4.equals(s6)) ; System.out.println(s4 == s5) ; System.out.println(s4 == s7) ; System.out.println(s4 == s8) ; System.out.println(s8 == s9) ;
執行下列C 語言程式: int *f(int x) { int y; y = x + 10; return &y; } int g(int y) { int x; x = y – 10; return x; } void main( ) { int *x, y; x = f(10); y = g(*x); printf(“%d %d\n”, *x, y); } 請畫出程式執行時的活動記錄(activation record)的變化。(10 分) 程式的輸出為何?(5 分) 為什麼?(5 分) 96 年交通事業公路人員升資考試試題 代號: 級 別: 佐級晉員級 科 別: 資訊管理、資訊處理 全一張 (背面) 20450、21750
(10) 10 分
有下列Java 虛擬碼片段: try {statement-list1} catch (exception-class1 variable1) {statement-list2} catch (exception-class2 variable2) {statement-list3} finally {statement-list4} 若try 區段無exception 產生,請依序指出那些statement list 會被執行。(10 分) 若try 區段有exception-class1 的exception 產生,請依序指出那些statement list 會 被執行。(10 分) 若try 區段有exception-class2 的exception 產生,請依序指出那些statement list 會 被執行。(10 分) 96 年公務人員特種考試關務人員考試試題 代號: 科 別: 資訊處理 全一張 (背面) 60350
C 程式語言提供三種迴圈(loop):for-迴圈、while-迴圈和do-while-迴圈。請說明 這三種迴圈使用的時機。(15 分)
輸入34 於下列getBinary 遞迴程式,請問回傳值為何?(20 分) /** getBinary returns a String representation of the binary * equivalent of a specified integer n. * The worstTime(n) is O(log n).* * @param n – an int in decimal notation. * @return the binary equivalent of n, as a String * @throws IllegalArgumentException, if n is less than 0 */ public static String getBinary (int n) { if (n < 0) throw new IllegalArgumentException( ); if (n <= 1) return Integer.toString (n); return getBinary (n / 2) + Integer.toString (n % 2) } // getBinary
使用任一程式語言 應用遞迴(recursion)寫一個利用二分搜尋法(binary search)在一個由小至大排 列好的整數陣列中搜尋的函式(function)。(15 分) 應用迴圈(loop)寫一個利用二分搜尋法在一個由小至大排列好的整數陣列中搜 尋的函式。(15 分)
寫出下面C 程式的執行結果。(執行結果共有五列輸出,請標明每列輸出的列號與 內容)(20 分) #include<stdio.h> int x=5; void f(int x) { printf(“%d\n”,x++); } void g(void) { static int x = 0; printf(“%d\n”,x++); } void main() { printf(“%d\n”,++x); { int x = 4; printf(“%d\n”,x++); } g(); f(x); g(); }
完成下面找到a,b,c 三個整數裡中位數的C 函式。例如a 為5,b 為6,c 為3, 則a 是中位數,find_median 會回傳5。(20 分) int find_median(int a, int b, int c) { int median; if(a <= b) { if (______) { median = a; } else { median = ________; } } else { if ( b>= c) { median = ________; } else { median = ________; } } return median; // 傳回中位數 }
請說明物件導向式程式設計裡繼承(inheritance)的概念與好處。(20 分) 95 年公務人員特種考試關務人員考試試題 代號: 科 別: 資訊處理 全一張 (背面) 60320
寫出下面C++程式的執行結果。(執行結果共有五列輸出,請標明每列輸出的列號 與內容)(20 分) #include<iostream.h> class A { private: static int count; public: A() {++count; }; virtual void methodOne() { cout << "A's methodOne" << endl; } void methodTwo() { cout << "A's methodTwo" << endl; } static void numberOfinstanceOfA() { cout<< “# of A’s instances:” << count << endl; } ~A() { --count; } }; class B : public A{ public: B() {}; virtual void methodOne() { cout << "B's methodOne" << endl; } void methodTwo() { cout << "B's methodTwo" << endl; } }; int A::count = 0; void main() { A::numberOfinstanceOfA(); A *ptr = new B(); ptr->methodOne(); ptr->methodTwo(); A::numberOfinstanceOfA(); delete ptr; A::numberOfinstanceOfA(); }
寫出下面Java 程式的執行結果。(執行結果共有五列輸出,請標明每列輸出的列號 與內容)(20 分) import java.io.*; public class Main { public static void main(String [] args) { int x = 5; for(int i = 0; i< x; i++){ for(int j = i; j < x; j++){ System.out.print(j); } System.out.println(); } } }
寫出下列C 程式之執行結果:(20 分) main() { int a,b,c,d,e; a=b=c=d=e=3; a+=b-=c*=d=e+=2; printf("%d %d %d %d %d\n", a, b, c, d, e); a += (b+=c) + (e-=2) – 1; printf("%d %d %d %d %d\n", a, b, c, d, e); }
請以任一種程式語言(或虛擬語法)寫出一資料抽象型態(data abstract)之Queue 結構,另至少必須包含有initialization,insertion 及deletion 等運算。(20 分)
寫出下列C++程式之執行結果:(20 分) #include <iostream.h> main() { int i,j; for (i=1; i<5; i++) { for (j=1; j<5; j++) { cout << '=' << 3*i*j-i-j << ' '; if (i+j==5) cout << "** "; } cout << endl; } }
試算出下列含程式片段之時間複雜度。 (10 分) for i = 0 to n do begin j = i; while j ≠ 0 do j = j / 2; end (10 分) function Euclid (m, n) while m > 0 do begin t = n mod m; n = m; m = t; end return n
Java 程式語言中,class 內的static 與非static 欄位(fields)有何不同?請舉例說明其 不同之用法。(20 分)
請證明下述文法是混淆(ambiguous)的。(10 分) <S> -> <A> <A> -> <id> | <A> + <A> <id> -> a | b | c 下述句子(a 到c)有那些可由上述文法產生?(10 分) (a) a+b+c (b) a+a+a (c) a (請接背面) 94 年交通事業鐵路人員、公路人員升資考試試題 代號: 級 別: 佐級晉員級 科 別: 公路:資訊管理、資訊處理 全一張 (背面) 50450 51550 80450
試寫出以下片段程式(用C/C++/Java 都可),使得兩變數x 及y 的數值互換。(20 分) int x,y,temp; ... /* x 及y 數值已在此設定好了 */ /* 請在此處寫出片段程式,使得兩變數x 及y 的數值互換 */ ... /* x 及y 數值已交換 */
考慮下列程式片段: void main( ){ int value = 4, list = 8; swap(value, list); } void swap(int a, int b){ int temp; temp = a; b = temp; } 若參數傳遞為以值傳遞(passed by value),則在main()執行完swap(value, list)後, 變數value 及list 的值各為多少?(10 分) 若參數傳遞為以址傳遞(passed by address),則在main()執行完swap(value, list)後, 變數value 及list 的值各為多少?(10 分)
對上題,試寫出不用temp 變數的程式,來使得兩變數x 及y 的數值互換。(20 分)
考慮下列程式片段: int fab (int n){ if (n=1) return 1; else return (fab(n-1) + fab(n-2)); } void main(){ int value; value = fab(3); } 請說明當執行到fab( )函數時,activation record(包含function value, parameter, dynamic link, static link,及return address)的內容。(20 分)
(3) 20 分
請寫出下列JAVA 程式之執行結果︰(20 分) import java.io.*; public class Test { public static void main(String[] args) { int a,b,c,d ; a=b=c=d=2; a+=b*--c-1; System.out.println(a +" " + b + " "+ c +" " +d ); b-=c*(a=3); System.out.println(a + " " + b + " "+ c +" " +d ); } }
下列程式將輸出如右圖形,試完成下列C++程式。(10 分) #include <iostream.h> #include <conio.h> void main() { int i,j; i=1; while (i<=5) { do { cout <<j; j++; }while ( ); cout << endl; } getch(); } 12345 2345 345 45 5 九十三年公務人員特種考試關務人員考試試題 代號: 科 別: 資訊處理 全一張 (背面) ) 22210
下列C 之程式執行結果為何?(20 分) #include <iostream.h> #include <conio.h> #include <math.h> #include <iomanip.h> void main() { int a[4][5], i , j , c; cout << "輸入c="; cin >> c; //假設輸入之值 c=5 for (i=0;i<4;i++) for (j=0;j<5;j++) a[i][j]=(j+1)*c-4*i*j; cout << "輸出結果為:[先列再行]\n"; for (i=0;i<4;i++) { for (j=0;j<5;j++) cout << setw(3) << a[i][j] << ' '; cout << endl; } getch(); }
(3)
執行下列Visual Basic.NET 主控台應用程式,假設輸入一整數789654,其輸出結果 為何?(20 分) Sub Main() Dim n As Integer Console.Write("n=") n = Console.ReadLine() A(n) End Sub Sub A(ByVal n As Integer) If (n > 0) Then Console.Write(n Mod 10) A(n / 10) End If End Sub
試比較「改寫」和「多載」的不同。(20 分) 假設在某一類別內定義有setCircle()函數,則下列兩行敘述是否可以用來做為 setCircle()函數的多載?為什麼?(10 分) Public void setCircle (double radius); Public int setCircle (double radius);