中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2020浙江高考信息技術(shù)VB算法與程序?qū)m?xiàng)練習(xí)專題一 求程序運(yùn)行結(jié)果

資源下載
  1. 二一教育資源

2020浙江高考信息技術(shù)VB算法與程序?qū)m?xiàng)練習(xí)專題一 求程序運(yùn)行結(jié)果

資源簡(jiǎn)介


專題一 求程序運(yùn)行結(jié)果
1.有如下VB程序段:
For i = 1 To 6
 a(i)=Int(Rnd*10)+1
Next i
For i = 1 To 5
If i Mod 2=1 And a(i)>a(i+1) Then
 t=a(i):a(i)=a(i+1):a(i+1)=t
Else
 a(i)=a(i)+1
End If
Next i
執(zhí)行程序后,a數(shù)組各元素可能是(  )
A.11,11,7,9,3,9 B.6,2,8,10,5,9
C.6,9,3,7,8,12 D.3,9,0,8,2,7
解析 產(chǎn)生a(i)值的范圍是[1,10],排除答案C和D。當(dāng)i是奇數(shù)時(shí),并且a(i)>a(i+1)時(shí)交換,也就是說奇數(shù)位的數(shù)小于等于他后面的數(shù)。當(dāng)奇數(shù)位的數(shù)小于等于他后面的數(shù),或者是偶數(shù)位時(shí),執(zhí)行a(i)=a(i)+1,此時(shí)a(i)有可能等于11。
答案 A
2.有VB程序段如下:
For i = 1 To 6
a(i) = Int(Rnd * 20) + 1
If a(i) Mod 2 = i Mod 2 Then
a(i) = a(i) - 1
Else
a(i) = a(i) + 2
End If
Next i
執(zhí)行該程序段后,a(1)~a(6)各元素可能的是(  )
A.13,2,7,12,5,18 B.22,7,0,15,4,19
C.20,9,18,23,4,7 D.6,0,4,21,18,17
解析 產(chǎn)生a(i)值的范圍是[1,20],當(dāng)i是奇數(shù)時(shí),如果a(i)也是奇數(shù),將他減1,成為偶數(shù)。當(dāng)i是偶數(shù)時(shí),如果a(i)也是偶數(shù),將他減1,成為奇數(shù)。因此奇數(shù)位產(chǎn)生的是偶數(shù),偶數(shù)位產(chǎn)生的奇數(shù)。當(dāng)產(chǎn)生的最小奇數(shù)為1時(shí),減1為0,即最小偶數(shù)為0,當(dāng)產(chǎn)生的最大偶數(shù)為20時(shí),加2為22。同理可得奇數(shù)的范圍是[1,21]。
答案 B
3.有如下所示VB程序段:
str1 = ”ABCDEFGHIJKLMNOPQRSTUVWXYZ”
s = ” ”
For i = 1 To 4
t = Int(Rnd * 10) + 1
If t Mod 2 = i Mod 2 Then
t = t + 1
Else
t = t + 2
End If
s = s + Mid(str1, t, 1)
Next i
List1.AddItem s
執(zhí)行該程序段后,列表框List1中可能顯示的內(nèi)容是(  )
A.BADC B.BCDY
C.DEFG D.CDEF
解析 產(chǎn)生t值的范圍是[1,10]。當(dāng)i是奇數(shù)時(shí),如果t也是奇數(shù),加1成為偶數(shù),t不是奇數(shù),加2還是偶數(shù),且數(shù)的范圍是[2,12]。當(dāng)i是偶數(shù)時(shí),如果t也是偶數(shù),加1成為奇數(shù),t不是偶數(shù),加2還是奇數(shù),且數(shù)的范圍是[3,11]。因此奇數(shù)位產(chǎn)生的是偶數(shù),偶數(shù)位產(chǎn)生的奇數(shù)。
答案 C
4.有如下VB程序段:
i = 1: n = 5
Do While i <= n
x = Int(Rnd() * 9) + 1
If x Mod 2 = 1 Then
  a(i) = x
Else
 a(n)=x
 n=n-1
End If
i = i + 1
Loop
數(shù)組元素的初值均為0,執(zhí)行該程序段后,在下列選項(xiàng)中a(1)至a(5)各元素值不可能的是(  )
A.7 1 3 9 8 B.3 3 0 8 8
C.0 1 0 4 2 D.1 3 5 5 0
解析 產(chǎn)生的數(shù)[1,9],偶數(shù)放在后面,奇數(shù)放在前面。A選項(xiàng),先產(chǎn)生4個(gè)奇數(shù),再產(chǎn)生一個(gè)偶數(shù)。B選項(xiàng),先產(chǎn)生兩個(gè)奇數(shù),再產(chǎn)生兩個(gè)偶數(shù),此時(shí)i=4,n=3,不滿足條件,退出循環(huán),因此第3個(gè)元素為0。C選項(xiàng),先產(chǎn)生一個(gè)偶數(shù),再產(chǎn)生一個(gè)奇數(shù),再生產(chǎn)2個(gè)偶數(shù),此時(shí)n=3,i=5,不滿足條件。D選項(xiàng),先產(chǎn)生4個(gè)奇數(shù),此時(shí)n=5,條件成立,但產(chǎn)生的數(shù)不可能是0。
答案 D
5.有如下 VB 程序段:
a(1) = 3: a(2) = 4: a(3) = 1: a(4) = 2: a(5) = 5
k = Int(Rnd * 4) + 1
For i = 1 To 5
If i <> k Then
If a(i)End If
Next i
執(zhí)行該程序段后,數(shù)組元素 a(1)到 a(5)中的值依次不可能為(  )
A.5 4 3 2 1 B.3 4 1 2 5
C.3 4 2 1 5 D.1 4 3 2 5
解析 k的取值范圍是[1,4],A選項(xiàng)中只有當(dāng)i=5,k=1時(shí)才能把5換到最前面,但此時(shí)又不滿足條件a(i)2就不會(huì)換,當(dāng)i=2時(shí)k等于任何值,均不會(huì)換,當(dāng)i=3時(shí),k=3,不換。C選項(xiàng)中,3和4互換,D選項(xiàng)2和4互換。
答案 A
6.有以下VB程序段:
a(1) = 2
For i = 2 To 3
a(i)=a(i-1)-Int(Rnd()*2)
If i Mod 2 = 1 Then
a(i) = a(i) + 1
Else
a(i) = a(i) - 1
End If
Next i
執(zhí)行程序后,a(2)和a(3)的值不可能的是(  )
A.1,1 B.1,0
C.0,1 D.0,0
解析 語句a(i)=a(i-1)-Int(Rnd()*2)的功能是讓a(i)的值比他前面的小1或相等。即a(2)為1或2,他的值減去1后,值可能為0或1。當(dāng)a(2)=1時(shí),a(3)的值可能是1或0,加1后的值可以是1或2。當(dāng)a(2)=0時(shí),a(3)的值可能是-1或0,加1后的值可以是0或1。
答案 B
7.有如下 VB 程序段:
For i = 1 To 6
 a(i) = Int(Rnd() * 10) + 1
 If a(i) Mod 2 <> i Mod 2 Then i = i - 1
Next i
For i = 1 To 5
For j = 6 To i + 2 Step -1
If a(j) < a(j - 2) Then
   t=a(j):a(j)=a(j-2):a(j-2)=t
End If
Next j
Next i
執(zhí)行程序后,a 數(shù)組各元素可能是 (  )
A.1,2,3,4,5,6 B.1,0,3,6,5,8
C.3,2,7,6,11,8 D.2,1,4,3,10,9
解析 a(i)中產(chǎn)生的是[1,10]之間的隨機(jī)數(shù),且奇數(shù)位為奇數(shù),偶數(shù)位為偶數(shù)。接下來按奇偶分別進(jìn)行排序。B選面中不可能產(chǎn)生0,C選項(xiàng)中不可能產(chǎn)生11。
答案 A
8.有如下 VB 程序段:
a(1)=6:a(2)=9:a(3)=3
a(4)=7:a(5)=8:a(6)=1
t = 2 * Int(Rnd * 3) + 1
For i = t To 5
k = i
For j = i + 1 To 6
If a(j) < a(k) Then k = j
Next j
If k <> i Then
temp = a(i): a(i) = a(k): a(k) = temp
End If
Next i
執(zhí)行該程序段后,a(1)~a(6)各元素的值不可能是(  )
A.6,1,3,7,8,9 B.6,9,1,3,7,8
C.6,9,3,7,1,8 D.1,3,6,7,8,9
解析 t的值為1,3,5,D選項(xiàng)屬于t=1的情況,A選項(xiàng)屬于t=2的情況,即從第2個(gè)數(shù)開始排序。選項(xiàng)B屬于t=3,選項(xiàng)C屬于t=5。
答案 A
9.有如下 VB 程序段:
n = 8
For i = 1 To n
d(i) = Int(Rnd * 10) + 1
Next i
For i = 2 To n - 1
k = 1
For j = 1 To n - i
If d(j)*k>d(j+2)*k Then
     temp=d(j):d(j)=d(j+2):d(j+2)=temp
End If
k = -k
Next j
Next i
執(zhí)行該程序段后,d 數(shù)組各元素可能是(  )
A.3,10,3,5,4,4,10,1 B.0,3,4,5,6,6,7,8
C.2,1,3,4,5,6,8,7 D.6,4,5,6,5,7,1,10
解析 當(dāng)i為偶數(shù)時(shí),k=1,偶數(shù)位的數(shù)實(shí)現(xiàn)降序排列,當(dāng)i為奇數(shù)時(shí)k=-1,奇數(shù)位的數(shù)實(shí)現(xiàn)升序排列。
答案 A
10.有如下 VB 程序段:
Dim a(1 To 6) As Integer, i As Integer
Randomize
For i = 1 To 6
a(i) = Int(Rnd * 10) + 1
If a(i) Mod 2 = 1 Then
i = i - 1
ElseIf i Mod 2 = 0 Then
a(i)=a(i)+a(i-1)
End If
Next i
最終 a 數(shù)組各元素的值可能是(  )
A.8,14,3,10,2,12 B.2,4,6,10,12,24
C.10,16,8,18,8,4 D.6,12,10,20,4,8
解析 產(chǎn)生的數(shù)在[1,10],如果是奇數(shù),重新產(chǎn)生。奇數(shù)位不可能超過10,偶數(shù)位上數(shù)字是他與他前面數(shù)字之和,肯定為偶數(shù),且比他前面的數(shù)大。
答案 D
11.有如下VB程序段:
b(1) = a(1):t = 1
For i = 2 To 6
For j = 1 To t
If a(i) > b(j) Then
     b(j) = a(i)
     Exit For
End If
Next j
If j > t Then t = t + 1: b(t) = a(i)
Next i
數(shù)組a(1)至a(6)的值分別為15、22、13、134、43、2,執(zhí)行該程序段后,變量t的值為(  )
A.2 B.3 C.4 D.5
解析 b數(shù)組中存儲(chǔ)的是較大值,當(dāng)a(i) > b(j)條件成立時(shí),中途退出內(nèi)循環(huán),此時(shí)不滿足j > t。變量t只有在a(i)小于或等于b數(shù)組中的值才增加1。
i t b(1) b(2) b(3)
2 2 22
3 3 13
4 3 134
5 3
6 3
答案 B
12.有如下 VB 程序段:
flag = True : i = 1
Do While i <= 6
x = Int(Rnd * 100) + 1
If flag Or x >50 Then
 a(i)=x
 flag = Not flag
 i = i + 1
End if
Loop
執(zhí)行該程序段后,在下列選項(xiàng)中,a(1)~a(6)各元素值不可能的是(  )
A.52,95,46,74,77,83 B.50,55,46,70,21,97
C.62,78,57,61,69,50 D.31,54,48,72,50,82
解析 本題考查循環(huán)過程中變量的變化規(guī)律。通過flag=Not flag語句得知,F(xiàn)lag的值是True和False交替出現(xiàn)的,當(dāng)i的值為奇數(shù)時(shí)flag為True,偶數(shù)時(shí)flag為False。當(dāng)i為偶數(shù)時(shí)flag為False,只有x>50成立才會(huì)給數(shù)組a賦值,即數(shù)組a偶數(shù)位(a(2)、a(4)、a(6))上的值肯定大于50。C選項(xiàng)a(6)=50不能出現(xiàn)。
答案 C
13.有如下程序段:
Const n = 6
Dim a(1 To n) As Integer
Dim i As Integer, j As Integer, t As Integer
Do While True
For i = 1 To n - 1
If a(i) > a(i + 1) Then Exit For
Next i
If i < n Then
For k = 1 To n
    j = Int(Rnd * 6) + 1
    t=a(j):a(j)=a(i):a(i)=t
Next k
Else
Exit Do
End If
Loop
數(shù)組中 a(1)到 a(6)的值依次為“56,34,48,87,65,96”,經(jīng)上述程序段執(zhí)行后a(1)到a(6)的值依次為(  )
A.96 87 65 56 48 34
B.34 48 56 65 87 96
C.選項(xiàng)A和B都有可能
D.選項(xiàng)A和B都不可能
解析 當(dāng)條件i=n),退出循環(huán),結(jié)束程序。在For循環(huán)中,滿足條件a(i)>a(i+1)就中途退出循環(huán),此時(shí)ia(i+1),因此該數(shù)組中的數(shù)已經(jīng)是升序排列。
答案 B
14.有如下程序段:
Sum = 6
a(11) = 49
For i = 10 To 1 Step -1
a(i) = a(i + 1) - 1
If a(i) Mod 3 = 0 Then Sum = Sum + a(i)
Next i
Text1.Text = Str(Sum)
該程序段運(yùn)行后,文本框Text1中顯示的內(nèi)容是(  )
A.174 B.180 C.36 D.42
解析 從第10個(gè)元素開始,是他后面一個(gè)元素值減1,且是3的倍數(shù)相加(共有4個(gè)數(shù),即a(10)a(7)a(4)a(1)),即48+45+42+39+6。
答案 B
15.以下VB程序段:
n = Val(Text1.Text)
Do While n > 0
t = n Mod 10
If t Mod 2 = 0 Then a(t) = a(t) + 1
n = n \10
Loop
List1.AddItem a(2)
若在文本框Text1中輸入2686261,程序運(yùn)行后,在列表框List1中顯示的值為(  )
A.0 B.2 C.3 D.6
解析 t是數(shù)n的個(gè)位數(shù),當(dāng)t是偶數(shù)時(shí),進(jìn)行計(jì)數(shù)。因此2的個(gè)數(shù)有2個(gè)。
答案 B
16.有如下VB程序段:
Dim i As Integer, Sum As Integer
Dim a(1 To 6) As Integer, b(1 To 6) As Integer
Sum = 0
a(6) = 18: a(5) = 7: b(6) = 14: b(5) = 16
For i = 4 To 1 Step -1
 a(i)=a(i+2)-a(i+1)
 b(i)=b(i+2)-a(i)
 If b(i) Mod 3 = 0 Then Sum=Sum+b(i)
Next i
Text1.Text = Str(Sum)
該程序段運(yùn)行后,文本框 Text1 中顯示的內(nèi)容是 (  )
A.39 B.30 C.-9 D.12
解析 采用列表法進(jìn)行變量跟蹤。
i a(i) b(i) sum
4 11 3 3
3 -4 20 3
2 15 -12 -9
1 -19 39 30
答案 B
17.有如下VB程序段:
s = ” ”
For i = 2 To 5
For j = i To 5
If j Mod i = 0 Then a(j) = a(j) + 1
Next j
Next i
For i = 1 To 5
If a(i) <> 1 Then s = Str(i) & s
Next i
Text1.Text = s
若數(shù)組a的初始值都為0,則運(yùn)行該程序段后,Text1中顯示的內(nèi)容為(  )
A.14 B.235 C.532 D.41
解析 如果是大寫字母,將他的ASCII值-62,再加上A的ASCII值,表示將該字母加密成該字母后面第3位的字母。小寫字母和數(shù)字不處理,把加密后的進(jìn)行反向連接。
答案 D
18.有如下 VB 程序段:
a(1) = 17: a(2) = 16: a(3) = 12: a(4) = 18
a(5) = 15: a(6) = 13: a(7) = 17: a(8) = 20
i = 2
Do While i <= 8
If i Mod 2 = 0 And a(i) > a(i - 1) Then
t=a(i):a(i)=a(i-1):a(i-1)=t
ElseIf a(i - 1) Mod 2 = 1 Then
a(i-1)=a(i-1)+1
End If
i = i + 1
Loop
執(zhí)行程序后,a 數(shù)組各元素是(  )
A.17,16,18,12,16,14,20,18
B.18,16,18,12,16,14,20,17
C.16,17,18,12,13,16,20,17
D.18,16,18,12,14,15,17,20
解析 當(dāng)i=2時(shí),把a(bǔ)(1)加1 ,接著觀察奇數(shù)位,該位上原來是奇數(shù),加1后是偶數(shù),如果是偶數(shù)不操作,因此奇數(shù)位肯定是偶數(shù),偶數(shù)位上的數(shù)字肯定比奇數(shù)位上數(shù)字小。
答案 B
19.有如下VB程序段:
Dim a(1 to 6) As Integer
Sum= 0
For i = 1 To 6
For j = i+1 To 6
 If j Mod i = 0 Then a(j) = 1 - a(j)
Next j
Next i
For i = 1 To 6
Sum = Sum + a(i)
Next i
Text1.Text = Str(Sum)
該程序段運(yùn)行后,文本框Text1中顯示的內(nèi)容是(  )
A.3 B.4 C.5 D.6
解析 語句a(j) = 1 - a(j)的功能是把a(bǔ)(j)中的0改為1,1改為0。當(dāng)i>=4時(shí),沒有j可以除通i。
I a(1) a(2) a(3) a(4) a(5) a(6)
1 0 1 1 1 1 1
2 0 1 1 0 1 0
3 0 1 1 0 1 1
答案 B
20.某VB程序段如下:
s = 0
For i = 2 To 5
For j = i To 5
  If j Mod i = 0 Then
   a(j) = a(j) + 1
   s = s + a(j)
 End If
  Next j
Next i
數(shù)組a中初始值均為0,運(yùn)行程序段后,變量s的值為(  )
A.6 B.5 C.4 D.14
解析 可以列出表格跟蹤變量。
i a(1) a(2) a(3) a(4) a(5) s
2 0 1 0 1 0 2
3 0 1 1 1 0 3
4 0 1 1 2 0 5
5 0 1 1 2 1 6
答案 A
21.小王同學(xué)編寫了一個(gè)VB程序段如下所示:
a = 7: b = 3: c = 9
m = 1: k = 1
For i=1 to 3
If Abs(a + b) > c Then
k = k + 1
If k > m Then m = k
Else
k = 1
End If
a = a - b
b = a + b
Next i
Text1.Text = Str(m)
程序運(yùn)行后,在文本框Text1中顯示的結(jié)果為(  )
A.4 B.3 C.2 D.1
解析 列出表格,進(jìn)行變量跟蹤。
I A b c m k
初值 7 3 9 1 1
1 4 7 9 2 2
2 -3 4 9 3 3
3 -7 -3 9 3 1
答案 C
22.有如下 VB 程序段:
Dim a(1 To 7) As Integer
a(1)=14:a(2)=15:a(3)=0:a(4)=11
a(5)=13:a(6)=21:a(7)=17
i = 6: flag = True
Do While i > 1 And flag
If a(i) Mod 3 = 0 And a(i) <> 0 Then
t=a(i):a(i)=a(i+1):a(i+1)=t
ElseIf a(i) = 0 Then
flag = flase
ElseIf a(i + 1) Mod 2 = 1 Then
a(i)=Abs(a(i)-a(i+1))
End If
i = i - 1
Loop
執(zhí)行程序后,a 數(shù)組各元素是(  )
A.14,0,15,4,17,13,21 B.14,15,0,11,4,17,21 
C.15,14,0,11,4,17,21 D.14,15,0,11,13,4,17
解析 采用列表法。
i a(1) a(2) a(3) a(4) a(5) a(6) a(7)
初值 14 15 0 11 13 21 17
6 17 21
5 4
4 14 15 0 11 4 17 21
答案 B
23.有如下VB程序段:
n=10
For k=1 To n\3
 p=3*k-2
x=p
For t=p+1 To 3*k
 If a(t) Next t
 If p<>x Then
y=a(p):a(p)=a(x):a(x)=y(tǒng)
 End If
Next k
a(1)到a(10)中的元素依次為8,3,5,9,7,5,7,6,5,4,程序運(yùn)行結(jié)束后,以下數(shù)組元素的值錯(cuò)誤的是(  )
A.a(chǎn)(2)=8 B.a(chǎn)(5)=7
C.a(chǎn)(7)=3 D.a(chǎn)(10)=4
解析 本題考查選擇排序算法及程序閱讀能力。
k的值 1 2 3
p的值 1 4 7
x的初值 1 4 7
t的值 2 to 3 5 to 6 8 to 9
內(nèi)層循環(huán)功能:在p開始的3個(gè)數(shù)中,找到最小數(shù)的位置存入x,將最小數(shù)與p位置的數(shù)交換。程序執(zhí)行結(jié)束后,數(shù)組a的值依次是:3,8,5,5,7,9,5,6,7,4。
答案 C
24.有如下程序段:
L = a(1): R = b(1): M = 0
For i = 2 To 6
If a(i) <= R Then
If R < b(i) Then R = b(i)
Else
If R - L > M Then M = R - L
L = a(i)
R = b(i)
End If
Next i
If R - L > M Then M = R - L
Label1.Caption = Str(M)
數(shù)組元素a(1)到a(6)的值依次為“1,2,6,10,15,20”,數(shù)組元素b(1)到b(6)的值依次為“6,4,8,15,18,26”,經(jīng)過該程序段“加工”后,標(biāo)簽Label1上顯示的內(nèi)容為(  )
A.6 B.7 C.8 D.25
解析 
i a(i) b(i) L R M
初值 1 6 0
2 2 4 1 6 0
3 6 8 1 8 0
4 10 15 10 15 7
5 15 18 10 18 7
6 20 26 20 26 8
答案 C
25.有如下程序段:
For i = 2 To 6
For j = 1 To i-1
If a(j)<=a(i) And d(j)>=d(i) Then
    d(i)=d(j)+1:pre(i)=j(luò)
End If
Next j
Next i
max = 0: k = 0
For i = 1 To 6
If d(i)>max Then max=d(i):k=i
Next i
Do While k <> 0
st = a(k) & ”,” & st
k = pre(k)
Loop
Text1.Text = Mid(st,1,Len(st)-1)
數(shù)組元素a(1)到a(6)的值依次為“2,6,5,9,8,8”,數(shù)組d各元素的值初始化為1,數(shù)組pre各元素的值初始化為0,經(jīng)過該程序段“加工”后,Text1中的值是(  )
A.2,5,9 B.2,6,8,8
C.2,5,8,8 D.2,5,6,8,8,9
解析 在數(shù)組a中,從第2個(gè)數(shù)開始,往他前面的數(shù)進(jìn)行查找,若找到比較他小的數(shù),且d(j)>=d(i),進(jìn)行相應(yīng)操作。

i d(1) d(2) d(3) d(4) d(5) d(6) pre(1) pre(2) pre(3) pre(4) pre(5) pre(6)
2 1 2 1 1 1 1 0 1 0 0 0 0
3 1 2 2 1 1 1 0 1 1 0 0 0
4 1 2 2 3 1 1 0 1 1 2 0 0
5 1 2 2 3 3 1 0 1 1 2 2 0
6 1 2 2 3 3 4 0 1 1 2 2 5
找到最大值的位置在6,連接a(6),接著把a(bǔ)(5)、a(2)、a(1)連接在前面。
答案 B
26.有以下VB程序段:
a(1) = 68: a(2) = 88: a(3) = 76: a(4) = 60: a(5) = 98
a(6) = 100: a(7) = 64: a(8) = 85: a(9) = 99: a(10) = 59
For i = 1 To 9
b(i)=Abs(a(i+1)-a(i))
c(b(i)\10)=c(b(i)\10)+1
Next i
For i = 0 To 10
If c(i) > 0 Then s = s + ” ” + Str(c(i))
Next i
Label1.Caption = s
數(shù)組c各元素初值為0,執(zhí)行該程序段,標(biāo)簽Label1上顯示的內(nèi)容是(  )
A.2 3 2 1 1 B.1 3 2 2 1
C.2 3 2 2 1 D.1 3 2 1 2
解析 b(1)至b(9)數(shù)組中的值分別為20,12,16,38,2,36,21,14,40。而c數(shù)組是統(tǒng)計(jì)b數(shù)組元素中十位上數(shù)字的個(gè)數(shù)。
答案 B
27.有如下 VB 程序段:
For k = 1 To 10
f = k Mod 2
If f = 0 Then a(k) = 0 Else a(k) = 1
For j = 1 To k
If f = 0 Then
    a(k) = a(k) + 1
Else
     a(k) = a(k) * j
End If
Next j
Next k
執(zhí)行該程序段后,數(shù)組元素a(4)的值為(  )
A.6 B.4 C.2 D.1
解析 當(dāng)k是偶數(shù)時(shí),f的初值為0,并進(jìn)行1至k的計(jì)數(shù)。當(dāng)k是奇數(shù)時(shí),f的初值為1,并進(jìn)行1至k的累乘。
答案 B
28.有如下VB程序段(數(shù)組a各元素的初始值均為0)。
n = Len(Text1.Text)
c = 1
For i = 1 To n
s = Mid(Text1.Text, i, 1)
If s >= ”0” And s <= ”9” Then
a(c) = a(c) * 10 + Val(s)
Else
If a(c) > 0 Then c = c + 1
End If
Next i
在文本框Text中輸入 “No1:X:123:Y:680:End”。執(zhí)行該程序段后,數(shù)組a(2)的值為(  )
A.1 B.2 C.3 D.123
解析 a數(shù)組存儲(chǔ)的是字符串中的數(shù)字及個(gè)數(shù),第二個(gè)數(shù)字串是123。
答案 D
29.有VB編寫的程序如下:
Dim a(0 To 9) As Integer,t as Long
t = Val(Text1.Text)
Do While t <> 0
a(t Mod 10) = 1
t = t \10
Loop
For i = 0 To 9
 x = x + a(i)
Next i
Text1中輸入10242048則程序執(zhí)行后x的值為(  )
A.1 B.2 C.5 D.10
解析 t Mod 10的值為t的個(gè)位數(shù),a(t Mod 10)=1不是計(jì)數(shù)語句,指只要出現(xiàn)過,該下標(biāo)對(duì)應(yīng)的數(shù)組元素為1,出現(xiàn)過的數(shù)有01248。
答案 C
30.以下VB程序段:
Dim n As Long ,t As Integer
Dim a(1 To 9) As Integer
n = Val(Text1.Text)
Do While n > 0
t = n Mod 10
If t Mod 2 = 0 Then a(t)=a(t)+1
n = n \10
Loop
List1.AddItem a(2)
若在文本框Text1中輸入26862612,則單擊命令按鈕Command1后,在列表框List1中顯示的值為(  )
A.2 B.3 C.4 D.7
解析 計(jì)n各個(gè)數(shù)字中的偶數(shù),a(2)指2的個(gè)數(shù)。
答案 B
31.有如下 VB 程序段:
For i = 1 To 10
b(i) = 0
Next i
For i = 1 To 5
For j = 1 To 10
If b(i) < a(j) Then b(i)=a(j):t=j(luò)
Next j
a(t) = 0
List1.AddItem Str(b(i))
Next i
其中數(shù)組元素a(1)到a(10)的值依次為“25,42,53,66,77,83,98,14,38,99”,執(zhí)行程序后,在列表框List1中依次輸出的數(shù)據(jù)是(  )
A.25 42 53 66 77 B.14 25 38 42 53
C.99 98 83 77 66 D.83 98 14 38 99
解析 找出每趟中的最大值,存儲(chǔ)在b數(shù)組中,同時(shí)把數(shù)組a該位置中的值賦值為0。
答案 C
32.有如下程序段:
s = 0
For i = 1 To 5
If a(i) Mod 2 = 1 Then s = s + 1
Next i
For i = 1 To 4
If a(i) Mod 2 = 0 Then
For j = 5 To i + 1 Step -1
If a(j) Mod 2 = 1 Then
   a(6) = a(i): a(i) = a(j): a(j) = a(6)
    Exit For
End If
Next j
End If
Next i
For i = s + 2 To 5
k = i - 1
For j = i To 5
If a(k) > a(j) Then k = j
Next j
If k <> i - 1 Then
a(6) = a(i - 1): a(i - 1) = a(k): a(k) = a(6)
End If
Next i
數(shù)組a(1)至a(5)中的數(shù)據(jù)分別為64,57,22,96,71,運(yùn)行該程序段,數(shù)組a中數(shù)據(jù)依次為(  )
A.22, 57, 64, 71, 96 B.71, 57, 22, 96, 64
C.71, 57, 22, 64, 96 D.57, 71, 22, 64, 96
解析 變量s中存儲(chǔ)的是a數(shù)組是奇數(shù),因此s=2。當(dāng)a(i)是偶數(shù)時(shí),與最后面第1個(gè)奇數(shù)互換。數(shù)組中值為71,57,22,96,64。接著對(duì)后面的偶數(shù)采用選擇排序進(jìn)行長(zhǎng)序排列。
答案 C
33.有如下VB程序段:
a(1)=1: a(2)=1
b(1)=1: b(2)=2
For i=3 To 5
a(i)=a(i-1)+a(i-2)
b(i)=b(i-1)+a(i)
Next i
執(zhí)行該程序段后,數(shù)組元素b(5)的值為(  )
A.12 B.8 C.5 D.4
解析 當(dāng)i=3 時(shí),a(3)=2 ,b(3)=3。當(dāng)i=4 時(shí),a(4)=3 ,b(4)=7。當(dāng)i=5時(shí),a(5)=5 ,b(5)=12。
答案 A
34.有VB程序段如下:
s = ”2019appreciate”: sum = 0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= ”a” And ch <= ”z” Then
m = Asc(ch) - Asc(”a”) + 1
a(m) = a(m) + 1
End If
Next i
For i = 1 To 10
If a(i) > 0 Then sum = sum + 1
Next i
數(shù)組a各元素的初始值都為0,執(zhí)行該程序段后,則變量sum的值為 (  )
A.10 B.7 C.4 D.3
解析 表達(dá)式Asc(ch) - Asc(”a”) + 1表示小寫字母ch在字母表中位置,a(m)表示該位置上字母的個(gè)數(shù)。只是統(tǒng)計(jì)小寫字母,且sum是統(tǒng)計(jì)a(i)大于0的個(gè)數(shù),因此是統(tǒng)計(jì)出現(xiàn)幾種小寫字母。且i只循環(huán)了60次。
答案 C
35.有如下VB程序段:
For i = 1 To n
a(i) = Mid(Text1.Text, i, 1)
Next i
Do While n > 1
If Asc(a(n)) >= Asc(a(n - 1)) Then m = 1 Else m = 2
b(m) = b(m) + 1
n = n - 1
Loop
數(shù)組b各元素的初始值都為0,文本框Text1的內(nèi)容為“2019Python”。執(zhí)行程序后,變量 b(1)的值為(  )
A.10 B.6 C.5 D.4
解析 數(shù)組a中存儲(chǔ)的是輸入的每個(gè)字符,從最后一個(gè)字母開始,如果大于等于他前面一個(gè),m=1,且統(tǒng)計(jì)的次數(shù)增加1。
答案 C
36.有如下VB程序段:
Private Sub Command1_Click()
Dim s As String, mw As String, ch As String
Dim temp As Integer
s = Text1.Text
temp = 0: mw = ” ”
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= ”0” And ch <= ”9” Then
temp = temp * 10 + Val(ch)
ElseIf ch = ”-” Then
mw = mw + Chr(temp Mod 27 - 1 + Asc(”A”))
temp = 0
Else
mw = mw + ch
End If
Next i
Text2.Text = mw
End Sub
在 Text1 里輸入“1931-572-185”(不包括雙引號(hào)),當(dāng)單擊按鈕后,文本框 Text2 里的輸出結(jié)果是(  )
A.HAD B.NE C.NEW D.ORG-
解析 語句temp = temp * 10 + Val(ch)的作用是取出字符串中的數(shù)字串。表達(dá)式 Chr(temp Mod 27 - 1 + Asc(”A”))的功能是把數(shù)字轉(zhuǎn)換成-1至26之間數(shù),再加上字母A的ASCII碼值。并將轉(zhuǎn)換后的數(shù)字表達(dá)為字母表中大字字母。但文本最后沒有“一”,因此只輸兩個(gè)字母。
答案 B
37.有如下 VB 程序段:
Private Sub Command1_Click()
Dim s As String, a As String, t As String
s = Text1.Text: t = ” ”
For i = 1 To Len(s)
a = Mid(s, i, 1)
If a >= ”0” And a <= ”9” Then
t = t + a
ElseIf a = ”!” Then
t = ” ”
ElseIf t <> ” ” Then
List1.AddItem t
End If
Next i
End Sub
執(zhí)行程序時(shí),在文本框 Text1 中輸入“12+34=46!789ok”(不包括雙引號(hào)),單擊按鈕 Command1 后,在列表框 List1 中顯示的結(jié)果是(  )

解析 當(dāng)取出的是數(shù)字時(shí),連接到t中,當(dāng)a = ”!”,清空t,其他情況輸出t。當(dāng)a=“+”,先輸出12,當(dāng)a=“=”,先輸出1234,當(dāng)a=“!”,t=””, 當(dāng)a=“o”和“k”,分別輸出789。
答案 C
38.有如下程序段:
st = Text1.Text
1x = Len(st)
m = 0: k = 1
For i = 2 To 1x
If Mid(st,i,1)>Mid(st,i-1,1) Then
k = k + 1
If k = 2 Then m = m + 1
Else
k = 1
End If
Next i
Text2.Text = Str(m)
若在Text1中輸入“abcddecaab”,則該程序段運(yùn)行后,文本框Text2中顯示的內(nèi)容是(  )
A.2 B.3 C.4 D.1
解析 從第2個(gè)字符開始,跟他前面的字符比較,如果連續(xù)大于或等于前面的字符2次,則計(jì)m加1。有遞增序列abcd、de、ab。
答案 B
39.執(zhí)行下列程序:
s = ”ERROR: Divisor must not be zero!”
flag = False: m = 0
For i = 1 To Len(s) 
ch = Mid(s, i, 1)
If ch >= ”a” And ch <= ”z” Then
If Not flag Then
     m = m + 1
    flag = True
End If
Else
flag = False
End If
Next i
Text1.Text = Str(m)
則該程序段運(yùn)行后,文本框Text1中顯示的內(nèi)容是(  )
A.4 B.5 C.6 D.19
解析 如果檢測(cè)到不是小寫字母,則flag為False,一旦小寫字母開頭,m加1,同時(shí)flag為True,第二個(gè)小字母時(shí),m不再加1。也就是說小寫字母開頭的字母有哪些。
答案 A
40.有如下VB程序段:
Ins = Text1.Text
n = Len(Ins): Outs = Mid(Ins, 1, 1)
i = 2
Do While Mid(Ins,i,1)>=Mid(Outs,i-1,1)
Outs = Outs + Mid(Ins, i, 1)
i = i + 1
Loop
Text2.Text = Outs
在文本框Text1中輸入“Happy2019”,執(zhí)行該程序段后,文本框Text2中顯示的是(  )
A.Ha B.Happy C.Happy29 D.Happy2019
解析 查找后面的字符大于或等于前面的字符。字符的順序?yàn)閿?shù)字小于大寫字母小于小寫字母。
答案 B
41.有如下VB程序段:
s = Text1.Text
t = Mid(s, 1, 1)
max = 0
For i = 2 To Len(s)
If Mid(s, i, 1) > Mid(s, i - 1, 1) Then
t = t + Mid(s, i, 1)
If Len(t) > max Then
    max = Len(t)
    ans = t
    Else
     t = Mid(s, i, 1)
End If
End If
Next i
Text2.Text = ans
在文本框Text1中輸入“11341358901”,執(zhí)行該程序段后,文本框Text2中顯示的是(  )
A.13435891 B.01
C.3589 D.13589
解析 當(dāng)后面字母大于前面字母,存入變量t中,因此t的長(zhǎng)度每次都是在增長(zhǎng)的,語句t = Mid(s, i, 1)是不可能執(zhí)行到的。最終變量ans中存儲(chǔ)的是只要后面比前面大的字符串。
答案 A
42.有如下程序段:
Function delStr(S As String, m As Integer) As String
Dim n As Integer : n = Len(S)
If m < 1 Or m > n Then delStr = ”輸入位置有誤!”
If m = 1 Then delStr=Mid(S,2,n-1)
If m < n Then delStr=Mid(S,1,m-1)+Mid(S,m+1,n-m)
If m = n Then delStr=Mid(S,1,n-1)
End Function
Private Sub Command1_Click()
Dim S As String : Dim i As Integer
S = Text1.Text
For i = 1 To 10 Step 2
S = delStr(S, i)
Next i
Text2.Text = S
End Sub
文本框Text1中輸入Happybirthday,執(zhí)行該程序段,文本框Text2中顯示的是(  )
A.a(chǎn)pybrtda B.a(chǎn)pbrhday
C.Happybirhday D.day
解析 共調(diào)用自定義函數(shù)5次,分別刪除第1,3,5,7,9個(gè)字母,這里的3指刪除第1個(gè)字母后的第3個(gè),即原來的1,4,7,10,13個(gè)字母。
答案 A
43.有如下 VB 程序:
s1 = Text1.Text
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If Asc(ch) >= 65 And Asc(ch) <= 90 Then
ch = Chr(65 + (Asc(ch) - 62) Mod 26)
End If
s2 = ch + s2
Next i
Label1.Caption = s2
已知大寫字母 A 的 ASCII 碼為 65。運(yùn)行上述程序,若文本框 Text1 中的內(nèi)容為“A1b2C3”,單擊命令按鈕 Command1,標(biāo)簽 Label1 中顯示的是(  )
A.A1b2C3 B.3C2b1A
C.D1b2F3 D.3F2b1D
解析 A的ASCII碼為65,Asc(ch)-62表示該字母將后移3位。因此程序的功能是只將其中的大寫字母后移3位,大小和數(shù)字不變,并將轉(zhuǎn)換的字符反向連接。
答案 D
44.某個(gè)進(jìn)行素?cái)?shù)判斷的VB程序段如下:
Private Sub Command1_Click()
Dim x As Integer
x = Val(Text1.Text)
Label1.Caption = Str(x) + prime(x, 2)
End Sub
Function prime(n As Integer, m As Integer) As String
If n = m Then
prime = ”是素?cái)?shù)。”
ElseIf n < 2 Or n Mod m = 0 Then
prime = ”不是素?cái)?shù)。”
Else
prime = prime(n, m + 1)
End If
End Function
在文本框Text1中輸入的值是123,并執(zhí)行程序后,自定義函數(shù)prime被執(zhí)行的次數(shù)是(  )
A.1次 B.2次 C.122次 D.123次
解析 本題考核的是遞歸算法。調(diào)用函數(shù)prime(123,2), prime(123,2)=prime(123,3),返加函數(shù)的值為”不是素?cái)?shù)。”,因此調(diào)用了2次。
答案 B
45.有如下 VB 程序段:
Dim a(1 to 6)as String
i = 1
Do While i <= 2
For j = i To 5
 If a(j)>a(j+1) Then
 t=a(j):a(j)=a(j+1):a(j+1)=t
 End If
Next j
Text1.Text = Text1.Text + ” ” + a(i)
i = i + 1
Loop
數(shù)組元素 a(1)到 a(6)的值分別為”9”,”121”,”58”,”34”,”78”,”21”,程序運(yùn)行后,文本框Text1 中顯示的內(nèi)容為(  )
A.9 34 B.9 21
C.121 34 D.121 21
解析 比較的對(duì)象是字符串變量。分類討論,當(dāng)i=1時(shí),把”9”換到最后,當(dāng)i=2時(shí),把”58”換到”34”的后面。
答案 C
46.有一個(gè)數(shù)組,采用冒泡排序,第一遍排序后的結(jié)果為:4,10,5,32,6,7,9,17,24那么該數(shù)組的原始順序不可能的是(  )
A.10,5,32,6,7,9,17,24,4
B.10,5,32,6,7,9,4,17,24
C.10,5,32,4,6,7,9,17,24
D.4,10,5,32,17,9,24,6,7
解析 第一趟排序的最值出現(xiàn)在第1個(gè)位置,因此是從小到大排序,從后往前冒泡。
答案 D
47.有如下VB程序段:
i = 1
Do While i <= 5
If i=1 Or a(i-1)<=a(i) Then
 i = i + 1
Else
  t=a(i):a(i)=a(i-1):a(i-1)=t
 i = i - 1
End If
Loop
數(shù)組元素a(0)到a(8)的初始值依次為“0,4,7,3,5,1,8,6,2”。執(zhí)行該程序段后,數(shù)組元素a(1)到a(8)的值分別是(  )
A.1 3 4 5 7 8 6 2
B.7 5 4 3 1 8 6 2
C.4 7 3 1 2 5 6 8
D.4 7 3 8 6 5 2 1
解析 該算法是對(duì)前5個(gè)數(shù)進(jìn)行升序排列。
答案 A
48.某排序算法的VB程序段如下:
For i = 1 To 2
For j = 1 To 6-2*i
If a(j)     t=a(j):a(j)=a(j+2):a(j+2)=t
End If
Next j
Next i
數(shù)組元素a(1)~a(6)的初始值依次為“15,13,44,38,26,7”,執(zhí)行該程序段后,數(shù)組a 元素的值分別為(  )
A.44,38,26,13,15,7 B.44,7,26,13,15,38
C.15,38,26,13,44,7 D.44,38,26,15,13,7
解析 排了兩趟,分別是奇數(shù)位和偶數(shù)位分別排序,降序。
答案 A
49.有如下程序段:
k = 0 : First = 1
Last = 5 : Flag = True
Do While Flag 
k = k + 1 
p = False
Flag = False 
For j = First To Last
  If a(j)>a(j+1) Then
   t=a(j):a(j)=a(j+1):a(j+1)=t
   Last = j : Flag = True
   If p = False Then
     First = j :p = True
   End If
  End If
   Next j
  If First <> 1 Then First = First - 1
  Last = Last - 1
Loop
數(shù)組元素a(1)到a(6)的值依次為“3,6,8,5,7,9”,經(jīng)過該程序段“加工”后,下列說法正確的是(  )
A.此過程中數(shù)據(jù)共交換了3次
B.此過程中該數(shù)組的數(shù)據(jù)共比較了7次
C.變量k的值為2
D.?dāng)?shù)組元素a(1)到a(6)的數(shù)未排成有序
解析 本題主要考查排序算法的優(yōu)化。flag表示是否有序的標(biāo)志,F(xiàn)irst表示最后一次前面交換的位置,如果前面的有序,下次First的位置開始比較。Last表示后面第一次交換的位置,后面Last+1至n肯定是序的,只要跟Last+1進(jìn)行比較比較就可以了。變量k表示排序的趟數(shù)。第1趟時(shí),8和5及7進(jìn)行互換,結(jié)果為3,6,5,7,8,9,Last=4,F(xiàn)irst=3,接著在第2和第3個(gè)數(shù)之間排序,實(shí)現(xiàn)5和6互換,Last=2,F(xiàn)irst=2。第3趟,才發(fā)現(xiàn)沒有數(shù)據(jù)交換,退出循環(huán),數(shù)組有序。因此共交換了3次,第1趟比較了5次,第2趟比較了2次,最后一趟比較1次,共8次。
答案 A
50.有如下VB程序段:
Dim s(1 To 6) As String
Text1.Text =” ”
For i = 1 To 5
 For j = i + 1 To 6
  If s(i)+s(j)t=s(j):s(j)=s(i):s(i)=t
  End If
 Next j
Next i
For i = 1 To 6
Text1.Text = Text1.Text + s(i)
Next i
如果程序運(yùn)行,一開始當(dāng)數(shù)組元素s(1)到s(6)的值依次為“4”、“343”、“312”、“12”、“246”、“121”,運(yùn)行該段代碼后,文本框Text1中顯示的內(nèi)容為(  )
A.434331224612121
B.434331224612112
C.343312246121124
D.121122463123434
解析 根據(jù)字符串連接進(jìn)行判斷是否交換。當(dāng)i=1,2,3時(shí),他均比后面的字符串大,因此不交換,“12”和“246”互換,“12”和“121”互換。
答案 B
51.有如下VB程序段:
i = 1: j = 8
Key = Text1.Text: f = False
Do While i <= j And Not f
m = Int((i + j) / 2)
If a(m) = Key Then
f = True
List1.AddItem Str(m) + ” is good luck!”
ElseIf a(m) > Key Then
j = m - 1
List1.AddItem Str(m)
Else
i = m + 1
List1.AddItem Str(m)
End If
Loop
If Not f Then List1.AddItem ”sorry!”

a(1)到 a(8)依次為 ”as”、”book”、”can”、”pig”、”see”、”you”、
”we”、 ”zero”。當(dāng)在文本框Text1中輸入以下哪個(gè)內(nèi)容時(shí),列表框list1中顯示的結(jié)果和別的三項(xiàng)不一樣 (  )
A .pear B.quick C.run D.sad
解析 A、B、C、D在數(shù)據(jù)均沒有找到,BCD均處于pig和see,因此輸出的結(jié)果是一樣的。
答案 A
52.某對(duì)分查找算法的VB程序段如下:
Key=val(Text1.text)
i = 1: j = 10
Do While i <= j
m = Int((i + j) / 2)
If a(m) = key Then Exit Do
If key>a(m) Then i =m+1 Else j=m–1
Text2.Text= Text2.Text+Str(a(m))
Loop
數(shù)組元素a(1)到a(10)的值依次為“5,12,20,29,36,40,55,58,66,74”,若在文本框 Text1 中輸入數(shù)據(jù),執(zhí)行該程序段,文本框 Text2 中顯示的內(nèi)容為:36,58,40,55,則 key 的值可能是 (  )
A.38或45 B.45或56
C.56或58 D.57或70
解析 采用二叉樹分析,如下圖所示:

最后查找的結(jié)點(diǎn)是7號(hào),有3種可能,大于6號(hào)但小于7號(hào),等于7號(hào),或大于7號(hào)但小于8號(hào)。
答案 B
53.有如下程序段:
i = 1: j = 10: key = Val(Text1.Text)
Do While i <= j
m = (i + j) \'2
If key < a(m) Then
j = m - 1
ElseIf key > a(m) Then
i = m + 1
Else
Do While m > 1 And a(m - 1) = key
    m = m - 1
Loop
Exit Do
End If
Loop
數(shù)組中a(1)到a(10)依次為“1,1,2,3,3,3,3,4,4,4”,若在文本框Text1中輸入值3,經(jīng)上述程序段執(zhí)行后變量m的值為(  )
A.7 B.6 C.5 D.4
解析 當(dāng)找到一個(gè)他前面的,又不是第一個(gè)跟key相等的數(shù),繼續(xù)往前找,即有多個(gè)相等的數(shù)時(shí),找一個(gè)最前面的相等的數(shù)。
答案 D
54.某對(duì)分查找算法的VB程序段如下:
k = Val(Text1.Text)
i = 1: j = 6:
f = False
Do While i <= j And Not f
m = (i + j) \2
If a(m) = k Then f = True
If a(m)>a(i) Then
  If a(i)<=k And kElse
  If a(m)End If
Label1.Caption = Label1.Caption + Str(a(m))
Loop
數(shù)組元素a(1)到a(6)的值依次為“58,66,72,24,35,40”,在文本框Text1中輸入的值為35,執(zhí)行該程序段,標(biāo)簽Label1中顯示的值是(  )
A.72 35 B.24 35
C.72 24 35 D.72 24 24 35
解析 該數(shù)據(jù)段前半段和后半段均升序,查找一個(gè)數(shù)時(shí),要判斷處于前半個(gè)升序段帶是后半個(gè)升序段。
i J m a(m)
1 6 3 72
2 6 4 24
3 6 4 24
4 6 5 35
答案 D
55.有如下VB程序段:
Key = Val(Text1.Text)
i = 1: j = 10
flag = False
s =” ”
Do While i <= j And Not flag
 mid1 = Int(i+(j-i)/3)
mid2=Int(j-(j-i)/3)
If Key = a (mid1) Then
  flag = True
Elseif Key   j = mid1 - 1
Elseif Key = a(mid2) Then
  flag = True
Elseif Key >a(mid2) Then
  i = mid2 + 1
Else
  i = mid1 + 1
  j = mid2 - 1
End If
s = s & ” ” & mid1 & ”:” & mid2
Loop
Text2.Text = s
已知數(shù)組 a(1 To 10)中的數(shù)據(jù)分別是 12、21、34、45、59、63、72、86、94、100,在文本框Text1中輸入34,程序運(yùn)行后文本框Text2 中顯示的內(nèi)容是(  )
A.4:7 1:2 B.4:7 1:2 3:3    
C.4:7 1:3 3:3 D.4:7 3:3
解析 利用列表法變量跟蹤。
i j mid1 a(mid1) mid2 a(mid2)
1 10 4 7 45 72
1 3 1 2 12 21
3 3 3 3 34 34
答案 B
56.?dāng)?shù)組a為一組正整數(shù),其奇數(shù)下標(biāo)的數(shù)組元素是升序排序的奇數(shù),偶數(shù)下標(biāo)的數(shù)組元素是升序排序的偶數(shù),依據(jù)對(duì)分查找思想,設(shè)計(jì)一個(gè)在數(shù)組 a 中查找數(shù)據(jù) Key 的程序。實(shí)現(xiàn)該功能的 VB 程序段如下:
Key = Val(Text1.Text): i = 1: j = 10
Do While i <= j
m = Int((i + j) / 2 + 0.5)
If Key Mod 2 + a(m) Mod 2 = 1 Then m = m - 1
If a(m) = Key Then
List1.AddItem ”找到了!”: Exit Do
ElseIf a(m) > Key Then
j = m - 2
Else
i = m + 2
End If
Loop
If i > j Then List1.AddItem ”未找到此數(shù)”
如果數(shù)組元素 a(1)到 a(10)的數(shù)據(jù)依次是“1,4,5,6,11,10,23,16,25,20”,
key 的值為5,則執(zhí)行上述程序段,查找的次數(shù)為(  )
A.4 B.3 C.2 D.1
解析 依次訪問的下標(biāo)為5,1,3,因此答案為查找3次。
答案 B
57.有如下 VB 程序段:
i = 1: j = 6
Key = Text1.Text
s = ” ”
Do While i <= j
m = Int((i + j) / 2 + 0.5)
s = s + ” ” + a(m)
If Key > a(m) Then
i = m + 1
Else
j = m - 1
End If
Loop
Text1.Text = s
數(shù)組元素 a(1)到 a(6)的值分別為”Beijing”、”Guangdong”、”Jiangsu”、
”Jiangxi”、”Shanghai”、“Zhejiang”,已按字典序排序。當(dāng) key 的值為“Zhejiang”時(shí),單擊命令按鈕Command1,文本框 Text1 中顯示的內(nèi)容為(  )
A.Jiangxi Zhejiang
B.Jiangsu Shanghai Jiangxi Zhejiang
C.Jiangxi Zhejiang Shanghai
D.Jiangsu Shanghai Zhejiang
解析 采用列表法。
i j m a(m)
1 6 4 Jiangxi
5 6 6 Zhejiang
答案 A
58.插值查找。在有序數(shù)組中查找值的 VB 程序段如下:
Dim a(1 To 10) As Integer
Dim i As Integer, j As Integer, m As Integer, flag As Boolean
Dim key As Integer, n As Integer,c As Integer,d As Integer
i=1:j=10:m=0:flag=False
key = Val(Text1.Text)
Do While i<= j And Not flag
 If keya(j) Then n=-1 : Exit Do ′未找到退出
 If a(i) <> a(j) Then
c=key-a(i):d=a(j)-a(i)
m=i+I(xiàn)nt(c*(j-i)/d)
 Else
m = i
 End If
 If key = a(m) Then flag=True:n = m
 If key > a(m) Then i = m + 1
 If key < a(m) Then j = m - 1
Loop
If flag = False Then n = -1
其中數(shù)組元素a(1)到a(10)分別為“15,25,37,40,63,70,87,90,92,96”,下列說法錯(cuò)誤的是(  )
A.如在文本框Text1中輸入10,程序執(zhí)行后,變量m取初值0,結(jié)果n=-1
B.如在文本框Text1中輸入25,程序執(zhí)行后,變量m的值變化為0→2,結(jié)果n=2
C.如在文本框Text1中輸入40,程序執(zhí)行后,變量m的值變化為0→3→4,結(jié)果n=4
D.如在文本框Text1中輸入78,程序執(zhí)行后,變量m的值變化為0→6→7,結(jié)果n=-1
解析 文本框Text1中輸入10,不在查找范圍。輸入25,c=10,d=81,m=2。輸入78,m的值變化為0→8→6。
答案 D
59.有如下程序段:
m = 1: n = 12
key = Val(Text1.Text)
mid = (m + n + 1) \2
Do While a(mid) <> key And m <= n
If a(mid) > key Then
n = mid - 1
left = left + 1
Else
m = mid + 1
End If
mid = (m + n) \2
sum = sum + 1
Loop
數(shù)組a(1)至a(12)中的數(shù)據(jù)分別為2,3,8,16,19,27,29,32,49,64,72,99,在文本框Text1中輸入19,運(yùn)行該程序段,則變量sum和left的值分別為(  )
A.1 1 B.1 2 C.2 1 D.2 2
答案 C
60.某對(duì)分查找算法的VB程序段如下:
Key = Val(Text1.Text) Mod 10
Text2.Text = ” ”
i = 1: j = 10: f = False
Do While i <= j And Not f
m = (i + j) \2
If a(m) \10 = Key Then
  search = m:f = True
ElseIf a(m) \10 < Key Then
  i = m + 1
Else
  j = m - 1
End If
Text2.Text = Str(m) + Text2.Text
Loop
數(shù)組元素a(1)到a(10)的值依次為:8,15,19,23,35,37,42,48,55,68,文本框Text1中輸入21,執(zhí)行該程序段,文本框Text2中顯示的是(  )
A.5 2 B.2 5
C.15 35 D.35 15
解析 要找的數(shù)是輸入數(shù)的個(gè)位數(shù),但查找的是十位數(shù)字,并按升序排列。
答案 D
61.將6個(gè)數(shù)據(jù)23,45,93,95,95,99依次存放在數(shù)組a(1)到a(6)中,在文本框Text1中輸入95,運(yùn)行下列程序段:
x=Val(Text1.Text)
i=1: j=6: n=6
f=False
Do While (i <= j) And (f=False)
 m=Int((i+j) / 2)
 If a(m)=x Then f=True
 If a(m) < x Then i=m+1 Else j=m - 1
Loop
If f=True Then
 For k=m To n-1
a(k)=a(k+1)
 Next k
 n=n - 1
 Label1.Caption=” ”
 For k=1 To n
Label1.Caption=Label1.Caption+Str(a(k))+” ”
 Next k
Else
Label1.Caption=”找不到該數(shù)”
End If
程序運(yùn)行后,Label1中顯示的內(nèi)容是(  )
A.23 45 93 95 95 95 99 B.23 45 93 95 99
C.23 45 93 99 D.23 45 93 95 95 95
答案 B
62.有如下程序段:
n = 0: i = 2: f = True
Do While i <= 6 And f
n = n + 1
f = False
For j = 6 To i Step -1
 If a(j) < a(j - 1) Then
t =a(j):a(j)=a(j-1):a(j-1)=t
Last = j
f = True
 End If
Next j
i = Last + 1
Loop
數(shù)組元素a(1)到a(6)的值依次為“10,16,82,36,51,87”,經(jīng)過該程序段“加工”后,下列說法不正確的是(  )
A.變量n 的值為5
B.此過程中數(shù)據(jù)共需比較8次
C.此過程中數(shù)據(jù)共需交換2次
D.?dāng)?shù)組元素a(1)到a(6)的值為升序
解析 f是每趟排序是否交換的標(biāo)志,如果沒有交換,則提前退出循環(huán)。變量n是排序的趟數(shù)。Last是記錄每趟最后一次交換的位置。當(dāng)i=2時(shí),比較5次,交換1次,Last=4。接下來i=5,比較2次,交換1次,Last=5。接下來i=6,比較1次,但未交換,退出循環(huán)。排了3趟。
答案 A
63.有如下 VB 程序段:
flag = True : i = 1
Do While i <= 6
x = Int(Rnd * 100) + 1
If flag Or x >50 Then
a(i)=x
flag = Not flag
i = i + 1
End if
Loop
執(zhí)行該程序段后,在下列選項(xiàng)中,a(1)~a(6)各元素值不可能的是(  )
A.52,95,46,74,77,83 B.50,55,46,70,21,97
C.62,78,57,61,69,50 D.31,54,48,72,50,82
解析 本題考查循環(huán)過程中變量的變化規(guī)律。通過 flag = Not flag 語句得知,F(xiàn)lag 的值是 True 和 False 交替出現(xiàn)的,當(dāng) i 的值為奇數(shù)是 flag 為 True,偶數(shù)時(shí) flag 為 False。當(dāng) i 為偶數(shù)時(shí),偶數(shù)時(shí) flag 為 False,只有>50 成立才會(huì)給數(shù)組 a 賦值,即數(shù)組 a 偶數(shù)位(a(2)、a(4)、a(6))上的值肯定大于 50。C 選項(xiàng) a(6)=50 不能出現(xiàn)。
答案 C
64.有如下VB程序段:
n=6
For i = 1 To 3
s = ” ”
For j = 1 To n \2
s = s + a(j) + ”-” + a(n - j + 1) + ”;”
Next j
t = a(n)
For j = n To 2 Step -1
a(j) = a(j - 1)
Next j
a(2) = t
Next i
若數(shù)組a(1)至a(6)的值分別為”1”、”2”、”3”、”4”、 ”5”、”6”,執(zhí)行該程序段后,變量s的值為(  )
A.”1-4;5-3;6-2;” B.”1-5;6-4;2-3;”
C.”1-3;4-2;5-6;” D.”1-2;3-6;4-5;”
解析 i表示循環(huán)次數(shù),共循環(huán)了3次。j和n - j + 1是對(duì)稱位置的關(guān)系。第1次s=”1-6;2-5;3-4;”,從最后1個(gè)元素開始,直到第2個(gè)元素,等于他前面的值,a數(shù)組中元素值依次為1、6、2、3、4、5;第2次s=”1-5;6-4;2-3;” 從最后1個(gè)元素開始,直到第2個(gè)元素,等于他前面的值,a數(shù)組中元素值依次為1、5、6、2、3、4;第3次s=”1-4;5-3;6-2;”。
答案 A


展開更多......

收起↑

資源預(yù)覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 丹东市| 灵寿县| 健康| 河西区| 三台县| 晋中市| 壶关县| 英超| 晋宁县| 垦利县| 广灵县| 皮山县| 永胜县| 丰顺县| 松原市| 西林县| 英德市| 防城港市| 明溪县| 泗水县| 巴南区| 和田市| 达日县| 洛川县| 延边| 满洲里市| 巍山| 墨脱县| 安乡县| 靖宇县| 扎囊县| 上饶县| 和田市| 高密市| 额敏县| 海林市| 清镇市| 江川县| 万源市| 宜都市| 莱阳市|