lawpalyer logo

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

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

0 題選擇題 + 9 題申論題

在程式語言中,什麼是懸置else 的問題?(5 分) 近代高階程式語言怎麼解決懸置else 的問題?(5 分) 在C++語言中,寫程式可用什麼技巧避免懸置else 的問題?(5 分)
請將下面程式改寫為尾遞迴(tail recursion)的形式。(15分) int recsum(int x){ if (x == 1) return(x); return(x + recsum(x - 1)); } 請問尾遞迴形式的優點為何?(10分)
請比較compiler 與interpreter 的差別。(6 分) LISP,C,Python 三種語言,何者為compiler 所編譯?何者為interpreter 所執行?請說明。(9 分)
假設每個int變數占用4 bytes,每個指標變數也占用4 bytes。下面的C程式 印出的結果為何?(25分) typedef int T1[10][9]; int main(){ struct { T1 *a[10]; int (*b)[100]; } f[10][10][10]; printf("p1 = %d\n",(int)sizeof(f[1][5])); printf("p2 = %d\n",(int)sizeof(f[2][3][4].a)); printf("p3 = %d\n",(int)sizeof(f[3][2][6].b)); printf("p4 = %d\n",(int)(f - &f[5])); printf("p5 = %d\n",(int)(f[6][2] - f[3][3])); }
請比較concurrency 與Parallelism 方法的差別。(6 分) 什麼是thread safe 的問題?請說明。(4 分) 有三個方法可以創造多執行緒,分別是:Threading 、Fork 、 Multiprocessing,請比較這三種方法的差別。請從執行效率,memory sharing,thread safe 等方面來說明。(15 分) 請用Python 並利用multi-process 的方式,寫一段程式,同時下載兩 部videos,檔案名稱分別為A.avi 與B.avi,並顯示各自下載的時間。 (5 分)
下面的C程式印出的結果為何?(作答必須解釋計算過程,只寫答案而未 加解釋,只能得部分分數。)(25分) int foo1(int p){ if (p >= 90) return(foo1(foo1(p-11))); return(p+10); } int foo2(int p){ if (p < 91) return(foo2(p+11)); return(p); } int foo(int p){ return(foo1(foo2(p))); } int main(int argc, char **argv){ int q; q = 65; printf("foo(%d)= %d.\n", q, foo(q)); q = 83; printf("foo(%d)= %d.\n", q, foo(q)); q = 95; printf("foo(%d)= %d.\n", q, foo(q)); q = 100; printf("foo(%d)= %d.\n", q, foo(q)); q = 142; printf("foo(%d)= %d.\n", q, foo(q)); return(0); }
(0)
在程式語言中,有三種方式來定義字串的長度,分別為static,limited dynamic length 和dynamic with no maximum,請說明這三種方式的優 缺點。(12 分) 對下列四種程式語言:C++,COBOL,JAVA,PERL 它們對字串長度處理 的方式,各為那一種?(8 分)
物件導向程式語言有繼承的觀念,請解釋單一繼承(single inheritance)與 多重繼承(multiple inheritance)的意義、差別及實作方法。(25分)
請比較下列五種語言設計方式的差別Imperative Programming 、 Declarative Programming 、Procedural Programming 、Object-Oriented Programming、Functional Programming。(20 分)