高普考題庫
110 年 110年公務人員高等考試三級考試暨普通考試

程式語言

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1語意分析(Semantics Analysis)對於程式語言的正確執行非常重要。㈠以下是Java 和C++程式,請說明程式編譯、執行結果與其原因,以及程式指令之意義或影響。(18 分)⑴Java 程式static void test1(){int n;int [] x = new int[n];}⑵Java 程式static void test2(){int n=0;int [] x = new int[n];}⑶Java 程式static void test3(){int n=0;int [] x = new int[n];x[0]=0;}⑷C++程式void test4(){int n;int x[n];}⑸C++程式void test5(){int n=0;int x[n];x[0] =0;}⑹C++程式void test6(){int n=0;int *x = new int[n];x[0] =0;}㈡請說明Java 與C++語言在陣列宣告上的語意分析的方法,與其優缺點。(7 分)
申論 2程式驗證的應用。㈠請說明「測試驅動發展方法(Test Driven Development, TDD)」的概念及優點。(7 分)㈡有一MySort 類別的方法int[] binarySort(int data[]),將陣列data 內的資料由小到大排序後回傳,請依據TDD 的概念設計測試案例。(10 分)㈢請以Java/JUnit 語言完成以下測試程式(I)~(II)。(8 分)
申論 3建構股票交易資料庫(Stock),請寫出SQL 指令。客戶表格(Customer)客戶編號(cid)客戶姓名(cname)客戶帳戶餘額客戶融資餘額[整數、主鍵][少於10 字元可變字串](balance)(margin)[自動增加][整數、非空值][整數、非空值]證券交易表格(StockTrade)交易編號證券編號證券每股購入價格證券購入股數客戶編號(cid)(id)(sid)(price)(share)[整數、非空值][整數、主鍵][整數、非空值][整數、非空值][整數、非空值][自動增加]㈠造出Customer, StockTrade 表格。(10 分)
申論 4程式例外處理的設計對於資訊系統的可靠性非常重要。㈠請完成以下C++程式(I)~(V)指令,處理兩數相除的例外狀況,使輸出為:(15 分)Exception:emptyException:not a numberQuotient:Exception:divided by zeroQuotient:2.4#include <iostream>#include <exception>#include <string.h>#define N 10using namespace std;class EmptyException:public exception {public:virtual const char* what()const throw(){(I);}};class NotNumberException:public exception {public:virtual const char* what()const throw(){(II);}};class DividedByZeroException:public exception {public:virtual const char* what()const throw(){(III);}};int valid(const char x[N]){int result=0;if(strlen(x)==0)throw EmptyException();for(int i=0; i<strlen(x); i++){if(!isdigit(x[i]))throw NotNumberException();result =(IV);}return result;}double quotient(int n1, int n2){if((V))throw DividedByZeroException();return static_cast<double>(n1/n2);}void test(const char x1[N], const char x2[N]){int n1, n2;try {n1=valid(x1);n2=valid(x2);cout<<"Quotient:"<<quotient(n1, n2);}catch(EmptyException &e){cout<<"Exception:"<< e.what();}catch(NotNumberException &e){cout<<"Exception:"<< e.what();}catch(DividedByZeroException &e){cout<<"Exception:"<< e.what();}cout<<endl;}int main(){test("","");test("a","12");test("10","0");test("12","5");return 0;}㈡請說明使用try-catch 與if-else,處理例外狀況的優缺點。(5 分)㈢請說明C++與Java 在try-catch 中finally 設計的異同與其理由。(5 分)
申論 5CREATE TABLE Customer ( _____________________ );CREATE TABLE StockTrade ( _____________________ );㈡查詢客戶姓名是"Tom"所有購買股票編號與購入總股數。(5 分)㈢撰寫Store Procedure,造出一個暫時的資料表Report,含兩個整數資料欄位(證券編號sid, 證券價格price);加入10 筆資料,再根據證券價格由小到大排序,查詢列出此10 筆資料。(10 分)
申論 6delimiter $$CREATE PROCEDURE x()BEGINDECLARE i INT DEFAULT 1;____________________END$$