• 沒有找到結果。

細閱下列程序段: var a:array[0..12] of integer

N/A
N/A
Protected

Academic year: 2021

Share "細閱下列程序段: var a:array[0..12] of integer"

Copied!
1
0
0

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

全文

(1)

在下列各程序段中,所有未顯示變量宣告部份的變量均假設已適當地宣告。

1. 若程序已宣告 B 為一布林 (Boolean) 變量,下列語句運行的後果是甚麼?

B := not B;

A. 必定令 B 賦值為 FALSE B. 必定令 B 賦值為 TRUE C. 必定會改變 B 的賦值

D. 會產生運行錯誤 (Run-time error) E. 除非加上括號,否則無法編譯 (compile) 2. 細閱下列程序段:

var

a:array[0..12] of integer;

j:integer;

begin

a[0]:=5;

for j:=1 to 12 do a[j]:=a[j-1]+2;

writeln(a[12]);

end.

上列程序段的輸出是:

A. 27 B. 29 C. 60 D. 62 E. 65

3. 下列函數可返回一個整數 Int 的十位部份,設 Int >= 10。

function TensDigit(Int: integer):integer;

var TempInt : integer;

begin (*****)

end; (* TensDigit *)

要使這函數能正確運行,上列 '(*****)' 的一行應以下列哪一程序段取代?

A. TempInt := Int mod 100;

TensDigit := TempInt div 10 B. TempInt := Int mod 100;

TensDigit := TempInt * 10 C. TempInt := Int div 100;

TensDigit := TempInt div 10 D. TempInt := Int div 100;

TensDigit := TempInt mod 10 E. TempInt := Int mod 100;

TensDigit := TempInt mod 10

4. 設函數 random 可產生一個大於 0 但小於 1 的隨機數,下列哪一算式可產 生介乎 3 與 10 (包含 3 和 10) 的隨機整數?

A. trunc(random*3+10);

B. trunc(random*(-3)+10);

C. trunc(random*6+3);

D. trunc(random*7+3);

E. trunc(random*8+3);

(2)

5. Char2Int() 是一轉換函數,它可以接受輸入一個字符,並返回這字符所 對應的整數。例如 Char2Int('4') 可返回 4.

下列哪個函數無法作此轉換?

A. Function Char2Int(C:Char):Integer;

Begin

If C = '0' then Char2Int := 0 else if C = '1' then Char2Int := 1 else if C = '2' then Char2Int := 2 else if C = '3' then Char2Int := 3 else if C = '4' then Char2Int := 4 else if C = '5' then Char2Int := 5 else if C = '6' then Char2Int := 6 else if C = '7' then Char2Int := 7 else if C = '8' then Char2Int := 8 else if C = '9' then Char2Int := 9 end;

B. Function Char2Int(C:Char):Integer;

Begin

Case C of

'0' : Char2Int := 0;

'1' : Char2Int := 1;

'2' : Char2Int := 2;

'3' : Char2Int := 3;

'4' : Char2Int := 4;

'5' : Char2Int := 5;

'6' : Char2Int := 6;

'7' : Char2Int := 7;

'8' : Char2Int := 8;

'9' : Char2Int := 9;

end;

end;

C. Function Char2Int(C:Char):Integer;

Const

Convert : Array['0'..'9'] of Integer

= (0,1,2,3,4,5,6,7,8,9);

Begin

Char2Int := Convert[C];

end;

D. Function Char2Int(C:Char):Integer;

Begin

Char2Int := Byte(C) - Byte('0');

end;

E. 上列全部函數均可進行所需的轉換

6 細閱下列程序段:

var

a:array[1..3,1..4] of integer;

b:array[1..4,1..3] of integer;

x,y:integer;

begin

for x:=1 to 3 do for y:=1 to 4 do

a[x,y]:=x-y;

for x:=4 downto 1 do for y:=1 to 3 do

b[x,y]:=a[y,x];

writeln(b[3,2]);

end.

上列程序段的輸出是甚麼?

A. -1 B. -2 C. -3 D. -4 E. 0

7. 遞 歸 函 數 Power 以 遞 歸 (recursion) 的 方 式 計 算 x 的 n 次 方 。 例 如 Power(3, 4)是 81,而 Power(2, 3)則是 8。這函數的定義如下:

(3)

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

Begin

If n = 0 then Power := 1 Else

Power := x * ( ? ???) ; End; {Power}

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

A. Power(x , n-1 );

B. Power(x , n );

C. Power(x , n+1 );

D. Power(x-1 , n );

E. Power(x-1, n+1 );

8. 按照下列定義,CountUp(5)將會返回甚麼數值?

function CountUp (N :Integer) :Integer;

begin

if N = 0

then CountUp := 0

else CountUp := N + CountUp(N div 2) end; { CountUp }

A. 0 B. 5 C. 7 D. 8 E. 21

9. B 是一布林 (Boolean) 變量,下列語句運行後 B 的賦值為何?

B := B = B;

A. 保持不變

B. True C. False

D. 無法確定

E. 上列語句無法編譯 (compile)

10. 某函數可從十個不同的字母中不重覆地取出四個,並產生一種排列方式。若 要把所有從十個不同的字母中不重覆地取出四個的排列方式全部列出,須 調用此函數多少次?

A. 24 B. 210 C. 5040 D. 10000 E. 3628800

11. 一個文本屏幕有 25 列及 80 欄,屏幕的左上角以 (1,1) 表示,而右下角則以 (80, 25) 表示,屏幕上每一個字符佔用兩字節(byte),整個屏幕則以線性方式 存儲在電腦的存儲器內,由屏幕左上角開始,位移為 0,然後逐列逐列存儲。

求位於屏幕 (X,Y) 的第一個字節的位移是多少?

A. (Y * 80 + X) * 2 B. (Y * 80 + X) * 2 - 1 C. (Y * 80 + X - 1) * 2

D. ((Y - 1) * 80 + X) * 2 - 1 E. ((Y - 1) * 80 + X - 1) * 2

(4)

12. 下列程序段的用意是當而且僅當字符串變量 N 含有一個或多個 'X' 時,令 F 的賦值為 TRUE:

var N : string[20]; ………

begin

………

I := 1;

while (I <= 20) and (N[I] <> 'X') do I := I + 1;

if N[I] = 'X' then F := TRUE else F := FALSE;

下列哪個關於這程序段的敘述句是正確的?

A. 不論任何值的 N 均可正確地運行

B. 只有當 N 全部均由 'X' 組成時才可正確地運行 C. 不論任何值的 N 均會導致無限循環

D. 當 N 全部均由 'X' 組成時會產生錯誤 E. 當 N 並不含有 'X' 時會產生錯誤 13. 下列程序若輸入:

'The elite of Hong Kong are all here' 則程序的輸出是甚麼?

(注意: 引號並非輸入字符串的一部份) Program Test;

Var S : String;

Begin

Readln(S);

S := Copy(S,4,10);

Writeln(S);

end.

A. ' elite ' B. 'elite o' C. ' elite of ' D. 'elite of H'

E. 上列全部皆不是

14. 細閱下列程序:

program q;

var

k:integer;

a:array [1..20] of integer;

begin

for k:=1 to 20 do a[k]:=k*2+1;

for k:=2 to 20 do a[k]:=a[k-1]+a[k];

writeln(a[5]);

end.

上列程序的輸出是:

A. 11 B. 13 C. 20 D. 24 E. 35 15. 細閱下列程序段:

var

x:integer;

...

readln(x);

writeln(x-abs(x+abs(x)+8));

若上列程序段的輸出是 –90,則下列哪一個可能是輸入的數字?

A. 60 B. -42 C. -82 D. -90 E. -98

(5)

16. 細閱下列程序:

program Main(input);

var i:integer;

a,b:real;

begin

readln(a);

readln(b);

for i:=1 to 5 do a:=a*b; {**}

end.

上列程序在電腦中運行,每次當帶有{**}記號的語句剛運行完時,下列甚 麼數值會維持不變?

A. a  b B. a  (b5) C. a  (bi) D. a  (bi) E. bi

17. 細閱下列程序:

program XYZ;

var

a,x:integer;

procedure CAL;

begin

for x:=5 downto 1 do a:=a+x

end;

begin a:=0;

CAL;

writeln(2*a) end.

上列程序的輸出是甚麼?

A. 5 B. 10 C. 20 D. 30 E. 40 18. 細閱下列程序段:

type chain = record

x:integer;

y:integer end;

var

h:integer;

a:array [1..10] of chain;

begin

for h:=1 to 5 do begin a[2*h-1].x:=h;

a[2*h-1].y:=2*h;

end;

for h:= 1 to 5 do begin a[2*h].x:=2*a[h].y;

a[2*h].y:=2*a[h].x end;

writeln(a[10].x) end.

上列程序段的輸出是甚麼?

A. 9 B. 10 C. 11 D. 12 E. 13

(6)

19. 細閱下列程序:

program Main(output);

var x:integer;

procedure p1;

procedure p2;

var x:integer;

begin {p2}

x := 0;

p1 end; {p2}

begin {p1}

while x < 2 do bgin write(x);

x := x + 1;

p2 end;

write(x);

end; {p1}

begin {Main}

x := 0;

p1 end.

某版本的 Pascal 語言編譯器當處理非局部變量時,以最小圍繞塊所宣告者 為準。上列程序若以此 Pascal 語言編譯器進行編譯並運行,程序的輸出是甚 麼?

A. 0122 B. 01222

C. 無法編譯,因為程序使用了一個未經宣告的變量

D. 輸出無法確定,因為程序使用了一個未經初始化的變量

E. 程序產生無窮的輸出,因為程序有無窮次遞歸

20 21 題請參閱下列程序作答 : program Main(output);

var sum,j,i:real;

begin

sum := 0.0;

j := 1.0;

i := 2.0;

while (i/j > 0.001) do begin

j := j + j;

sum := sum + i / j;

writeln(sum);

end;

end.

20. 上列程序共輸出約多少行?

A. 0-9 B. 10-19 C. 20-29 D. 30-39 E. 大於 39

21. 下列哪個整數的數值與上列程序最後一個印出的數字最接近?

A. 0 B. 1 C. 2 D. 3 E. 4

(7)

22 23 題請參閱下列程序作答 : program Main(output);

var

ctr:integer;

i,j,temp:integer;

a:array[1..6] of integer;

begin

ctr := 0;

for i:=1 to 6 do a[i] := 7-i;

for i:=1 to 5 do for j:=1 to 5 do

if a[j] > a[j+1] then begin temp := a[j];

a[j] := a[j+1]; {**1**}

a[j+1] := temp; {**2**}

inc(ctr) end;

writeln(ctr) end.

22. 上列程序的輸出是甚麼?

A. 0 B. 5 C. 10 D. 15 E. 25

23. 若把有{**1**}記號的一行與有{**2**}記號的一行互換,當程序運行至 結束時陣列 a 內共有多少個不同的數值?

A. 1 B. 2 C. 3 D. 5 E. 6

24. 下列哪一函數可把它的兩個參數互換?

A. Procedure Swap(Var A,B:Integer);

Begin A := B;

B := A;

end;

B. Procedure Swap(Var A,B:Integer);

Begin

A := A + B;

B := A - B;

A := A - B;

end;

C. Procedure Swap(Var A:Integer;B:Integer);

Var Temp : Integer;

Begin

Temp := A;

A := B;

B := Temp;

end;

D. Procedure Swap(A,B:Integer);

var Temp : Integer;

Begin

Temp := B;

B := A;

A := Temp;

end;

E. Procedure Swap(A,B:Integer);

Begin

A := A + B;

B := A - B;

A := A + B;

end;

(8)

2 5 - 27 題請參閱下列資料 :

設函數 Char2Int()能接受一個字符作為參數,並返回其對應的整數。例如 Char2Int('4') 可返回整數 4.

Function Evaluate(S:String):Integer;

Var

Stk : Array[1..10] of Integer;

Top, Count : Integer;

Begin

Top := 0;

For Count := 1 to Length(S) do begin Case S[Count] of

'-' : Stk[Top-1] := Stk[Top-1] - Stk[Top];

'*' : Stk[Top-1] := Stk[Top-1] * Stk[Top];

'/' : Stk[Top-1] := Stk[Top-1] div Stk[Top];

else Begin

Top := Top + 2;

Stk[Top-1] := Char2Int(S[Count]);

end;

end;

Top := Top - 1;

end;

Evaluate := Stk[1];

end;

25. 下列程序段若放在主程序中運行,其輸出是甚麼?

writeln(evaluate('49'));

A. 4 B. 9 C. 49 D. -5 E. 36

26. 下列程序段若放在主程序中運行,其輸出是甚麼?

writeln(evaluate('23*4'));

A. 2 B. 6 C. 23 D. 92

E. 上列全部皆不是

27. 要計算 (7 * 5 - 6 / 3 * 2) 的結果,其中各運算符號須按一般算術運算的次序 處理,問應把下列哪一字符串給予函數 evaluate?

A. '7*5-6/3*2' B. '-*75*/632' C. '236/*57*-' D. '75*63/2*-' E. '75*632*/-'

28. 若已宣告 B 為一布林 (Boolean) 變量,下列哪一/哪些語句可使 B 的賦值為真?

i) B := Boolean(-1);

ii) B := Boolean(0);

iii) B := Boolean(1);

iv) B := Boolean(2);

A. 只有 (ii) B. 只有 (iii) C. 只有 (i) 和 (iii) D. 只有 (i), (iii) 和 (iv)

E. 上列語句無法編譯

(9)

29. 細閱下列函數:

Function Func1(A,B:Integer):LongInt;

Var

C : Integer;

Begin C := 0;

While B > 0 do begin

If Odd(B) then C := C + A;

A := A * 2;

B := B div 2;

end;

Func1 := C;

end;

下列哪一數值與上列函數所返回的結果相同?

A. A  B B. AB

C. A 和 B 的 H.C.F.

D. A 和 B 的 L.C.M.

E. 上列全部皆不是

30. 數學上『圖』(graph) 是指多個『頂點』(vertex) 和多個『棱』(edge) 的集合,例 如下圖中的各點就是『頂點』,而連接各點的線就是『棱』,整個圖形就是一 個『圖』。

若兩頂點有一共同的棱,或各自與另外兩個『連接』的頂點分別有共同的棱,

則這兩頂點定義為『連接』;若一個圖的每一對頂點都連接,則這是一個『連 接』的圖。

要使一個有 100 頂點的圖成為連接的圖,最少需多少條棱?

A. 99 B. 100 C. 4950

D. 上列皆不是

E. 無法確定

31. 下列過程中,若輸入是

'3rd Hong Kong Olympiad in Informatics' 屏幕上的輸出是甚麼?

(注意: 引號並非輸入字符串的一部份) Procedure Transform;

Var

C : Char;

Begin

Read(C);

If not EOLN then Transform;

Write(C);

end;

A. 3rd Hong Kong Olympiad in Informatics B. scitamrofnI ni daipmylO gnoK gnoH dr3 C. 3333333333333333333333333333333333333 D. sssssssssssssssssssssssssssssssssssss

E. 上列全部皆不是

(10)

32. 設函數 Push (在頂端插入一個單元) 及 Pop (從頂端移除一個單元) 已定義,

則以下所實現的是哪一種抽像數據類型 (abstract data type)?

Type

MyADT = Record

A : Array[1..10] of Char;

Top : Integer;

end;

Procedure MyPush(Var X:MyADT; C:Char);

Begin

Push(X,C);

end;

Function MyPop(Var X:MyADT):Char;

Var

Temp : MyADT;

Begin

While (X.Top > 0) do Push(Temp,Pop(X));

MyPop := Pop(Temp);

While (Temp.Top > 0) do Push(X,Pop(Temp));

end;

A. 陣列 (array) B. 記錄 (record) C. 目標 (object) D. 堆棧 (stack) E. 隊列 (queue)

33. 下列程序段有些甚麼錯誤?

Type

PRec = ^TRec;

TRec = Record

Data : Integer;

Next : PRec end;

A. 標識符 TRec 未經宣告便已使用 B. 第 5 行末端欠缺一個分號 C. 不應用等號(=),應改用冒號(:) D. ^TRec 應改為 TRec

E. 上列程序段並沒有錯誤

34. 下列哪一/哪些語句在編譯時不會出現錯誤?

i) Var A : Array['0'..'9'] of Integer;

ii) Var A : Array['1'..'0'] of Integer;

iii) Var A : Array[False..True] of Integer;

iv) Var A : Array[True..False] of Boolean;

A. 只有 (i) 和 (iii) B. 只有 (i) 和 (iv) C. 只有 (ii) 和 (iv)

D. 上列全部皆不是

E. 上列全部皆是

(11)

35. 若 A 和 B 均為布林 (Boolean) 變量,下列哪一對表達式可產生相同的結果?

A. A or B A xor B B. A <> B

A xor B C. not A or B

A xor B D. A or B

(not A) and (not B)

E. 上列全部皆不是

36. 下列程序的輸出是甚麼?

Program Test;

Var

A : Array[1..3] of Integer;

Procedure Sub(A:Array[1..3] of Integer);

Var

I : Integer;

Begin

For I := 1 to 3 do Write(A[I],' ');

end;

Begin Sub(A);

end.

A. 0 0 0 B. -1 -1 -1

C. 無法確定

D. 編譯錯誤 (Compile-time error) E. 運行錯誤 (Run-time error)

37. 下列哪一/哪些編碼在編譯時不會出現錯誤?

i) Var

MyRec : Record Case X:Byte of

0: (P:Char);

1: (Q:LongInt);

end;

ii) Var

MyRec : Record Case X:Byte of

0: (P:Char);

1: (Q:LongInt);

end;

end;

iii) Var

MyRec : Record Case Byte of

0: (P:Char);

1: (Q:LongInt);

end;

iv) Var

MyRec : Record Case Byte of

0: (P:Char);

1: (Q:LongInt);

end;

end;

A. 只有 (i) B. 只有 (ii) C. 只有 (i) 和 (iii) D. 只有 (ii) 和 (iv)

E. 上列全部皆不是

(12)

38- 40 題請參閱下列描述 :

某國家有 N 個城市及連接每一對城市間的道路,小明從任一城市 K (1<=K<=N) 出 發到城市 N 旅遊,他可途經其他城市,但這些城市的編號只能增加,不能減少。

從城市 i 到城市 j 的費用儲於 C[i,j]之中,已知:

C[i,i]=0 其中 1<=i<=N C[i,j]>0 其中 i<j

當 N = 4 時,C[i,j]的數值可以下表表示:

i

1 2 3 4

j

1 0 -- -- -- 2 3 0 -- -- 3 7 2 0 -- 4 10 6 1 0

38. 參閱上列 N=4 的情況,若小明由城市 2 出發,下列哪一/哪些旅遊費用是正 確的?

(i) 2 (ii) 3 (iii) 6 A. 只有 (i) B. 只有 (ii) C. 只有 (iii) D. 只有 (i) 和 (ii) E. 只有 (ii) 和 (iii)

39. 參閱上列 N=4 的情況,若小明由城市 1 出發,他的旅遊費用最多是多少?

A. 8 B. 9 C. 10 D. 18 E. 19

40. 函數 Ans 可用以處理小明的旅遊費用:

Function Ans(K:Integer):Integer;

Var

A : Array[1..N] of Integer;

I, J : Integer;

Begin

For I := K to N do A[I] := C[I,N];

For I := N downto K do For J := N downto I do

If C[I,J] + C[J,N] < A[I] then A[I] := C[I,J] + C[J,N];

Ans := A[K];

end;

下列哪一敘述句最能準確描述上列函數的用途?

A. 找出從城市 K 到城市 N 的最低旅遊費用 B. 找出從城市 K 到城市 N 的最高旅遊費用

C. 找出從城市 K 到城市 N 的任何一條路徑的旅遊費用 D. 找出從城市 K 到城市 N 的所有路徑的總旅遊費用

E. 上列全部皆不是

-- 全 卷 完 --

參考文獻

相關文件

在上圖中,最上層的物件是 Root,代表電腦的桌面(Desktop),而 每個桌面可以有多個 MATLAB 圖形視窗(Figures),所以我們通常 定義 Figure 是 Root 的孩子(Child),而 Root

 From a source vertex, systematically follow the edges of a graph to visit all reachable vertices of the graph.  Useful to discover the structure of

VARIABLE LABELS PrimaryFirst '將所有第一個相符觀察值標為主要的 指標' MatchSequence '相符觀察值的循序個數'.. VALUE LABELS PrimaryFirst 0 '重複觀察值'

目前數學家所採用的集合論稱為 ZFC 集合論, 這是基於 Zermelo 和 Fraenkel 在 20 世紀初發展出來的 ZF 集合論, 再加上 C 所代表「選擇公設」(axiom of

同一個常數 C ,只適用在 ( 0) 或者 (0, ) 上。.

We will prove the facts by mathematical induction.. 定位控制集(Locating Dominating Set, LD

定義 7.4-1 內接與外切.

整數數量乘以分數, 理解為將整數(例如: 9個) 數量按分母(例如: 3)均分, 並按分子(例如: 1) 取多少份,