(27) 下列程序段的執行結果為
a=5
For k=1 To 0
a=a + k
Next k
Print k; a
A) -1 6
B) -1 16
C) 1 5
D) 11 21
解析:此題是考查For循環結構語句。
For循環有兩種格式,其中一種格式是:
For 循環變量=初值 To 終值 Step[步長]
語句
[Exit For]
語句
Next[循環變量]
此循環語句的執行過程為:"循環變量"首先取得"初值",檢查是否超過"終值",如果超過,就一次也不循環而跳出循環,屬于"先檢查后執行"的類型。現在來看程序段,For k=1 To 0中,初值為1,終值為0,顯然當"循環變量"首先取得"初值"1,檢查后超過"終值"0,所以一次也不執行,即最后執行Print時,k=1,a=5。
(28) 下列程序段的執行結果為
a=3
b=1
For I=1 To 3
f=a + b
a=b
b=f
Print f
Next I
A) 4 3 6
B) 4 5 9
C) 6 3 4
D) 7 2 8
解析:本題考查的是For循環結構語句,現在看程序段是如何運行的。
開始a=3,b=1。For循環中步長缺省值為1,循環變量I的初值為1,終值為3,所以此循環結構可以循環3次。
第一次循環后,結果為:f=4,a=1,b=4
第二次循環后,結果為:f=5,a=4,b=5
第三次循環后,結果為:f=9,a=5,b=9
所以每循環一次,便輸出f當前值,循環3次即便輸出3個f值分別為4,5,9。
(29) 下列程序段的執行結果為
I=9
x=5
Do
I=I + 1
x=x + 2
Loop Until I >=7
Print "I="; I
Print "x="; x
A) I=4x=5
B) I=7x=15
C) I=6x=8
D) I=10x=7
解析:此題用的是Do循環結構,其格式為:
Do [語句塊]
[Exit Do]
Loop Until 循環條件
此循環由于"先執行后檢查",所以至少執行一次。本題中,程序運行到循環條件I>=7的值為True,才停止。所以當程序結束運行后I=10,x=7。
(30) 以下程序段運行時從鍵盤上輸入字符"-",則輸出結果為
op$=InputBox("op=")
If op$="+" Then a=a + 2
If op$="-" Then a=a - 2
Print a
A) 2
B) -2
C) 0
D) +2
解析:此題是根據用戶的輸入計算變量a的值并顯示。當輸入字符"-"時,第一個If條件不成立,跳過,而第二個If語句條件滿足,因此執行a=a-2,使a=-2。所以選項B)是正確答案。
(31) 以下程序段的輸出結果為
Dim l, a(10) , p(3)
k=5
For i=0 To 10
a(i) =i
Next i
For i=0 To 2
p(i) =a(i (i + 1) )
Next i
For i=0 To 2
k=k + p(i) 2
Next i
Print k
A) 20
B) 21
C) 56
D) 32
解析:第一個循環對數組a()進行賦值,第二個循環對數組p()進行賦值,第三個循環對k進行累加,k的初值等于5,第一次循環k=k+p(0) *2=5,……,第三次循環k=k+p(2) *2=21并輸出,所以選項B)正確。
(32) 下列程序的執行結果為
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x=12: y=20
Call Value(x, y)
Print x; y
End Sub
Private Sub Value(ByVal m As Integer, ByVal n As Integer)
m=m * 2: n=n - 5
Print m; n
End Sub
A) 20 12
20 15
B) 12 20
12 25
C) 24 15
12 20
D) 24 12
12 15
解析:被調過程Value的兩個參數m和n前面都有關鍵字"ByVal"修飾,即在主調過程用此過程時,實參與形參之間是以傳值方式傳遞信息的,而當實參與形參以傳值方式相結合時,形參的改變并沒有影響到實參,單單就這一點來說,當程序代碼執行主調過程中的Print x;y語句時,x和y的值應不變,還是12和20,這樣就能夠排除選項A)和選項B)了。當主調過程調用被調過程時,把實參x、y的值分別傳給形參m和n,這就是說此時形參m值為12,n值為20,執行被調過程中的m = m * 2: n = n - 5語句后,m值為24,n值為15,所以Print m; n后, 程序輸出的結果為24和15。最后程序輸出的結果如選項C)所示。
(33) 在窗體上畫一個命令按鈕,然后編寫下列程序
Private Sub Command3_Click()
Tcl 2
Tcl 3
Tcl 4
End Sub
Sub Tcl(a As Integer)
Static x As Integer
x=x + a
Print x;
End Sub
程序運行后,單擊命令按鈕,輸出結果為
A) 2 3 4
B) 2 5 9
C) 3 5 4
D) 2 4 3
解析:在過程TCL中,將Integer型變量x定義為靜態變量(Static),Static語句的格式與Dim語句完全一樣,但Static語句只能出現在事件過程,Sub過程或Function過程中,在過程中的Static變量只有局部的作用域,即只能在本過程中可見,但可以和模塊級變量傳遞,即使過程結束后,其值仍能保留。Tcl過程是將變量a的值加上x賦給x,然后輸出x的值;第一次調用Tcl過程時,x未賦值,默認為0,所以輸出結果為2,第二次調用Tcl過程時,因為x為靜態變量,所以它的值為上次調用后的值,即為2,加上a后,x的值變為5,輸出結果為5,同理,第三次調用后輸出結果為9。
(34) 下面程序段,運行后的結果是Private Sub Command1_Click()
Dim b%(1 To 4) , i%, t#
For i=1 To 4
b(i) =i
Next i
t=Tof(b() )
Print "t="; t,
End Sub
Function Tof(a() As Integer)
Dim t#, i%
t=1
For i=2 To UBound(A)
t=t * a(i)
Next i
Tof=t
End Function
A) t=18
B) t=24
C) t=30
D) t=32
解析:程序開始調用循環語句對數組b()賦值,b(i) = I,且數組b的上下界分別為1和4;接著將數組b()作為對象,調用Tof過程,在Tof過程中,定義了兩個變量t和I,I作為For循環的循環變量,初始值為2,終值為數組b的上界;循環體為"t = t * a(i) ",即將b(i)的值乘以t,然后在賦給t,當循環結束后,程序返回的就是數組b中除第一個元素以外所有元素值的乘積,此題的結果為2×3×4=24,輸出結果為t=24。
(35) 單擊按鈕時,以下程序運行后的輸出結果是
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x=1: y=2: z=3
Call God(x, x, z)
Print x; x; z
Call God(x, y, y)
Print x; y; y
End Sub
Private Sub God(x As Integer, y As Integer, z As Integer)
x=3 * z + 1
y=2 * z
z=x + y
End Sub
A) 6 6 12
7 11 11
B) 8 5 10
5 11 11
C) 9 6 12
9 10 15
D) 8 10 10
5 9 10
解析:從整體上看,可得主調過程將兩次調用過程God后,實參的值將隨形參變化而變化,現在分析一下這兩次調用實參和形參是怎么變化的:第一次調用被調過程God,主調過程把實參x,x和z的地址分別傳給形參x,y和z,此時形參x,y和z值分別為1,1和3,執行語句x = 3 * z+1后,形參x值變為10,此時相對應的實參x也變為10,執行語句y = 2 * z后,形參y值變為6,則相對應的實參x值變為6。執行z = x + y后,形參z值應為12,當然這次調用后,程序代碼輸出的數值為6,6,12;第二次調用被調過程God,主調過程把實參x,x和y的地址分別傳給形參x,y和z。應注意,此時實參x的值為6而不是1,所以此時形參x,y和z值分別為6,2和2,執行語句x = 3 * z+1后,形參x值為7,相對實參x值也相應的變為7。執行語句y = 2 * z后,形參y值變為4,相應的實參y值也變為4,執行z = x + y后,形參z值變為11,相應的實參y的值變為11,而形參y和z的地址相同,所以最后它們值都應為11,所以此次調用后,輸出的數值為7,11和11。