lawpalyer logo

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

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

0 題選擇題 + 14 題申論題

假設已經將變數int nMonth 的值設定成介於1~12 間的整數,用來代表2018 年的某一 月份,亦即nMonth 為1 時,代表一月、nMonth 為2 時,代表二月…依此類推。請依 下列各子題要求分別撰寫出程式片段,在變數int nDays 中計算出nMonth 月的天數。 例如nMonth 是1 時,nDays 應該是31;nMonth 是2 時,nDays 應該是28。作答時可 以使用C/C++、Java 或C#其中任何一種語言作答,但必須註明所採用語言。 使用if…else if…else…。(10 分) 使用陣列(array),且不使用if…else if…else…或switch。(15 分)
請回答以下對C/C++程式語言的敘述正確與否?如果敘述是錯誤的,需說明正確敘 述為何。(每小題3 分,共30 分) 程式執行的結果與預期的不同,這種錯誤稱為執行期錯誤(Runtime Error)。 屬自由格式(Free-Form)、隱含型別宣告(Implicit Type Declaration)程式語言。 switch 選擇結構中,default 敘述為選擇性,故可省略。 陣列(Array)無法存放一連串資料型別不同的相關資料。 當&&運算子中的只要有一個運算元為真時,則該運算式的結果為真。 可使用結構(Structure)陣列變數的名稱指向該陣列中的任一個資料。 程式在編譯階段即配置完成其所需記憶體的方式稱為動態記憶體配置(Dynamic Memory Allocation)。 當不同的物件收到相同的訊息時,會以各自的方法作處理的特點稱為多載 (Overloading)。 子類別將繼承自父類別的方法重新定義,而且不會影響到父類別的方法,這個特 點稱為多載(Overloading)。 子類別可多重繼承自父類別內所有的資料成員與成員函數。
請依據下列C++程式碼執行後,試問輸出結果為何?(25 分) #include <stdio.h> #include <stdlib.h> int ABC(int n) { if (n <= 1) return 1; else return n * ABC(n - 1); } int main() { int i, sum = 0; for (i = 0; i < 8; i = i + 1) { sum += ABC(i); printf("%d\n", sum); } system("pause"); return 0; }
如果A, B 都是大小為M×N 的二維陣列,其元素資料型態均為double,且假設陣列A 已經有完整的資料。今欲依據A 求得B,使得B[i][j]成為在陣列A 中以A [i][j]為中心 的3×3 個數的平均值(當B[i][j]位於邊界時,仍是以A[i][j]為中心的3×3 個數的平均 值,惟超出陣列的部分皆以0 取代,即B[0][0], B[0][N - 1], B[M - 1][0], B[M - 1][N - 1] 是2×2 個數的平均值;B[0][j], B[M - 1][j]是2×3 個數的平均值, 0 < j < N – 1;B[i][0], B[i][N - 1]是3×2 個數的平均值, 0 < i < M – 1)。無論採用C/C++或Java 撰寫程式,都 可以用下列程式片段達成任務。請為每一空白處填入一運算式(Expression)完成該 程式片段。作答時須完整寫出此程式片段,並於填空處加底線標示,且不能更改此 程式片段。(25 分) B[0][0] = ; B[0][N - 1] = ; B[M - 1][0] = ; B[M - 1][N - 1] = ; for (int j = 1; ; j++) { B[0][j] = ; B[M - 1][j] = ; } for (int i = 1; ; i++) { B[i][0] = ; B[i][N - 1] = ; } for (int i = 1; ; i++) for (int j = 1; ; j++) B[i][j] = ; 107年公務人員特種考試關務人員、 身心障礙人員考試及107年國軍上校 以上軍官轉任公務人員考試試題 全一張 (背面) 考試別: 身心障礙人員考試 等 別: 四等考試 類 科: 資訊處理 科 目: 程式設計概要
請問以下程式輸出的結果為何?(10 分) #include <iostream> #include <cstdlib> using namespace std; int main(void){ int i=0, sum=0; while(i < 21) { if(i % 3 != 0) { i++; continue; } sum += i++; } cout<< "i=" <<i<< ", SUM=" << sum <<endl; return 0; } (請接第二頁) 107年公務人員普通考試試題 全三頁 第二頁 類 科: 資訊處理 科 目: 程式設計概要
請依據下列C++程式碼執行後,試問輸出結果為何?(25 分) #include <stdio.h> #include <stdlib.h> void F(int* p, int n) { int i; for (i = 0; i < n - 1; i = i + 1) { int tmp = *(p + i + 1); *(p + i + 1) = *(p + i); *(p + i) = tmp; } } int main() { int a[5] = { 7,3,6,9,5 }; F(a, 5); for(int i=0;i<=4;i++){ printf("%d\n", a[i]); } system("pause"); return 0; } 107年公務人員特種考試警察人員、一般警察人員考試及 107年特種考試交通事業鐵路人員考試試題 全一張 (背面) 考試別: 鐵路人員考試 等 別: 員級考試 類科別: 資訊處理 科 目: 程式設計概要
假設已經將某位考生的單一科目分數輸入到變數int nScore 中,並確定其值介於 0~100 之間。請依下列各子題要求分別撰寫出程式片段,將該分數轉換為等級char Grade,使得Grade 與nScore 之對應為:’A’:90~100、’B’:80~89、’C’:70~79、’D’: 60~69、’E’:0~59。作答時可以使用C/C++、Java 或C#其中任何一種語言作答,但 必須註明所採用語言。 使用if…else if…else if…。(10 分) 使用switch,且case 標籤(label)須盡量精簡。(15 分)
請問以下程式輸出的結果為何?(10 分) #include <iostream> #include <cstdlib> using namespace std; void fun1(int, int); void fun2(int *, int *); void fun3(int *, int, int); int main(void){ int a[]={1, 2, 3, 4, 5}, i; fun1(a[1], a[3]); fun2(a, a+2); fun3(a, 5, 0); cout<< "執行所有函數後,陣列的內容為:" << endl; for(i=0; i<5; i++) cout<< “a[” << i << “]=” << a[i] <<endl; return 0; } void fun1(int x, int y){ int tmp; tmp=y; y=x; x=tmp; } void fun2(int *x, int *y){ int tmp; tmp=*y; *y=*x; *x=tmp; } void fun3(int *ptr, int n, int num){ *(ptr+n-1) = num; }
在資料庫中,有一個名叫Sale_Information 的表格,今天主管David 想要依照營業額 (Money)由高往低依序排列顯示,且算出所有地方營業額的平均值,請問工程師 Bob 要輸入那兩個mysql 指令才能達成主管的要求呢?(25 分) Sale_Information 表格: Place Money Date Japan 3500 05-Dec-2017 Taiwan 2000 06-Dec-2017 China 2500 12-Dec-2017 Los Angeles 1200 26-Dec-2017
假設已經將一個班級50 位同學的程式設計概要成績記錄在有50 個元素的int 陣列 nScores 中,且確定每個元素的值均介於0~100 之間。當要找出全班最高分(儲存於 nMax)及其在陣列的註標(index)(儲存於iMax),全班最低分(儲存於nMin)及 其在陣列的註標(儲存於iMin)(有多個最高分或最低分時,找出第一個即可);並 計算全班的總平均於Avg 時,無論使用C/C++、Java 或C#撰寫程式,都可以用下列 程式片段達成任務。請為每一空白處填入一運算式(Expression)完成該程式片段。 作答時須完整寫出此程式片段,並於填空處加底線標示,且不能更改此程式片段。(25 分) int nMax = ; int iMax = ; int nMin = ; int iMin = ; int nSum = ; double Avg; for (int i = 0; ; i++) { if ( ) { nMax = ; iMax = ; } if ( ) { nMin = ; iMin = ; } nSum += ; } Avg = ;
以下是一個完整的Python 程式,請問執行後的結果為何?(10 分) for i in range(1, 7): #產生一個1,2,3,4,5,6 的整數序列 for j in range(i, 1, -1): #-1 表示階值(step value) print(" ", end="") for j in range(1, 7-i+1): print(j, end="") print() (請接第三頁) 107年公務人員普通考試試題 全三頁 第三頁 類 科: 資訊處理 科 目: 程式設計概要 (請接背面) name 代表姓名 quiz 代表小考 midterm 代表 final 代表期末 建構函數可將 設計calScore() Grade()公有方法計算成績等第(grade)的私有字元資料項目 設計printReport() 計算公式與成績等第標準同第五題 讓使用者輸入資料以驗證程式的正確性,直到使用者輸入’n’或’N’時 程式。
請試述下列名詞之意涵:(每小題5 分,共25 分) object code preprocessor command data hiding local variable Overloading
撰寫一個完整的C/C++、Java 或Python 程式,讓使用者輸入姓名(name)、小考成 績(quiz)、期中考成績(midterm)與期末考成績(final)後,將這三個成績傳入呼 叫函數calScore(),該函數需傳回所計算後的學期成績;程式再將學期成績傳入呼叫 函數calGrade(),該函數需傳回成績等第結果;最後程式需從螢幕顯示出使用者所輸 入的姓名、學期成績與成績等第結果。程式顯示結果後,需再詢問使用者是否繼續 輸入,當使用者輸入’Y’或’y’時則繼續輸入,否則結束離開程式。(20 分) 學期成績計算公式為:小考成績*0.15+期中考成績*0.35+期末考成績*0.5 成績等第標準如下: 學期成績 成績等第 學期成績≧90 A 89≧學期成績≧80 B 79≧學期成績≧70 C 69≧學期成績≧60 D 學期成績≦59 F
撰寫一個完整的C/C++、Java 或Python 程式,以物件導向方式設計一個名為transcript 的類別,此類別包括以下屬性與方法:(20 分) ¾ 的私有(private)字串資料項目 ¾ 成績的私有數值資料項目 ¾ 期中考成績的私有數值資料項目 ¾ 考成績的私有數值資料項目 ¾ 新建立物件之姓名作初始化 ¾ 公有方法計算學期成績(score)的私有數值資料項目 ¾ 設計cal ¾ 方法從螢幕顯示出學生姓名、學期成績與成績等第結果 ¾ 學期成績 程式需設計迴圈 結束