民國111年 高考三級 資訊處理 程式設計考古題

民國111年 高考三級 資訊處理 程式設計收錄考選部官方試題,共 4 題可線上瀏覽,考選部未公告本科目答案。

官方資料

題目與答案

第1題

請問以下三小題C 程式執行的結果為何?請注意須說明答案是如何產 生的,否則不給分。 (5 分) #include <stdio.h> #include <stdlib.h> int main(void) { int x; float y; for (x=0, y=50; x<25; x+=5, y/=2) printf("x=%d, y=%4.2f\n", x, y); return 0; } (5 分) #include <stdio.h> #include <stdlib.h> int a=10, fun(int); int main(void) { int b=6; printf("a=%d, b=%d, fun(a)=%d\n", a, b, fun(a)); return 0; } int fun(int b) { a-=5; b/=2; return(a+b); } (10 分) #include <stdio.h> #include <stdlib.h> #define SIZE 10 void fun(int *, int); int main(void) { int x[SIZE] = {1,2,3,4,5,6,7,8,9,10}; fun(x, SIZE); printf("\n"); return 0; } void fun(int *a, int size) { if (size > 0) { fun(a+3, size-3); printf("*(a+%d)=%d\n", SIZE-size, *a); } }

第2題

資料庫是企業組織或政府部門中用以保存大量資料的機制。下圖為資料 表的結構,請回答以下各小題。(每小題10 分,共20 分) 請以SQL 列出某一個人的年度薪資總額,必須顯示id, first_name, last_name 及總額。 現在的資料查詢服務常見於網頁系統,而SQLInjection 是最常見的資 料庫攻擊方式。請問下列查詢語句是否會有被攻擊的疑慮?若有的話 該如何改善?程式碼可以使用PHP 或ASP.NET。 SELECT first_name, last_name FROM employee WHERE id=’A001’ employee id : varchar(10) first_name : varchar(30) last_name : varchar(20) salary_slip id : varchar(10) year : int month : int amount : int

第3題

請使用C, C++, Java 或Python 程式語言撰寫採用五位數整數來進行資料 加密的完整程式。(30 分) 撰寫加密函數encrypt(),此函數可將所傳入的五位數整數進行加密, 並將加密後的密碼傳回。加密的規則如下: 先將該五位數整數的每位數值分別以「加5 後除以10 之餘數」 取代。 再將取代後之數字的第一位數與第五位數互換,第二位數與第四 位數互換,第三位數不變後取得一個新整數,此即為加密後的密 碼。(註:第一位數為萬分位、第二位數為千分位,以此類推。) 撰寫解密函數decipher(),此函數可將所傳入的五位數密碼進行解密, 並將解密後的整數傳回。解密的規則是將上述加密後之密碼還原為原 傳入的整數。 撰寫主程式來驗證上述之加密與解密函數的正確性。程式一開始先讓 使用者輸入任一之五位數整數[不在合理範圍內(10000~99999)須請 使用者重新輸入],在呼叫加密函數後將所傳回之密碼從螢幕上顯示 出;再將該密碼傳入解密函數,再將所傳回之整數從螢幕上顯示出。 程式須可讓使用者持續輸入五位數之整數,直到使用者輸入0(整數) 時結束程式的執行。 以下為程式執行的範例:(備註:斜體加外框線之整數為使用者所輸入, 其餘皆為程式執行的輸出。) 請輸入一個五位數的整數(輸入0 結束程式):1234 所輸入的數值並不是五位數之整數 請重新輸入:12345 加密後的密碼為:09876 解密後的密碼為:12345 請輸入一個五位數的整數(輸入0 結束程式):67890 加密後的密碼為:54321 解密後的密碼為:67890 請輸入一個五位數的整數(輸入0 結束程式):0 感謝使用此程式,歡迎您對此程式的優化提出建議。

第4題

抽象(abstract)類別、介面(interface)、覆寫(override)方法、多載(overload) 方法是物件導向程式設計實現多型(polymorphism)的方式。下圖是人 事系統中人員基本資料維護的類別圖,請說明類別圖中的覆寫方法及多 載方法名稱(須說明理由),並使用C++, Java 或Python 程式語言撰寫 Person 類別與Police 類別的程式碼。Police 類別之GetPersonalInformation 函數必須傳回身分證(id_no)、姓名(name)、職稱(rank),UpdateRoleTitle 函數必須完整實作更新police_rank。(30 分) Program Main(string[] args):void Person <<abstract>> # id_no : string # name : string + GetPersonalInformation() : string + UpdateRoleTitle() : void Police - police_rank : PoliceRank + Police(id : string, name : string) + GetPersonalInformation() : string + UpdateRoleTitle(title : ?) : void Staff - staff_position : StaffPosition + Staff(id : string, name : string) + GetPersonalInformation() : string + UpdateRoleTitle(title : ?) : void PoliceRank StaffPosition + code : string + rank : string + PoliceRank(code : string, rank : string) + code : string + title : string + StaffPosition(code : string, title : string)