一 解釋名詞 :(50%) 1. Two s complement of an integer in binary 2. Arithmetic right shift of a signed integer 3. Pipelining in instruction execution 4. Highest and lowest layers in the TCP/IP protocol suite 5. Process in operation system 6. Bootstrap program in operation system 7. Recursive algorithm 8. Pass by reference in function call 9. Interpretation in program execution 10. Transferability in software quality 11. Binary search tree (BST) 12. Stack in data structure 13. Hash function 14. Huffman coding 15. Polynomial problem in the theory of computation 16. Three phases in a simplified instruction execution cycle (5%) 二 選擇題 :(30%) 1. 請問下列程式執行後, 輸出結果為何 : int ff1(int n) main() if(n==1) else return 1; return n*ff1(n-1); printf("%d\n",ff1(4)); (A)1 (B)12 (C)24 (D)120 共 6 頁, 第 1 頁 - 1 -
2. 請問下列程式執行後, 輸出結果為何 : int a = 6, b; int *p = &a; b = ++(*p); printf("%d,%d\n", a, b); (A)6,7 (B)6,6 (C)7,6 (D)7,7 共 6 頁, 第 2 頁 3. 請問下列程式執行後, 輸出結果為何 : int a[2] = 0, i, j; for(i = 0; i < 2; i++) for(j = 0; j < 2; j++) a[i] = a[j] + 1; printf("%d",a[1]); (A)0 (B)1 (C)2 (D)3 請參考以下程式回答問題 4~6: char s[ ] = "ABCDEFGHIJ"; printf("%c\n", s[4]); printf("%s\n", s); s[6] = '\0'; printf("%s\n",s); 4. 請問 printf("%c\n", s[4]); 的輸出結果為何? (A)C (B) D (C)E (D)F - 2 -
共 6 頁, 第 3 頁 5. 請問 printf("%s\n", s); 的輸出結果為何? (A)A (B)ABCDEFGHIJ (C)ABCDEF (D)FGHIJ 6. 請問 printf("%s\n", s); 的輸出結果為何? (A)A (B) ABCDEFGHIJ (C)ABCDEF (D)FGHIJ 7. 請問下列程式執行後, 輸出結果為何 : int main() int arr[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int *p = arr + 3; p = p + 4; printf("%d\n", *p); (A)7 (B)8 (C)12345678 (D)8910 8. 請問下列程式執行後, 輸出結果為何 : 提示 : 優先權 int main() int x, y =12, z = 8; if (z < 13 z > 15 && y > 17 ) if(y>13 && z <= 8) x = 13 - y + z; else x = 24 / z + y; else x = 4 + z; printf("%d", x); (A) 8 (B)12 (C)15 (D)9 9. 請問下列程式執行後, 輸出結果為何 : 提示 :A~E 的 ASCII Code 為 65~69 int main() char Arr[]="CCDADBDABA"; int i = 0, b = 0, c = 0; - 3 -
while(arr[i]!= '\0') switch(arr[i]%5) c+=b; case 0: b*=2; case 1: b--; case 2: --b; case 3: b+=3; default: ++b; printf("%c%d,", Arr[i],c); i+=3; (A)C3,A8,D14,A25 (B)C3,A5,D6,A11 (C)C2,A5,D11,A22 (D)C2,A3,D6,A11 共 6 頁, 第 4 頁 10. 請問下列程式執行後, 輸出結果為何 : int A = -1, B = 2; if(a++) printf("%d,%d,",--a, B--); if(a++ <0) printf("%d,%d",a++, --B); else printf("%d,",++a, ++B); if(--a <0) printf("%d,%d",a--, B++); (A)-1,2,0,0 (B)-1,2,1,-1 (C)-2,1,-1,-1 (D)-1,2,-1,0 三 非選題 :(20%) - 4 -
1. 請問以下程式執行結果為何? 提示 :A~F 的 ASCII Code 為 65~70 int main() int num = 2; 共 6 頁, 第 5 頁 switch(num) case 1: printf("a\n"); case 'A': printf("b\n"); case 2: printf("c\n"); case 'B': printf("%d\n", num + 12); case 3: printf("%c\n", num + 67); case 'C': printf("%d\n", num + 'E'); default: printf("f\n"); 2. 請問以下程式執行結果為何? int main() int i; for(i=0;i<=10;i++) if(i == 6) else if(i == 4) continue; printf("%d,", i); - 5 -
3. 請問以下程式執行結果為何? int main() int arr[5] = 1,2,3,4,5; int *p = arr; int **k = &p; printf("%d,",*p); p++; printf("%d", **k); 4. 請問以下程式執行結果為何? int main() int i; int arr[] = 2, 4, 6, 8, 10; int *p = arr; *p +=5; p++; *p +=10; for(i = 0; i < 5; i++) printf("%d,", arr[i]); 5. 請問以下程式執行結果為何? #include <string.h> int main() enum fruit_tapple, cherry, grape, guava, lemon; enum fruit_t fruit; char arr[] ="FRUIT"; for(fruit = apple; fruit < lemon; fruit+=3) printf("%c\n", arr[fruit]); 共 6 頁, 第 6 頁 - 6 -