2018年4月12日 星期四

計概15-07副程式與函數-統測試題

【四技試題】

C01.下列哪一個Visual Basic的運算式執行後,可以獲得"51"的結果? (A)Left("20110501", 6) + "" + Left("20110501", 8) + "" (B)Mid("20110501", 1, 6) + "" + Mid("20110501", 1, 8) + "" (C)Mid("20110501", 6, 1) + "" + Mid("20110501", 8, 1) + "" (D)Right("20110501", 3) + "" + Right("20110501", 1) + ""[100商業]

Left("20110501", 6) + "" + Left("20110501", 8) + "" = "20110520110501"

Mid("20110501", 1, 6) + "" + Mid("20110501", 1, 8) + "" = "20110520110501"

Mid("20110501", 6, 1) + "" + Mid("20110501", 8, 1) + "" = "51"

Right("20110501", 3) + "" + Right("20110501", 1) + "" = "5011"

 

A02.Visual Basic中,下列字串運算的結果為何?Left("access", 1) + Choose(3, "i", "si", "pp", "imp") + Right("grill", 1) + Mid("next", 2, 1) (A)"apple" (B)"asign" (C)"sign" (D)"simple"[100管理]

Left("access", 1) + Choose(3, "i", "si", "pp", "imp") + Right("grill", 1) + Mid("next", 2, 1) ="a" + "pp" + "l" + "e" = "apple"

 

B03.請問下列程式於Visual Basic執行運算後,所得100個數值之陳述,何者正確? (A)都是奇數,且是介於012之間 (B)都是偶數,且是介於012之間 (C)都是奇數,且是介於1270之間 (D)都是偶數,且是介於1270之間。[101商業]

Dim i As Integer

For i = 1 To 100

  Print(Int(Rnd * 59) And 12);

Next i

Int(Rnd * 59)產生0~58之間的整數

00000000000001002 = 410

00000000000010002 = 810

00000000000011002 = 1210

 

C04.小寫英文字母"a"ASCII值為97,請問Asc(Right(Left(Mid("LinsanityIsJeremyNotJerome", 4, 8), 6) ,2))Visual Basic執行運算後,所得之結果為何? (A)110 (B)115 (C)116 (D)121[101商業]

Asc(Right(Left(Mid("LinsanityIsJeremyNotJerome", 4, 8), 6), 2)) = Asc(Right(Left("sanityIs"), 6), 2)) = Asc(Right("sanity", 2)) = Asc("ty") = 116

 

C05.執行完下列Visual BasicForm_Activate程式後,印出結果為何? (A)P(5, 6, 2) (B)11 (C)121 (D)562[101管理]

Private Sub Form_Activate()

  Dim X, Y, Z As Integer

  X = 5: Y = 6: Z = 2

  Print P(X, Y, Z) P(5, 6, 2) 印出121

End Sub

Function P(A, B, C) P(5, 6, 2)

  P = (A + B ) ^ C (5 + 6) ^ 2 = 121

End Function

 

C06.下列Visual Basic程式片段執行後,變數c之值為何? (A)1 (B)2 (C)3 (D)4[102商業]

Dim s As String = "Apocalypse"

Dim t As String = "aeiou"

Dim d As String

Dim c, i, j As Integer

For i = 1 To Len(s)

 d = Mid(s, i, 1)

 j = 1

 While j <= Len(t)

  If Mid(t, j, 1) = d Then 比較st兩字串相同的字母有3oae

   c = c + 1: Exit While

  End If

  j = j + 1

 End While

Next i

 

C07.執行下列Visual Basic程式碼片段後,請問變數data(1), num1, num2的值依序是多少? (A)1, 5, 6 (B)9, 7, 9 (C)9, 5, 16 (D)3, 7, 16[103商業]

Module Module1

 Sub Main()

 REM程式由此開始執行

 Dim data() As Integer = {1, 3, 5, 7, 9} data(0)=1data(1)=3data(2)=5data(3)=7data(4) = 9

  Dim num1, num2 As Integer

  num1 = data.Length num1 = 5個元素

  num2 = data(4) num2 = 9

  num2 = Processing(data, num1) num2 = 16

 End Sub

 Function Processing(ByRef data() As Integer, ByVal num1 As Integer)

  data(1) = data(1) ^ 2 data(1) = 3 ^ 2 = 9 (傳址呼叫保留值)

  num1 = data(3) num1 = 7 (傳值呼叫不保留值)

  Processing = (num1 + data(1)) processing = 7 + 9 = 16 (覆蓋7: num2 = 9)

 End Function

End Module

 

B08.一般在Visual Basic程式語言中,亂數函數RND()可以用來產生什麼數值? (A)True或者是False的邏輯 (B)01間的亂數 (C)RGB的顏色像素 (D)12字元的密碼內容。[104資電]

RND():產生0 Rnd() 1的亂數

 

A09.下列Visual Basic的自訂函數,主程式執行S(4)傳回的值為何? (A)abbab (B)ababb (C)babba (D)babab[106商業]

Function S(K As Integer) As String

  If K= 0 Then

    Return "a"

  ElseIf K= 1 Then

    Return "b"

  Else

    Return S(K - 2) & S(K - 1)

  End If

S(0) = "a"

S(1) = "b"

S(2) = S(0) + S(1) = "ab"

S(3) = S(1) + S(2) = "bab"

S(4) = S(2) + S(3) = "abbab"

End Function

 

B10.執行下列Visual Basic程式片段後,變數X的值為何? (A)0 (B)1 (C)2 (D)4[107商業]

Dim X, Y As Integer

X = 4

Y = Math.Sqrt(X) Y = 2 (Sqrt求平方根)

Select Case Y

Case 1, 3

  X = Fix(Y / 5)

Case 2, 4

  X = Math.Sign(Y) X = 1 (Sign判斷正值、負值或零)

End Select

 

A11.Visual Basic中,假設我們有以下一個使用者自訂函數A,若主程式呼叫A(5),則回傳的值為何? (A)1 (B)3 (C)5 (D)11[107商業]

Function A(ByVal K As Integer) As Integer

  If K < 4 Then

    Return K

  Else

    Return A(K - 1) - A(K - 2) + A(K - 3)

  End If

A(1) = 1A(2) = 2A(3) = 3

A(4) = A(3) - A(2) + A(1) = 3 - 2 + 1 = 2

A(5) = A(4) - A(3) + A(2) = 2 - 3 + 2 = 1

End Function

 

A12.考慮計算正整數n階乘(n!)的遞迴演算法,若遞迴結束條件為n等於1時,下列何者為該演算法所需之乘法數量? (A)n-1 (B)n+1 (C)n/4 (D)n/8[113管理]


【二技試題】

D01.某程式能計算某函數f(n)的值。若f(n)的特性是:當n > 1時,f(n) = n * f(n - 1);當n = 1時,f(n) = 1。請問該程式計算出f(5)的值應該是 (A)1 (B)5 (C)60 (D)120[90護理]

f(5) = 5 * f(4) = 5 * 24 = 120

f(4) = 4 * f(3) = 4 * 6 = 24

f(3) = 3 * f(2) = 3 * 2 = 6

f(2) = 2 * f(1) = 2 * 1 = 2

f(1) = 1

 

B02.BASIC程式語言的字串函數中,Mid$("abcxyz", 3, 2)之執行結果為 (A)bcx (B)cx (C)cxy (D)bc[90護理]

Mid$("abcxyz", 3, 2) = cx,從第三個字元開始取2個字元。

 

C03.先進後出(First in last out)的資料結構為何? (A)(tree) (B)佇列(queue) (C)堆疊(stack) (D)串列(link list)[91電機]

 

C04.下列有關堆疊(stack)及佇列(queue)的敘述,何者不正確? (A)堆疊的特性是「後進先出」;佇列的特性是「先進先出」 (B)多工的作業系統常常利用佇列來記錄各個程序(process)的資訊 (C)程式語言的直譯器需要使用佇列來記錄函數(function)呼叫時的資訊 (D)串列(linked list)可以用來模擬疊與佇列的功能。[91管理]

 

05.以下為Visual Basic中一個『命令按鈕』的程式片段,(注意:數字3ASCII碼以十六進位表示成33)

Private SubCommand1_Click()

 n1 = 33: n2 = 33

 s1 = Asc(n1): s2 = Str(n2)

 Print "s1 ="; s1

 Print "s2 ="; s2

End Sub

C05-1在按了一下該『命令按鈕』並執行上面的程式片段後,請問Print "s1 ="; s1敘述的結果是下列哪一項? (A)s1 = 21 (B)s1 = 33 (C)s1 = 51 (D)s1 = 333335

s1 = Asc(n1) = Asc(33) = 51

B05-2.續上題請問Print "s2 ="; s2敘述的結果是下列哪一項 (A)s2 = 21 (B)s2 = 33 (C)s2 = 51 (D)s2 = 3333[91護理]

s2 = Str(n2) = Str(33) = 33

 

C06.下列關於巨集(macro)與副程式(subroutine)之敘述,何者錯誤? (A)兩者皆只需定義一次 (B)兩者皆可在程式中不同的地方引用 (C)巨集指令能力的提供完全取決於CPU指令集,與組譯程式無關 (D)程式與副程式之間的連繫,通常使用堆疊(stack)來完成。[92電子]

 

B07.以堆疊(stack)和後序式(postfix)來進行下列運算A×(B+C)+E/(F-G),若堆疊只用於存放運算元(operands),則此堆疊容量最少須可儲存多少筆運算元,才能執行無誤? (A)3 (B)4 (C)5 (D)6[92電機]

 

B08.使用堆疊(stack),並可用任意交叉方式進行堆入(push)及拉出(pop)的動作,當資料的輸入順序為1, 2, 3, 4, 5, 6,則資料的取出順序不可能為下列何者? (A)3, 2, 1, 4, 5, 6 (B)3, 4, 1, 2, 5, 6 (C)1, 3, 2, 5, 4, 6 (D)3, 2, 5, 6, 4, 1[92管理]

 

C09.具有先進先出(first in first out)特性的資料結構為何? (A)堆積結構(heap) (B)樹狀結構(tree) (C)佇列結構(queue) (D)堆疊結構(stack)[92護理]

 

A10.下列何者不是副程式參數傳遞法? (A)傳向量呼叫法(call-by-vector) (B)傳值呼叫法(call-by-value) (C)傳名呼叫法(call-by-name) (D)傳址呼叫法(call-by-address)[93電機]

 

C11.下列有關Visual Basic語言副程式與函數的敘述,何者不正確? (A)副程式內可以使用全域變數 (B)函數內可以使用全域變數 (C)副程式可以回傳一個值給呼叫它的程式 (D)函數可以回傳一個值給呼叫它的程式。[93管理]

函數可以回傳一個值給呼叫它的程式。

 

C12.系統在處理遞迴(recusive)程序呼叫與返回時,最常使用下列何種資料結構? (A)圖形(graph) (B)佇列(queue) (C)堆疊(stack) (D)(tree)[93管理]

 

C13.在資料結構中,試問堆疊(stack)之主要特性為何? (A)FOLO (B)FIFO (C)LIFO (D)LILO[93護理]

 

B14.原始符號A, B, C, D, E, F依序經由一個堆疊(stack)後或直接輸出,下列何者不可能為其輸出?(下列輸出之順序由左至右) (A)ABCDEF (B)CBDFAE (C)BAEDFC (D)DECFBA[94電機]

 

C15.假設整數a之初始值為3,則執行Visual Basiccall test(a, a, a)敘述(statement),呼叫下列副程式回到主程式後,a之值為何?

Sub test(ByRef x As Integer, ByRef y As Integer, ByVal z As Integer)

  x = x + y

  y = x + y + z

End Sub (A)3 (B)12 (C)15 (D)18[94管理]

xy為傳址呼叫,z為傳值呼叫,故xyA共同記憶體位址。x = x + y = 3 + 3 = 6y = x + y + z = 6 + 6 + 3 = 15,故a值為15

 

A16.程式中用LIFO(last in first out)方式來處理程序呼叫與返回的資料結構,是下列哪一種? (A)堆疊(stack) (B)指標(pointer) (C)陣列(array) (D)佇列(queue)[94護理]

 

D17.下列有關副程式(subroutine)與巨集(Macro)的描述,何者正確? (A)副程式會降低程式的可讀性 (B)副程式較巨集更浪費記憶體空間 (C)副程式執行速度較巨集為快 (D)副程式涉及執行階段時控制權的轉移。[95電子]

 

D18-1.有一遞迴程序(recursive procedure)如下所示,則FIB(5)之值等於多少? (A)2 (B)3 (C)4 (D)5

Recursive Procedure FIB(n)

Begin

  If n = 0, FIB = 0

  If n = 1, FIB = 1;

  else FIB(n) = FIB(n - 1) + FIB(n - 2)

End

C18-2.承前題計算FIB(5)之值需呼叫(call)此一程序(procedure)多少次 (A)13 (B)14 (C)15 (D)16[95電機]

FIB(5) = FIB(4) + FIB(3) = 3 + 2 = 5

FIB(4) = FIB(3) + FIB(2) = 2 + 1 = 3

FIB(3) = FIB(2) + FIB(1) = 1 + 1 = 2

FIB(2) = FIB(1) + FIB(0) = 1 + 0 = 1

 

A19.使用最大堆積(heap)儲存數值資料,在此資料結構中搜尋最大數的時間複雜度為何? (A)O(1) (B)O(n) (C)O(log n) (D)O(n2)[95管理]

 

B20.下列何者不是堆疊(stack)經常之應用? (A)系統狀態回溯(backtracking) (B)資料排序(sorting) (C)輸入字串資料反轉(reversing) (D)運算式表示法轉換(transform)[95管理]

 

B21.堆疊(stack)的動作為一種先進後出(FILO)的行為,已知堆疊的初始內容為{s, f},頂端指向s,請問經一連串的動作【pop( ), push(a), pop( ), push(x), push(w)】且無發生錯誤,最後堆疊的內容為何? (A){a, x, f} (B){w, x, f} (C){a, x, w, f} (D){x, w, s, f}[95護理]

 

C22.VB程式語言中,運算式A_NUM = Int(90 * Rnd) + 10,請問A_NUM之範圍為何? (A)1A_NUM90 (B)10A_NUM90 (C)10A_NUM99 (D)11A_NUM100[95護理]

產生M ~ N(M < N)之間的整數隨機亂數,公式INT(Rnd * (N - M + 1)) + M,比較INT(90 * Rnd) + 10,可得M = 10N - M + 1 = 90,則N = 99,故A_NUM的範圍為10A_NUM99

 

D23.有關巨集(macro)與副程式(subroutine)兩者之間比較,下列敘述何者正確? (A)副程式的執行速度較快 (B)呼叫巨集執行時,需做控制權轉移 (C)巨集較節省記憶器空間 (D)兩者皆可節省程式設計空間。[96電子]

 

B24.副程式執行中再呼叫其他副程式的情況,稱之為巢路副程式(nested subroutine),請問巢路深度是取決於下列何者之大小? (A)控制單元(CU) (B)堆疊(stack) (C)匯流排(bus) (D)算數邏輯單元(ALU)[96電子]

 

C25.下列有關副程式參數傳遞的敘述,何者正確? (A)在副程式裡指定用來接收外來資料的參數,稱為實際參數(actual parameter) (B)在呼叫副程式的指令中所攜帶的參數,稱為形式參數(formal parameter) (C)若採以值傳遞(call by value)的參數傳遞方式,即使形式參數的值有所改變,亦不會影響實際參數的值 (D)若採以址傳遞(call by address)的參數傳遞方式,則實際參數與形式參數共用記憶體位置,且在副程式中,實際參數的名稱會取代形式參數的名稱。[96管理]

 

B26.若將一個16位元的位址資料推入堆疊器,則其堆疊指標(SP)之值有何變化? (A)1 (B)2 (C)1 (D)2[97電子]

 

D27.中央處理單元(CPU)處理插斷(interrupt)時,通常採用下列何種方式來暫存資料? (A)表列(list) (B)指標(pointer) (C)佇列(queue (D)堆疊(stack)[97電子]

 

D28.一般巨集(Macro)指令,經常被用於程式語言之設計。下列巨集之敘述何者錯誤? (A)可彌補程式之語言功能 (B)可提高程式之運算速度 (C)具有類似副程式之功能 (D)佔用較少之記憶體空間。[97電子]

 

B29.有關資料結構觀念,下列何者正確? (A)按先後順序排隊買票,是堆疊(stack)的處理觀念 (B)從鍵盤輸入的資料會先存入佇列(queue) (C)串列(linked list)可用來模擬堆疊(stack)的功能,無法模擬佇列(queue)的功能 (D)堆疊(stack)的資料結構是FIFO(first in first out)[97管理]

 

C30.圖為鐵路轉換網(Railroad Switching Network)的問題。車箱由右側軌道依先後順序分別進入堆疊中,每節車箱進入堆疊後可在任一時間離開;也就是說,可選擇馬上離開堆疊或等待某些節車箱也進入堆疊後再離開堆疊。離開堆疊的車箱,限依箭頭方向在左側軌道會合。假設右側軌道現有4節車箱,依序編號為A, B, C, D,欲於左側軌道會合。當車箱全部在左側會合完畢時,以B車箱為首的「車箱可能排列順序」共有幾種? (A)3 (B)4 (C)5 (D)6[98管理]

 

D31.有關堆疊(stack)的敘述,何者錯誤? (A)指令PUSHA是將A中的資料推入堆疊 (B)指令POPA是將堆疊頂端的資料放回A (C)可以使用堆疊進行副程式之間的參數傳遞 (D)堆疊中資料進出的演算法為先進先出(First In First Out)[99電子]

 

B32.關於堆疊(Stack)與佇列(Queue)的敘述,下列何者正確? (A)堆疊是後進先出(LIFO),佇列是先進後出(FILO)的串列 (B)堆疊是後進先出(LIFO),佇列是先進先出(FIFO)的串列 (C)佇列是先進先出(FIFO),堆疊是後進後出(LILO)的串列 (D)佇列是先進後出(FILO),堆疊是後進後出(LILO)的串列。[100電機]

 

A33.下列哪一種傳遞參數的方法是將實際參數的位址傳遞給副程式? (A)以址傳遞(call by address) (B)以值傳遞(call by value) (C)以參照傳遞(call by reference) (D)傳回值(return value)[100管理]

 

C34.對一堆疊依序作下列動作push 1, push 3, pop, push 2, pop, pop,其pop的結果為何? (A)123 (B)231 (C)321 (D)213[100管理]

 

C35.下列有關資料結構的應用,何者最不合適? (A)函數呼叫利用堆疊來達成 (B)字串反轉利用堆疊來處理 (C)稀疏矩陣利用佇列來儲存 (D)印表機的緩衝區利用佇列來處理。[100管理]

 

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。