• 沒有找到結果。

下列題目中所有程序均假設以

N/A
N/A
Protected

Academic year: 2021

Share "下列題目中所有程序均假設以"

Copied!
12
0
0

加載中.... (立即查看全文)

全文

(1)

下列題目中所有程序均假設以 Turbo Pascal 7.0 編譯;程序中任何 未有顯示宣告部份之變量,均假設已經適當地宣告。

1. 下列哪一個算式,當 p 及 q 不論是任何布爾值時,算式的值 均為 false?

A. not(p and (not p or q)) or q

B. (not q and (not p or q)) or not p

C. (p and q or not p) or (p or not (p or q))

D. not((p or q) and not p) or q 2. 下列哪一程序語句無法印出字符 'M'?

A. write(chr(77));

B. write(char(77));

C. write('m'-'a'+'A');

D. 上列皆不是

3. 設 Power 是一個遞歸函數(recursive function),以遞歸的方 法計算 x 的 n 次方。如 Power(3.0,4)的值是 81.00,而 Power(2.0,3)的值是 8.00。函數 Power 可以下列程序段去 實現:

function Power(x:real; n:integer) : real;

begin

if n = 0 then Power := 1 else

Power := x * (?) ; end; {end of function Power}

上列函數中缺去的部份(?)應填上甚麼?

A. Power(x, n);

B. Power(x, n+1);

C. Power(x-1, n);

D. Power(x, n-1);

4. 若 n 的值為 5,下列函數返回的值是多少?

function F(n : integer) : integer;

begin

if n = 0 then F := 1

else

F := n + F(n - 1);

end;

A. 16 B. 15 C. 5 D. 21

5. 若 n 的值為 10,下列函數返回的值是多少?

function F(n : integer):integer;

begin

if n < 2 then F := 0 else

F := 1 + F(n div 2);

end;

A. 5 B. 4C. 3

(2)

D. 2

6. 細閱下列程序段:

if a > 5 then

if a > 8 then write('Distinction') else write('Pass');

if a > 6 then write('Credit');

當 a=7 及 a=4 時,上列程序段的輸出分別為:

a=7 a=4 A. PassCredit 沒有輸出 B. Credit Pass

C. 沒有輸出 沒有輸出

D. Credit 沒有輸出

7. 下列為一個遊戲棋盤:

1 2 3 4 5

五個數字方塊及一個空白方塊可隨意放在棋盤上而產生不同 的排列方式,這些方塊放在遊戲棋盤上共可產生多少種不同 的排列方式?

A. 5! – 1 B. 5!

C. 6!

D. 6! – 1

8. 以下列函數計算 G(5)的數值是多少?

function G(n : integer) : integer;

begin

if n = 0 then G := 1 else

G := n * G(n-1);

end;

A. 1 B. 120 C. 25 D. 5

9. 下列各字符串若以 Pascal 程序按降序排序,結果的排列次序 為何?'IOI', 'NOI', 'SEARCC', 'SCY',

'SCYENDED'

A. 'SEARCC' > 'SCYENDED' > 'SCY' > 'NOI' >

'IOI'

B. 'SEARCC' > 'SCY' > 'SCYENDED' > 'NOI' >

'IOI'

C. 'IOI' > 'NOI' > 'SCYENDED' > 'SCY' >

'SEARCC'

D. 'IOI' > 'NOI' > 'SCY' > 'SCYENDED' >

'SEARCC'

10. 下列程序段的輸出為何?

for i := 1 to 5 do if i > 3 then

for j := 5 downto 1 do if j > 3 then

write(i);

A. 4455 B. 334455 C. 5454 D. 5544 11.

(3)

1 6 7 5 2

4 2 9 5 6

5 5 3 4 8

9 2 8 4 1

由上圖左上角沿一條路徑至右下角,路徑每次前進均只能向 右或向下,路徑所經數字的和最大是多少?

A. 35 B. 43 C. 46 D. 47 12.

從 S 往 T 共有多少條可能的路徑?

A. 8 B. 9 C. 10 D. 11

細閱下列說明,然後解答第 13-17 題:

二叉樹結構可以有三種不同的表達方式,以上圖的二叉樹為例:

中綴式(infix): ABCDMPZ 前綴式(prefix): DBACPMZ 後綴式(postfix): ACBMZPD 13. 以下是另一個二叉樹結構:

這樹若以中綴式及前綴式表示,分別為:

A. DCZXA, CDXZA B. CDAXZ, ACDXZ C. CDXZA, DZCXA D. ACXDZ, DZCXA

14. 如今要寫一個遞歸過程,把以後綴式表示的二叉樹結構寫出 來,下列哪一個程序段正確?

S T

(4)

procedure postfix(subtree : TreePointer);

begin ...

end;

A. if subtree <> null then begin

write(subtree^.root);

postfix(subtree^.left);

postfix(subtree^.right);

end;

B. if subtree <> null then begin

postfix(subtree^.left);

write(subtree^.root);

postfix(subtree^.right);

end;

C. while subtree^.left <> null do postfix(subtree^.left);

write(subtree^.root);

while subtree^.right <> null do postfix(subtree^.right);

D. if subtree <> null then begin

postfix(subtree^.left);

postfix(subtree^.right);

write(subtree^.root);

end;

15. 以下是一個二叉樹結構的中綴式及前綴式表示方式:

中綴式: ABCDEFGHI 前綴式: DBACGFEHI 則此二叉樹的後綴式表示方式為:

A. ACBEGFIHD B. ACEIFHBGD C. ABCEFIHGD D. ACBEFIHGD 題 16-17:

下列過程試圖按題 15 的要求提出解答:

procedure postfix(pre, mid : string;

var sub : string);

var

p: integer;

temp, sub1, sub2: string;

begin

temp := pre[1];

sub := '';

p := pos(temp, mid);

if p = 1 then sub1 := '' else (1) ;

if p = length(mid) then sub2 := ''

else

postfix(copy(pre, p+1, length(pre)-p), copy(mid, p+1, length(mid)-p), sub2);

(2) ; end;

(5)

16. 上列程序段中,(1)應填上甚麼?

A. postfix(pre, mid, sub1)

B. postfix(copy(pre, 1, p-1), copy(mid, 2, p), sub1)

C. postfix(copy(pre, 2, p-1), copy(mid, 1, p-1), sub1)

D. postfix(copy(pre, 2, p), copy(mid, 1, p), sub1)

17. 上列程序段中,(2)應填上甚麼?

A. sub := sub1 + sub2 + temp B. sub := temp + sub1 + sub2 C. sub := sub2 + sub1 + temp

D. sub := sub1[1] + sub2[1] + temp

18. 細閱下列程序段。若 i、j、k、n、answer 均已宣告為整數變 量,而 n 則已初始化為一正整數。

answer := 0;

for i:=2 to n do for j:=2 to n do

if (i > j) and (i mod j = 0) then answer := answer + 1;

answer := (n*(n - 1)) div 2 - answer;

上列程序段運行後,變量 answer 所儲的數值是:

A. 2 與 n 之間(包含 2 及 n)的質數數目

B. 數字對(i,j)的數目,其中 1<j<i<=n 且 i 是 j 的倍 數

C. 數字對(i,j)的數目,其中 1<j<i<=n 且 i 不是 j 的 倍數

D. 數字對(i,j)的數目,其中 1<=j<i<=n 且 i 不是 j 的 倍數

19. 某國家有多個城市,且有多條不同票價的巴士路線,從一個 城市直接到另一個城市。CityA 及 CityB 是該國的兩個城市 在該國的任何一個城市,均最少有一條路徑(乘搭一部或多 部巴士)由 CityA 到達此城市,且這城市亦最少有一條路徑 (乘搭一部或多部巴士)通往 CityB。若已知所有直接連接任 何城市間的巴士路線及票價,下列哪一(哪些)算法可找出由 CityA 至 CityB 的最廉宜票價?

A. 賦值 D = CityA 賦值 P = 0

當 D 並非 CityB,運行 由 D 的每一條巴士路線

選取票價最小者

把 P 賦值為 P + 此巴士路線的票價 把 D 賦值為此巴士路線的終點城市 輸出 P

B. 賦值集 S = {CityA}

賦值 CityA = 0 當 S 並非空集,運行

從 S 中找出一個數值最少的元素 D 從 S 中移走 D

從 D 開出的每一條巴士路線,運行 把此路線的終點城市加到 S 中 賦值此終點城市 = D 的數值

+ 此巴士路線的票價 輸出 CityB 的數值

C. A 與 B 都是 D. 上列皆不是

20. 有八個城市,代號分別為 0 至 7。城市代號可以二進制數字 表示,當而且僅當兩個二進制代號之間只有一個二進制位的 數字不同時,兩城市間有公路連接,並在下表以‘1’表示。

(6)

若參觀這些城市時必須沿著代號增加的方向(例如參觀完城 市 3 之後,雖然城市 3 與城市 2 之間有公路連接,但仍不可 回頭參觀城市 2),從城市 0 至城市 7 共有多少條參觀路徑?

To

From 0 1 2 3 4 5 6 7 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 0 1 0 3 0 0 0 0 0 0 0 1 4 0 0 0 0 0 1 1 0 5 0 0 0 0 0 0 0 1 6 0 0 0 0 0 0 0 1 7 0 0 0 0 0 0 0 0 A. 4

B. 6 C. 8 D. 12

21. 有兩種硬幣,分別為四元及七元,問有多少種不同的正整數 幣值無法以這些硬幣作任何組合去繳付?

A. 9 B. 10 C. 11 D. 8

細閱下列描述,然後解答題 22 至 25:

有九件工作 (J1, J2, J3, J4, J5, J6, J7, J8, J9) 分配給有三個處理器的系 統去完成,這三個處理器分別命名為 P1、P2 及 P3,工作分配時

須遵從下列限制:

(a) 任何一件工作均只可分配給三個處理器的其中一個 (b) J8 及 J9 必須分配給同一處理器

(c) J7 及 J9 不可分配給同一處理器

(d) J5 必須由處理 J6 或 J4 的處理器去處理 (e) 每一處理器必須處理最少兩件工作 22. 下列哪一工作分配方案是有效的?

A. P1: J1, J2, J8, J9 P2: J5, J6 P3: J3, J4

B. P1: J1, J2, J7, J8 P2: J3, J4, J5, J9 P3: J6

C. P1: J1, J2, J3, J7 P2: J8, J9 P3: J4, J5, J6

D. P1: J1, J2, J3 P2: J7, J8, J9 P3: J4, J5, J6

23. 若 J1、J2、J3、J4 及 J5 均分配予 P1,則下列哪一情況必定出現?

A. 無法產生任何有效分配方案 B. J8 及 J9 必須分配予 P2.

C. J6 及 J8 將分配予不同的處理器 D. J6 及 J7 將分配予不同的處理器

(7)

24. 若 J1、 J2、 J3 及 J4 均分配予 P1,而 J6 則分配予 P2,要產生 一個有效的分配方案,下列哪一項必定正確?

A. J5 將分配予 P2.

B. J7 將分配予 P2.

C. 剛好有兩件工作分配予 P2.

D. J8 將分配予 P3.

25. 設再有另一個限制:若 J5 與 J6 分配給同一個處理器,則 J5

與 J8 也要分配給同一處理器。若 J1、J2、J3 及 J6 已分配給 P1,

下列哪些工作可分配給同一個處理器?

A. J1 與 J4

B. J5 與 J8

C. J6 與 J7

D. 上列皆不是

細閱下列說明,然後解答題 26-29:

參賽者 C 參加了一項國際軟件比賽,賽事為時三小時,共有四道 題目,每一道題目的分數相同,都是 100 分。當 C 花了 10 分鐘閱 讀題目後,他作出了下列的估計:

(i) 花 30 分鐘去做題一,將可獲得 50 分,每多花 10 分鐘將可 多獲 5 分,直至滿分 100 分為止。例如若 C 花 70 分鐘去做題 一,他將可獲得 70 分。(注意:花 29 分鐘將會只獲得 0 分,

而花 69 分鐘將會只獲得 65 分)

(ii) 花 20 分鐘去做題二,將可獲得 10 分,每多花 15 分鐘,C 將 會多獲 10 分,直至滿分 100 分為止。

(iii) 花 30 分鐘去做題三,將可獲得 5 分,每多花 5 分鐘,C 將會

多獲 5 分,直至滿分 100 分為止。

(iv) 花 30 分鐘去做題四,將可獲得 90 分,每多花 10 分鐘,C 將 會多獲 5 分,直至滿分 100 分為止。

假設 C 的估計正確,則若 C 花 50 分鐘在題一、30 分鐘在題二、30 分鐘在題三、60 分鐘在題四,則 C 將會共獲得 60 + 10 + 5 + 100 = 175 分。

C 決定寫一個程序去協助他分配花在每一題的時間,以便獲取最 多的分數。

以下函數意圖計算當花 t1 分鐘在題一時,所得到的分數:

function score1(t1 : integer) : integer;

var answer : integer;

begin

L1: answer := 0;

L2: if t1 > 0 then begin

answer : = ((t1 - 30) div 10) * 5;

L3: if t1 >= 30 then answer:=answer + 50;

L4: if answer > 100 then answer :=100;

end;

score1 := answer;

end;

(8)

26. 但函數 score1 發生錯誤,下列哪一個 t1 的數值會令函數 返回一個錯誤的答案?

A. 170 B. 30 C. 22 D. 9

27. 要糾正該錯誤,下列哪一行需要作出修改?

A. L1 B. L2 C. L3 D. L4

28. C 終 於 完 成 了 四 個 函 數 :

score1(t1:integer)、score2(t2:integer)、score 3(t3:integer)及 score4(t4:integer),這些函數都 可以分別正確地返回題一至四所獲得的分數。

細閱下列程序段,其中 n 是當 C 完成此程序後所餘下的分鐘 數目(即 C 真正用於解答各比賽題目的時間)。

max := -1;

for t1 := 1 to n do for t2:=1 to n do for t3:=1 to n do for t4:=1 to n do

if t1 + t2 + t3 + t4 <= n then if score1(t1) + score2(t2)

+ score3(t3) + score4(t4) > max then

max := score1(t1) + score2(t2) + score3(t3) + score4(t4);

writeln('The max mark is', max);

可是,輸出的 max 並非真正的最佳數值!下列哪一項是這 問題的最佳解釋?

A. max 應初始化為 0 而非-1

B. 相對應的 t1、t2、t3 及 t4 的和比 n 為小

C. 最佳的時間分配方案花 0 分鐘在其中一道或多道題目上 D. 變量 t1、t2、t3、t4 既用在此程序段,也用在各函數

scoren 中

29. 不幸地,C 花了 50 分鐘仍無法正確地寫完其「最佳分數」程 序,他決定放棄。現在他只餘下 120 分鐘,他應如何分配以 便獲得最多的分數?

題 1 題 2 題 3 題 4

A. 30 分鐘 30 分鐘 30 分鐘 30 分鐘 B. 40 分鐘 20 分鐘 0 分鐘 60 分鐘 C. 70 分鐘 0 分鐘 0 分鐘 50 分鐘 D. 30 分鐘 50 分鐘 0 分鐘 40 分鐘 30. 下列哪一(些)有關遞歸過程的描述是必定正確的?

(i) 有一個參數是以參考方式傳遞(pass by reference) (ii) 有一個局部變量

(iii) 若它調用另一個過程,此過程必須為非遞歸的 A. 上列三語句皆否

B. 只有 (i) C. 只有 (i) 與 (ii) D. 上列三語句均是 31. 細閱下列程序段:

var k : integer;

function myst(j : integer) : integer;

begin

j := j + k;

myst := j;

(9)

end;

function strange(var i : integer) : integer;

begin

i := i + 1;

strange := myst(i);

end;

begin k:=3;

writeln(strange(k), k);

end;

輸出為何?

A. 73 B. 74 C. 83 D. 84

32. 細閱下列程序段:

var x, y :integer;

function F(n : integer) : integer;

begin

x := x + 1;

if (n = 0) or (n = 1) then F := 1 else F := F(n - 1) + F(n - 2);

end;

begin

x := 0;

y := F(10);

writeln(x);

end.

上列程序段的輸出為何?

A. 89

B. 117 C. 1023 D. 1024

33. 細閱下列程序段:

var a, b, x : integer;

begin

readln(a, b);

x := 0;

while b <> 0 do begin

x := x + a * (b mod 2);

a := a * 2;

b := b div 2;

end;

writeln(x);

end.

下列哪一(些)語句正確?

(i) 若 a 是偶數則 x 也是偶數 (ii) 若 b 是奇數則 x 也是奇數

(iii) 若 b 負數則 x 與 a 的正負號相同 A. 只有 (i)

B. 只有 (i) 及 (ii) C. 共有 (i) 及 (iii) D. (i)、(ii) 及 (iii) 34. 細閱下列程序段:

var

i, j, n : integer;

x, y : boolean;

begin

x := false; y := false; n := 0;

for i := 1 to 20 do for j := i+1 to 20 do

(10)

begin

if i mod 3 = 0 then x := true;

if j mod 5 = 0 then y := true;

if x and y then n := n + 1;

end;

writeln(n);

end.

上列程序段的輸出為何?

A. 6 B. 14 C. 152 D. 324

35. 細閱下列程序段:

var a, b, c, p, q, r : boolean;

begin

{...}

p := a and b;

q := a or c;

r := (p or q) and (b and not a);

{...}

end;

若上列程序段運行後,r 的值為 TRUE,則 a、b、c 的值分別 為何?

A. a=FALSE, b=TRUE, c=FALSE B. a=FALSE, b=TRUE, c=TRUE C. a=TRUE, b=FALSE, c=TRUE D. a=TRUE, b=TRUE, c=TRUE

36. 若有 10 個不同的數字 5, 10, 2, 9, 1, 7, 3, 6, 4, 8 存儲在陣列 A[1..10] 中,細閱下列程序段:

for i := 1 to 10 do

for j := i + 1 to 10 do if A[i] > A[j] then compare(A[i],A[j]);

過程 compare 共運行多少次?

A. 20 B. 23 C. 25 D. 45

37. 細閱下列程序段:

var a, b, c : integer;

begin

a := 32000;

b := 1000;

c := a+b;

writeln(c);

end.

上列程序段的輸出為何?

A. 466 B. 33000 C. –30766 D. –32302

38. 細閱下列程序段:

var

a : array[1..10,1..10] of integer;

i, j : integer;

begin

for i:=1 to 10 do

for j:=1 to 10 do a[i,j]:=i+j;

for i:=1 to 10 do

for j:=1 to 10 do a[i,j]:=a[j,i]

+j;

(11)

writeln(a[10,9]);

end.

上列程序段的輸出為何?

A. 29 B. 30 C. 36 D. 38

39. 細閱下列程序段,其中 swap(a,b)是一個過程,可以把字 符 a 與 b 互換:

var

s : string;

i, j, n : integer;

begin

readln(s);

n := length (s);

for i :=1 to n - 1 do for j:=1 to n - i do

if s[j] > s[j+1] then swap(s[j], s[j+1]);

end;

下列哪一組輸入須調用 swap( )次數最多?

A. 1234567 B. 1325476 C. 4321 D. 43125

40. 下列程序段可實現一個堆疊,假設不用報告上溢或下溢錯誤:

var

s : array[0..30000] of integer;

n : integer;

procedure push(i : integer);

begin

inc(n);

s[n] := i;

end;

function pop() : integer;

begin

pop := s[n];

dec(n);

end;

A. 過程 push 是錯的 B. 函數 pop 是錯的

C. 過程 push 及函數 pop 都是錯的 D. 過程 push 及函數 pop 都正確

(12)

題 41-45:

下列程序用以讀入連接六個城市間各道路的長度,然後找出任何 兩城市間的最短路徑。程序中欠缺部份語句。

program BFS;

const max = maxint;

var

i, j : integer;

queue : array [1..1000] of integer;

n : integer;

map : array [1..10, 1..10] of integer;

fp : {欠缺語句 1};

start, finish : integer;

city : array[1..10] of integer;

head, tail : integer;

current : integer;

begin

assign(fp, 'input.txt');

reset(fp);

readln(fp, n);

for i := 1 to n do begin for j := 1 to n do

read(fp, map[i, {欠缺語句 2}]);

readln(fp);

city[i] := {欠缺語句 3};

end;

readln(fp, start, finish);

city[start] := 0;

queue[1] := start;

head := 1;

tail := 2;

while tail > head do begin

current := queue[{欠缺語句 4}];

head := head + 1;

for i := 1 to n do

if (map[current, i] > 0) and (city[current] +

map[current, i] < city[i]) then

city[i] := city[current]

+ map[current, i];

end;

writeln('The shortest path from ', start, ' to ', finish, ' = ',

{欠缺語句 5});

close(fp);

end.

41. 取代{欠缺語句 1}的最佳選擇是:

A. text B. integer C. char D. byte

42. 取代{欠缺語句 2}的最佳選擇是:

A. i B. j C. n D. k

(13)

43. 取代{欠缺語句 3}的最佳選擇是:

A. 0 B. -1 C. i D. max

44. 取代{欠缺語句 4}的最佳選擇是:

A. head B. tail C. i D. j

45. 取代{欠缺語句 5}的最佳選擇是:

A. start B. finish

C. city[start]

D. city[finish]

美國信息交換標準代碼(ASCII)編碼表

(空白) 32 @ 64 ` 96

! 33 A 65 a 97

" 34 B 66 b 98

# 35 C 67 c 99

$ 36 D 68 d 100

% 37 E 69 e 101

& 38 F 70 f 102

' 39 G 71 g 103

( 40 H 72 h 104

) 41 I 73 i 105

* 42 J 74 j 106

+ 43 K 75 k 107

, 44 L 76 l 108

- 45 M 77 m 109

. 46 N 78 n 110

/ 47 O 79 o 111

0 48 P 80 p 112

1 49 Q 81 q 113

2 50 R 82 r 114

3 51 S 83 s 115

4 52 T 84 t 116

5 53 U 85 u 117

6 54 V 86 v 118

7 55 W 87 w 119

8 56 X 88 x 120

9 57 Y 89 y 121

: 58 Z 90 z 122

; 59 [ 91 { 123

< 60 \ 92 | 124

= 61 ] 93 } 125

> 62 ^ 94 ~ 126

? 63 _ 95

參考文獻

相關文件

1、曾擔任以國家、重要城市為名,至少以二個版面以上刊登國際 新聞,且發行對象以全國或全球讀者為目標之平面媒體或通訊 社(例如:《美國新聞與世界報導》(U.S. News

博物館是一座城市歷史與文化的縮影,也是認識一座

主帳冊 4C 4C 中只要有 中只要有 中只要有 中只要有 中只要有 中只要有 中只要有 中只要有任一個 任一個 任一個 任一個 任一個 C 任一個 任一個 任一個 C 不同 不同 不同 不同 不同 不同

請嘗試 ping 其他城市的任何主機。這個動作應該是無法 達成,而會顯示 Destination Host Unreachable 或 Request Timed Out。不過,您應該能夠

依據瑞士洛桑管理發展學院(IMD)公布之「2019 智慧城市 指數報告」 (IMD Smart City Index 2019),維也納在 102 個 城市排名第 17

路旁上落客貨活動頻繁,經常有車輛駛經並需要在路旁短暫停留。就以九龍 上海街為例,該路段共有 7 個巴士站,有 11 條巴士線,每日有 690

此計劃主要包含一個以「智慧城市」為主題的專題研習展覽,再附以一系列的活動,其中包

城門棱堡位於城門及金山郊野公園 的孖指徑山坡上的戰地遺跡徑,短 短路程便能見到約 1937-1938 年間建