【請接續背面】
台灣自來水公司 102 年評價職位人員甄試試題
甄試類別:營運士業務類-資訊人員【E2715】
專業科目(2):程式設計概要 ※入場通知書編號:_____________
注意:•作答前須檢查答案卡、入場通知書編號、桌角號碼、應試類別是否相符,如有不同應立即請監 試人員處理,否則不予計分。
‚本試卷一張雙面共 50 題,每題 2 分,限用 2B 鉛筆在「答案卡」上作答,請選出最適當答案,
答錯不倒扣;未作答者,不予計分。
ƒ本項測驗禁止使用電子計算器;若經勸阻無效,仍執意使用者,該科扣 10 分,並由監試人員 代為保管至該節測驗結束後歸還。
„答案卡務必繳回,違反者該科成績以零分計算。
…請勿於答案卡書寫應考人姓名、入場通知書號碼或與答案無關之任何文字或符號。
【2】1.一個程式在作業系統裡必須和其他程式共享資源,這種程式稱為下列哪一項?
•整批處理(batch processing) ‚多處理程式(multiprogramming)
ƒ客戶/伺服計算(client/server computing) „物件導向程式 (object-oriented programming)
【2】2.高階語言翻譯器可以直接翻譯直接執行的翻譯軟體稱為什麼?
•組譯器(assemblers) ‚直譯器(interpreters) ƒ編譯器(compilers) „翻譯器(translators)
【1】3.下列哪一個記號在 C 程式語言裡代表註解開始?
• /* ‚ ** ƒ REM „ <<
【4】4.下列哪一項不是有效的整數?
• -3 ‚ 0 ƒ 2134859 „ 1.1
【3】5.下列哪一項是在程式語言裡代表電腦記憶體存放一個資料的空間位置?
•函數 ‚關鍵字 ƒ變數 „常數
【2】6.在程式編譯的時候,編譯器無法辨識原始程式的敘述,這是下列哪一種錯誤?
•邏輯錯誤 ‚語法錯誤 ƒ連結錯誤 „執行錯誤
【1】7.當變數裡面已經有值存在,但是必須再被指定另一個新的值進去的時候會是下列哪一種情形?
•原來的值會被新的值取代 ‚新的值會被存在原來值的旁邊
ƒ會產生無法存入的錯誤 „變數會保留原來值,新值無法存入
【1】8.右列程式語言裏的運算式計算結果為多少? 3 * 4 % 6 + 4 *5 (提示:%為整除法取餘數)
• 20 ‚ 26 ƒ 12 „ 32
【1】9.在 C 或 JAVA 程式語言裏,下列哪一個運算子符號代表比較兩個運算元是否相等?
• == ‚ = ƒ <= „ >=
【2】10.算術運算式
1 2
1 2
t t
p v p
= −
− 轉為程式語言表達方式,下列何者正確?• v = p2 – p1 / (t2 – t1); ‚ v = (p2 – p1) / (t2 – t1);
ƒ v = p2 – p1 / t2 – t1; „ v = p2 – (p1 / t2 – t1);
【2】11.在表達演算法的流程圖裡面,菱形圖形代表什麼結構?
•起始 ‚決策 ƒ宣告 „結束
【2】12.下列何者為正確的程式開發流程?
•寫碼、編譯、執行、連結/載入 ‚寫碼、編譯、連結/載入、執行
ƒ連結/載入、寫碼、編譯、執行 „執行、編譯、連結/載入、寫碼
【3】13.假如 grade 的值是 60,下列程式片段會印出什麼?
if ( grade >= 60 ) printf(“Passed”);
•不會印出任何東西 ‚ 60 ƒ Passed „印出 printf(“Passed”)
【3】14.下列程式片段會印出幾次 hello?
i = 1;
while ( i <= 10 ) printf( “hello” );
• 10 次 ‚ 8 次 ƒ無限多次 „ 0 次
【4】15.下列程式片段執行後,變數 p 的值會是多少?
p = 2;
while ( p < 2000 ) p = 2 * p;
• 1023 ‚ 1024 ƒ 2047 „ 2048
【3】16.迴圈裏面包含迴圈,我們稱之為什麼架構?
•遞迴 ‚雙層 ƒ巢狀 „重複
【3】17.在一般程式語言中,下列何種變數型態所使用的記憶體長度最短?
•單精確度 ‚雙精確度 ƒ布林 „長整數
【1】18.下列哪一種資料型態的變數,是最常拿來當作計算迴圈次數的計數器?
• int ‚ float ƒ char „ long
【2】19.下列遞迴函數 mystery 若給定輸入參數值 4,則回傳值會是多少?
int mystery ( int number ) { if ( number <= 1 ) return 1;
else
return number * mystery( number – 1 );
}
• 1 ‚ 24 ƒ 0 „ 4
【1】20.有關參數傳遞採用傳值方式(call by value),下列敘述何者正確?
•參數傳到副程式後,只把變數值複製過去,原呼叫函數的變數值不會被改變
‚參數傳到副程式後,原呼叫函數的變數值可以被副程式改變 ƒ參數傳到副程式後,原呼叫函數的變數位置也跟著傳到副程式
„參數傳到副程式後,副程式會辨識變數名稱決定會不會改變原值
【2】21.假設整數變數 a 的值為 3,整數陣列 b 有 7 個元素,陣列指標從 0 開始計算。若希望把陣列中 b[2]
的值和整數 3 加總的結果存放至 b[4],下列敘述何者正確?
• b[ a + 1 ] = b[ a ] + 3; ‚ b[ a + 1 ] = b[ a - 1 ] + 3;
ƒ b[ a ] + 1 = b[ a + 3]; „ b[ a + 2 ] = b[ a ] + 3;
【3】22.若陣列有 2000 個元素已由小到大排列,則在該陣列上做二元搜尋,最多需要做幾次比較的動作?
• 9 ‚ 15 ƒ 11 „ 14
【3】23.字串大小的比較,小的順序在前面,下列何者錯誤?
• “thrill”< “throw” ‚ “energy”< “force” ƒ “joyous”< “joyful” „ “joy”< “joyous”
【4】24.下圖為列陣裡存放的數值,在執行下列程式片段後,x[2]裡面的值會是多少?
sum = x[0] + x[1];
x[3] += x[2];
x[2] = sum + x[3];
• 14 ‚ 28 ƒ 40 „ 42
【2】25.在執行下列程式片段後,第一個 printf 的函數呼叫會執行多少次?
for(i=0; i < 7 ; i++){
for(j=0; j < i ; j++) printf("%4d", i*j);
printf("\n");
}
• 7 次 ‚ 21 次 ƒ 30 次 „無法計算
【4】26.在 Java 程式中定義計算費布納契數列的函數如下:
public static int Fibonacci(int n) { if (n == 1 || n == 2) return 1;
else return Fibonacci(n-1) + Fibonacci(n-2);
}
那麼要執行敘述 int x = Fibonacci(6);一共需要呼叫 Fibonacci()函數幾次?
• 12 次 ‚ 13 次 ƒ 14 次 „ 15 次
【4】27.有關 C++程式碼的執行結果,下列何者正確?
int b, i;
for (b = 1, i = 0; i < 100; i++) b = b * 3 % 7;
• b 的值變成 1 ‚ b 的值變成 2 ƒ b 的值變成 3 „ b 的值變成 4
【4】28.下列哪個情況會讓 C 運算式(x >= 10) || (x > 9) && (y / x <= 5)的值為 0?
• x 的值是 10, y 的值是 50 ‚ x 的值是 9.5, y 的值是 45 ƒ x 的值是 9.5, y 的值是-45 „ x 的值是 9, y 的值是 40
【3】29.對於下列 Java 程式碼的執行結果,何者正確?
int a = 60, b = 15, c = 30;
if (a <= 30) c = a;
if (b >= 30) c = b;
else c = a - b;
• c 的值變成 15 ‚ c 的值變成 30 ƒ c 的值變成 45 „ c 的值變成 60
【3】30.若我們想使用 Java 語言對兩個整數變數 a 和 b 進行位元互斥或(bitwise XOR)運算,最直接的方法是寫 a ^ b。下列何者在任何情況下都可以用來取代 a ^ b?
• (a | b) ‚ (~a | ~b) ƒ (~a ^ ~b) „ (~a & ~b)
【3】31.假設 rand()函數會回傳一個 0 到整數常數 RAND_MAX 之間的整數亂數,下列哪一個 C 語言運算式 可以產生隨機擲兩個公正骰子的點數和?
• (rand() % 12) + 1 ‚ (rand() % 6) * 2 + 1 ƒ ((rand() % 6) + 1) + ((rand() % 6) + 1)
„ (rand() / RAND_MAX * 6 + 1) + (rand() / RAND_MAX * 6 + 1)
【1】32.下列的 C++程式碼總共宣告了三個同名變數 x:
static int x = 1;
int main() {
int x = 2;
for (int i = 1, x = 3; i < 5; i++) { x *= i;
}
cout << x << endl;
return 0;
}
有關前述這段程式碼的敘述,何者正確?
•程式會印出 2 ‚程式會印出 72
ƒ無法編譯,因為第一個 x 和第二個 x 不能同時存在
„無法編譯,因為 for 迴圈內不能宣告新的區域變數
【3】33.有關 Java 程式碼的輸出字串,下列何者正確?
String a = "bodhisattva";
a = a.substring(5,7);
char b = a.charAt(1);
System.out.println(b+a);
• sis ‚ sisa ƒ asa „ asat
【3】34.下列哪個 Java 語言的基本型別,使用最多的記憶體空間?
• char ‚ float ƒ long „ int
【4】35.下列哪一個 C 語言的敘述可以把值二千三百萬存到整數變數 population?
• population = 23E7; ‚ population = 23E+7;
ƒ population = 0x23E+6; „ population = 2.3e7;
【2】36.在 C++語言中宣告字串類別變數 string twolines = "First\nSecond\n";則 twolines.length()會傳回什麼值?
• 2 ‚ 13 ƒ 14 „ 15
【2】37. C 語言沒有下列哪一種迴圈語法?
• for 迴圈 ‚ foreach 迴圈 ƒ while 迴圈 „ do while 迴圈
【3】38. Java 的抽象類別(abstract class)一定是:
•介面(interface) ‚沒有定義方法(method)的類別
ƒ至少有一個方法是抽象的類別 „所有方法都是抽象的類別
【3】39.下列何者不是物件導向程式設計的特性?
•封裝(Encapsulation) ‚多型(polymorphism) ƒ事件(event) „繼承(Interitance)
【3】40.有關 C 語言 break 指令之用法,下列敘述何者正確?
• break 和 continue 效果相同,可以互換 ‚ break 可以用於 switch 語法但不能用於迴圈之中 ƒ break 可以用於 switch 語法或迴圈之中 „ break 可以用於迴圈之中但不能用於 switch 語法
【4】41.用 Visual Basic 語言開啟檔案通常如下例所示:
Dim f As FileStream = New FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite) 有關 FileMode 提供的幾種模式,下列敘述何者錯誤?
• OpenOrCreate 會先嘗試開啟現有檔案,若檔案不存在則創造新檔案
‚ Append 做的事跟 OpenOrCreate 一樣,但是會把寫入點指到檔案結尾處 ƒ Truncate 會把既有檔案的內容清除
„ Open 會開啟檔案且不讓其他程序同時開啟
【1】42.在 Visual Basic 中,一個敘述太長需要拆成多行時該怎麼做?
•在敘述未完的行末加上底線字元 ‚在敘述未完的行末加上斜線字元
ƒ在敘述未完的行末加上字元& „不用特別做什麼,編譯器會自動判斷敘述在哪一行結束
【2】43.下列 Visual Basic 程式碼的空白處應該用什麼修飾字才能讓swap 子程序執行後可以把兩個參數的值互換?
Sub swap(___ x As Integer, ___ y As Integer) Dim temp As Integer
temp = x x = y y = temp End Sub
• ByVal ‚ ByRef ƒ Optional „ Overridable
【4】44.有關 C++的註解語法的說明,下列何者錯誤?
•可以使用//來加入單行註解 ‚提供開頭為/*而結尾為*/的註解
ƒ可以在//註解內部加入另一個//註解 „可以在/* … */註解內部加入另一個/* … */註解
【1】45.在 Visual Basic 語言中,End 關鍵字通常搭配其他關鍵字,用來表示一個區段的結束,如 End Function。
然而下列哪一個組合是不存在的?
• End Do ‚ End Module ƒ End Sub „ End If
【4】46. C++的 for 迴圈的判斷敘述包含三個部分,中間用分號隔開,例如 for (i = 0; i < 10; i++)。在使用時 這三個部分哪一個是絕對不能省略的?
•第 1 部分 ‚第 2 部分 ƒ第 3 部分 „沒有絕對不能省略的部分
【3】47.如果在 C++程式中,不小心把條件式 while (x == 1)寫成 while (x = 1)會發生什麼事?
•會發生編譯錯誤 ‚程式會當掉
ƒ一定會進入 while 迴圈,且判斷式永遠成立,也就是一定會進入無窮迴圈
„不會進入 while 迴圈,但是 x 的值會被改寫為 1
【1】48.右列 Java 敘述會輸出什麼字串? System.out.print(-2 + " " + 7 + 2 + " ");
• "-2 72 " ‚ "-2 9 " ƒ " 7 " „會出現編譯錯誤
【3】49.在 Java 語言中 Math.sqrt()方法可以計算一個數的平方根,請問下列程式碼編譯執行後會列印出什麼?
double ms = -25;
System.out.println( Math.sqrt(ms));
• 5 ‚ -5 ƒ NaN „ -Infinity
【4】50.有關 Java 程式碼的敘述,下列何者錯誤?
class cx {
private final static int height = 170;
}
• final 代表 height 是一個常數 ‚ private 代表只有 cx 類別內的方法可以取用 height ƒ static 代表 height 只有一個,給所有 cx 類別的變數共同使用
„ Java 提供的圓周率 Math.PI 也是同樣用 private final static 定義的