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