lawpalyer logo

資訊處理 109 年程式設計概要考古題

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

0 題選擇題 + 9 題申論題

智慧型新社區內,住戶都擁有電動車,街道上有許多電動車停車格,停車 格編號代表距離該街道起始點的整數距離(公尺),因此多個停車格可以 有相同的編號。為了避免浪費,社區內要擴大其中一個停車格用來設立共 用快速充電站。經過投票,充電站要設在最「中央」的位置,也就是離所 有停車格平均距離最短的位置。 若輸入資料為15 個停車格,編號分別為5, 5, 5, 12, 18, 18, 25, 25, 31, 31, 40, 45, 45, 45, 45,請計算並說明該以那個編號的停車格來擴大改建為快 速充電站?(5 分) 下列流程圖可用以計算充電站該設立的位置。請問三個空白框(總距離 = …, 最短距離=…, 中央位置=…)正確的運算式為何?(15 分) 請將該流程圖以有效率的C/C++語言撰寫出來。(10 分)
下面的遞迴程式執行後,印出的信息為何?(作答必須解釋計算過程,只 寫答案而未加解釋,只能得部分分數。)(25分) int new1(int p){ if (p > 90) return(new1(new1(p-11))); return(p-10); } int new2(int p){ if (p < 91) return(new2(p+11)); return(p); } int new(int p){ return(new1(new2(p))); } int main(int argc, char **argv){ int q; q = 65; printf("new(%d)= %d.\n", q, new(q)); q = 95; printf("new(%d)= %d.\n", q, new(q)); q = 100; printf("new(%d)= %d.\n", q, new(q)); q = 104; printf("new(%d)= %d.\n", q, new(q)); q = 110; printf("new(%d)= %d.\n", q, new(q)); return(0); }
(0)
請說明下列程式設計重要名詞的差異。(25 分) 執行期錯誤(Runtime Error),語意錯誤(Semantic Error),語法錯誤 (Syntax Error) 動態記憶體配置(Dynamic memory allocation),靜態記憶體配置(Static memory allocation)
請參考以下Java程式。如果第一個輸入是25,第二個輸入是-34(負34)。 最後印出來是什麼?(作答必須解釋計算過程,只寫答案而未加解釋,只 能得部分分數。)(25分) import java.util.Scanner; public class JavaExample { public static void main(String args[]) { int num1, num2; Scanner scanner = new Scanner(System.in); System.out.print("Enter first number:"); num1 = scanner.nextInt(); System.out.print("Enter second number:"); num2 = scanner.nextInt(); num1 = num1 ^ num2; num2 = num1 ^ num2; num1 = num1 ^ num2; scanner.close(); System.out.println("The First number is "+num1); System.out.println("The Second number is "+num2); } }
下列用Python 所寫的遞迴程式,會產生一系列的指令,用以把下圖在A 柱子上的5 個圓盤全部移到C 柱子上,且移動過程中能確保不會有圓盤 疊在更小的圓盤上。 請說明MoveDisk 函式總共會被呼叫幾次?(5 分) 請說明總共會輸出幾個移動圓盤的指令?(10 分) 請說明第三大的圓盤(也是第三小的圓盤)總共會移動幾次?(10 分) def MoveDisk (n , from_pole, to_pole, aux_pole): if n == 1: print ("Move top disk from pole ",from_pole,"to pole",to_pole) return MoveDisk (n-1, from_pole, aux_pole, to_pole) Print ("Move top disk from pole ",from_pole,"to pole",to_pole) MoveDisk (n-1, aux_pole, to_pole, from_pole) MoveDisk(5, 'A', 'C', 'B')
請問下列程式執行後,印出結果為何?(作答必須解釋計算過程,只寫答 案而未加解釋,只能得部分分數。)(25分) (define return #f) (+ 1 (call/cc [lambda(cont) (set! return cont) 1] )) (return 22)
請說明下列常見html tag 的用途為何並顯示結果?(20 分) <u> This is difficult. </u> <strike> This test is easy. </strike> <ol> <li>What</li> <li>is</li> <li>this?</li> </ol> <form method=post action="/cgibin/example.cgi"> Select an option:<br> <input type="radio" name="option"> A <input type="radio" name="option" checked> B <input type="radio" name="option"> C C B A
請問下列程式執行後,印出結果為何?(作答必須解釋計算過程,只寫答 案而未加解釋,只能得部分分數。)(25分) #include <iostream> using namespace std; bool sqst(int arr[], int n, int sum){ if (sum == 0) { return true; } if (n < 0 || sum < 0) { return false; } bool include = sqst(arr, n - 1, sum - arr[n]); bool exclude = sqst(arr, n - 1, sum); return include || exclude; } int main(){ int arr[] = { 7, 3, 2, 5, 8 }; int sum = 14; int n = sizeof(arr)/ sizeof(arr[0]); if (sqst(arr, n - 1 , sum)) cout << "Yes"; else cout << "No"; return 0; }
請使用C++,Java 或Python 程式語言為三角形面積計算公式設計一個 名為HeronFormula 類別,並撰寫一測試程式驗證此類別程式碼的正 確性。此類別須包含:(25分)  三邊長的私有資料a,b,c。  三邊長a,b,c 的初始化設定或建構元方法。  inputSide( )公有方法:讓使用者輸入三邊長a,b,c。此方 法須能確認使用者所輸入的三邊長皆須大於0,另此方法不須回 傳值。  getAssessResult( )公有方法:判斷三邊長a,b,c 是否可 以構成三角形。如果可以的話則回傳布林型別 (Boolean)“真”,如果不可以的話則回傳“假”。  getPerimeter( )公有方法:回傳三角形的周長。此方法須呼 叫getAssessResult( )方法,如果回傳值為“真”則回傳三 角形的周長,如果回傳值為“假”則回傳-1。  getArea( )公有方法:回傳三角形的面積。此方法須呼叫 getAssessResult( )方法,如果回傳值為“真”則回傳三角 形的面積,如果回傳值為“假”則回傳-1。三角形面積的Heron 計算公式為: s(s a)(s b)(s c)    ,其中s (a b c) / 2    。 程式執行範例如下: 請輸入大於0的三邊長:-3,6,9 輸入錯誤,請重新輸入大於0的三邊長:3,6,9 所輸入的三個整數無法構成三角形 繼續玩嗎?若想繼續玩,請按'y'或'Y':y 請輸入大於0的三邊長:3,4,5 周長等於:12 面積等於:6.0 繼續玩嗎?若想繼續玩,請按'y'或'Y':n