資訊處理 109 年程式設計概要考古題
題目為考試當年公告版本,實務標準請以現行規範為準。
智慧型新社區內,住戶都擁有電動車,街道上有許多電動車停車格,停車 格編號代表距離該街道起始點的整數距離(公尺),因此多個停車格可以 有相同的編號。為了避免浪費,社區內要擴大其中一個停車格用來設立共 用快速充電站。經過投票,充電站要設在最「中央」的位置,也就是離所 有停車格平均距離最短的位置。 ㈠若輸入資料為15 個停車格,編號分別為5, 5, 5, 12, 18, 18, 25, 25, 31, 31, 40, 45, 45, 45, 45,請計算並說明該以那個編號的停車格來擴大改建為快 速充電站?(5 分) ㈡下列流程圖可用以計算充電站該設立的位置。請問三個空白框(總距離 = …, 最短距離=…, 中央位置=…)正確的運算式為何?(15 分) ㈢請將該流程圖以有效率的C/C++語言撰寫出來。(10 分)
請說明下列程式設計重要名詞的差異。(25 分) ㈠執行期錯誤(Runtime Error),語意錯誤(Semantic Error),語法錯誤 (Syntax Error) ㈡動態記憶體配置(Dynamic memory allocation),靜態記憶體配置(Static memory allocation)
下列用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')
請說明下列常見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
請使用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