16-对分-浙江省2022届高中信息技术选考选择题专项训练
对分
1.(2009A9)某对分查找算法的 VB 程序段如下:
Key = Val(Text1.Text): s = ""
i = 1: j = 10
Do While i <= j
m = (i + j) \ 2
If a(m) >Key Then
i = m + 1
s = s + "R"
Else
j = m - 1
s = s + "L"
End If
Loop
Text2.Text = s
数组元素 a(1)到 a(10)的值依次为“33,21,18,14,14,14,10,6,4,1”。在文本框 Text1 中输入 14 后,该程序段的输出结果与输入下列值的输出结果相同的是
A.10 B.16 C.19 D.3
【答案】B
2.(2009百校)某对分查找算法的VB程序段如下:
Key = Val(Text1.Text)
s = ""
i = 1: j = 10
Do While i <= j
m = (i + j) \ 2
s = s + Str(a(m) \ Key)
If a(m) > Key Then j = m - 1 Else i = m + 1
Loop
Text2.Text = s
数组元素a(1)到a(10)的值依次为“2,3,5,8,9,10,13,17,19,20”。在文本框Text1中输入待查找的整数,执行该程序段,则文本框Text2中显示的内容可能的是
A. 2 1 1 B. 0 1 1 1 C. 0 0 1 0 D. 0 2 0 1
【答案】B
3.(2010三校联考)在文本框Text1中输入19,执行如下程序后,label1上显示的内容是
Dim a(1 To 10) As Integer
a(1) = 2: a(2) = 13: a(3) = 15: a(4) = 16: a(5) = 19
a(6) = 25:a(7) = 29:a(8) = 36: a(9) = 39: a(10) = 54
i = 1: j = 10:s=0:left=0
key = Val(Text1.Text)
mid = (i + j + 1) \ 2
Do While a(mid) <> key And i <= j
1
If a(mid) > key Then j = mid - 1: left = left + 1 Else i = mid + 1
mid = (i + j) \ 2: s = s + 1
Loop
Label1.caption=str(s)+str(left)
A.3 1 B.1 3 C.2 1 D.3 1
【答案】D
4.(2010浙江十校)某对分查找算法的VB程序段如下:
'数组元素f(l)到f(10)赋初值为0,代码略
Key = Val(Text1.Text)
i = 1: j = 10
Do While i <= j
m = (i + j) \ 2
f(m) = 1
If a(m) >= Key Then j = m - 1 Else i = m + 1
Loop
整数数组元素a(1)到a(10)为升序序列,在文本框Text1中输入待查找数,执行该程序段后,下列选项中,f(1)到f(10)各元素值f的是
A.1,1,0,0,1,0,0,0,0,0 B.0,0,0,0,1,0,0,1,0,0 C.0,1,1,1,1,0,0,0,0,0 D.0,0,0,0,1,1,1,1,0,0
【答案】B
5.(2010浙江五校)某对分查找算法的 VB 程序段如下:
key=Val(Text1.text)
s = 0: i = 1: j = 11
Do While i <= j
m = (i + j) \ 2
If Key > a(m) Then
i = m + 1: s = 2 * s + 1
Else
j = m - 1: s = 2 * s
End If
Loop
Text2.Text = Str(s)
数组 a(1)到 a(11)的值依次为“2,13,24,31,35,44,47,50,61,88,101”,在文本框 Text1 中输入下列选项值, 所得输出结果与其他三项不相同的是
A .25 B.34 C.35 D.65
【答案】A
6.(2011 9+1)有如下VB程序段:
i = 1 : j = 6 : n = 0 : Key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
n = n + 1
If Key > a(m) Then j = m - 1 Else i = m + 1
1
Loop
a(1)到a(6)的值依次为“99,77,55,44,33,22”,下列说法正确的是
A.数组a中的元素若无序,也可用此程序段进行查找某个数字
B.无论key值是多少,循环结束后“i > j”一定成立
C.如果key值为55,那么该程序段运行后,变量n的值为1
D.如果key值为40,那么该程序段运行后,变量m的值为5
【答案】B
7.(2011杭州及周边重点学校期中联考)有如下VB 程序段:
i=1: j=8 : k=0
Key=Int(Rnd*50) *2+3
Do While i<=j
m= (i+j+1) \2
If Key=a(m) Then
Exit Do
ElseIf Key <a(m) Then
i=m+1 : k=k+1
Else
j=m-1 : k=k-1
End If
Loop
Text1.Text=Str(k)
数组元素a(1)到a(8)的值依次为“88 ,66,50,46,24 ,20,18,6”,执行该程序段后,k的值不可能是( )
A. -1 或-2 B. 1 或-1 C. -3或2 D. -2或3
【答案】C
8.(2011湖丽衢三地联考)现有一个整数型数组 a(下标 1 到 n),其值的规律是先升序,中间相等,之后降序。 现要找到降序的拐点,如数列 2、4、11、15、15、15、14、11、10、8,其降序的拐 点为最后一个 15 所在的位置,即 6 号位置。部分程序如下:
L = 1: R = n
Do While L <= R
m = (L + R) \ 2
If ① Then
R = m - 1
Else
L = m + 1
End If
Loop
Text1.Text = ②
为实现上述功能,则程序中①②处填写的代码是
A.① a(m) > a(m + 1) ② Str(R) B.① a(m) > a(m + 1) ② Str(L)
C.① a(m) >= a(m + 1) ② Str(R) D.① a(m) >= a(m + 1) ② Str(L)
【答案】B
1