lawpalyer logo

資訊處理 106 年程式語言考古題

民國 106 年(2017)資訊處理「程式語言」考試題目,共 18 題 | 資料來源:考選部

0 題選擇題 + 18 題申論題

試問下列C++程式碼執行後,其值為多少?(25 分) #include <iostream> using std::cout; using std::endl; int a(int i) { static int v=1; int t=v; v+=i; return t; } int b(int i) { int v=1; int t=v; v+=i; return t; } static int v; int c(int i) { int t=v; v+=i; return t; } int main() { int i; for (i=1; i<=10; i<<=1) { a(i); b(i); c(i); } cout<<"a="<<a(i)<<endl; cout<<"b="<<b(i)<<endl; cout<<"c="<<c(i)<<endl; return 0; } 106年特種考試地方政府公務人員考試試題 全一張 (背面) 等 別: 三等考試 類 科: 資訊處理 科 目: 程式語言
試解釋下列C 程式之敘述:(每小題5 分,共20 分)  int *ptr; char *str[3]; char (*str)[3]; int **ptr2;
一個小型程式語言的語法(grammar)定義如下: 這個語法描述的程式語言只有分配(assignment)這一種陳述式(statement)格式。 程式program 包含了特別字(special word)begin,緊接著的是很多行的陳述式用分 號分隔開來,最後使用特別字end 做結束。運算式(expression)可以是變數本身, 也可以是二個變數用+或−運算子(operator)分隔開來。這些變數用的名稱只有A、 B 和C,請把下列陳述式的演繹過程(derivation)寫下來:(20 分)
請宣告一個 Add class,內容包含以下特性:(25 分) A. Private member "A",型態為integer,並透過constructor 初始化為0。 B. Private member "B",型態為integer,並透過constructor 初始化為0。 C. Private method "print",將member "A"、"B"相加後顯示在console 中,且無回傳 值。 D. Public method "add(int A, int B)",須達成以下行為: i. 將參數A 的value 儲存到member "A"。 ii. 將參數B 的value 儲存到member "B"。 iii. 呼叫Private method "print",印出結果。 iv. 無回傳值。 public class Add { // code here }
下表是一個名為company 的資料庫裡面user 的表格 username email password creat_time 請使用SQL 語法加入三筆資料,如下表。(25 分) username email password creat_time John [email protected] john 2017-01-01 03:26:30 Marry [email protected] marry 2017-10-10 20:15:56 Stephen [email protected] stephen 2017-12-25 23:59:59
傳值呼叫(call by value)與傳址呼叫(call by address)的差異為何?試以兩數對調 的問題撰寫程式說明之。(20 分)
何謂靜態(static)變數、堆疊動態(stack-dynamic)變數、外顯堆積動態(explicit heap-dynamic)變數及內隱堆積動態(implicit heap-dynamic)變數?並分別說明其優 點和缺點。(20 分)
程式語言中,指標(Pointers)是一個非常強大有用的工具,但是也可能為程式帶來 Dangling Pointer 和Memory Leakage 問題。(25 分) 請使用下列的C 程式碼說明何謂Dangling Pointer 和Memory Leakage 問題,並解 釋其發生原因。 int *p1, *p2, *p3, *p4; p1 = (int*) malloc (sizeof(int)); p2 = p1; free p1; p3 = (int*) malloc (sizeof(int)); p4 = (int*) malloc (sizeof(int)); p3 = NULL; 請從Compiler 的角度,說明什麼方法可以解決這兩個問題? 106年公務人員高等考試三級考試試題 全一張 (背面) 類 科:資訊處理 科 目:程式語言
試問下列程式碼執行後,其值為多少?(25 分) #include <stdio.h> #include <stdlib.h> int main(void) { int x = 5, y = 7; if(x=6){ printf("%d\n", x*y); } else { printf("%d\n", x+y); } if (x == 8) { printf("%d\n", x*(x+y)); } else { printf("%d\n", x - y); } printf("%d\n", x); printf("%d\n", y); system("pause"); return 0; }
有一C 的敘述如下: char *str2[4] = {"Taiwan", "Germany", "France", "Swedn"}; 試回答下列問題:(每小題5 分,共20 分) printf("%c\n", *(*(str2+3)+4)); printf("%c\n", *(str2[1]+3)); printf("%s\n", *(str2+2)+4); 如何印出 "Taiwan"字串中的 a 字元。
請比較函數式程式設計(functional programming)和指令式程式設計(imperative programming)的差別。(20 分)
下列是以C,Java,Javascript,C++,PHP 及JSP 六種語言撰寫存取陣列(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.print(a[i]); Javascript: var a = [0, 1, 2, 3]; for(i=0; i<=a.length; i++) document.write(a[i]); C++: int a[] = {0, 1, 2, 3}; for(i=0; i<=sizeof(a); i++) printf("%d", a[i]); PHP: $a = array(0,1,2,3); for($i=0; $i<=count($a); $i++) echo $a[$i]; JSP: int[] a = {0, 1, 2, 3}; for(i=0; i<=a.length; i++) out.print(a[i]);
寫出一BNF 文法,產生符合以下條件的數字N: N 為一個二進位數字。(25 分)
試回答下列C 程式的輸出結果:(20 分) #include <stdio.h> int main() { int arr[] = {10, 20, 30, 40, 50}; int *ptr = arr + 2; printf("%d\n", ptr[0]); printf("%d\n", *(ptr+1)); printf("%d\n", *arr+2); ptr++; printf("%d\n", ptr[0]); return 0; } 106年公務人員特種考試警察人員、一般警察 人員考試及106年特種考試交通事業鐵路 人員、退除役軍人轉任公務人員考試試題 全一張 (背面) 考試別: 鐵路人員考試 等 別: 高員三級考試 類科別: 資訊處理 科 目: 程式語言
一個簡單的分配陳述式(assignment statements)語法(grammar)如下: 上述的語法說明了分配陳述式的右邊是含有加法、乘法和小括弧的算數運算式(arithmetic expressions),請使用最左演繹(leftmost derivation)完成下列的陳述式:(20 分) A = B *(A + C)
下列為秀出4 x 3 表格的html 網頁,請以此網頁為基礎,用Javascript 程式完成所需 的兩個js 檔案:data.js 及function.js。其中function.js 只包括函式ShowTable(I,J)及 data.js 只包括所需的二維陣列宣告。一定要用Javascript 的for 迴圈完成函式 ShowTable(I,J)。(25 分) <HTML><HEAD><TITLE>4x3 Table Example</TITLE> <SCRIPT SRC=Data.js></SCRIPT> <SCRIPT SRC=Function.js></SCRIPT> </HEAD><BODY> <SCRIPT LANGUAGE=JavaScript> ShowTable(4,3); </Script> </BODY></HTML>
下列的C 程式將先請使用者輸入一整數,之後再從1 加到此數的總和。請修改下列 程式的錯誤之處。(20 分) #include <stdio.h> int main() { int i, num, total; printf("請輸入一整數: "); scanf("%d", num); for(i=1, i<=num, i++) total += i; printf("1 加到%d = %d\n", num); return 0; }
請說明下列參數傳遞方法:pass-by-value、pass-by-result、pass-by-value-result 和 pass-by-reference 的優點和缺點。(20 分) <assign> Æ <id> = <expr> <id> Æ A | B | C <expr> Æ <id> + <expr> | <id> * <expr> |(<expr>) | <id> begin A = B + C; B = C end <program> Æ begin <stmt_list> end <stmt_list> Æ <stmt> | <stmt> ; <stmt_list> <stmt> Æ <var> = <expression> <var> Æ A | B | C <expression> Æ <var> + <var> | <var> − <var> | <var>