有如下程序段:

数组元素a(1)到a(10)的值依次为“66,34,12,59,21,26,18,45,20,16”,经过该程序段“加工”后,数组元素a(1)到a(10)的值依次为(   )
A.66,12,16,34,18,59,21,26,20,45
B.12,16,18,20,21,26,34,45,59,66
C.66,59,45,34,12,26,21,20,18,16
D.12,16,18,66,34,20,59,21,26,45
当前题号:1 | 题型:选择题 | 难度:0.99
二分查找又称折半查找,是一种应用于有序数列的高效查找算法。下列数列中适合二分查找算法的是(   )
(1)11  99  5  17  2  39
(2)30  52  63  71  78  81
(3)67  62   68  6  15  15
(4)85  78  59  53  19  18
A.(3)(4)B.(2)(3)C.(1)(2)D.(2)(4)
当前题号:2 | 题型:选择题 | 难度:0.99
某对分查找算法的VB程序如下:
c=0:i=1:j=8
key=Val(Text1.Text)
f= False
Do While i<=j And Not f
m=Fix((i+j)/2+0.5)
c=c+1
If key=d(m) Then

f= True

Else If key>d(m) Then

j=m-1

Else

i=m+1

End If
Loop
数组元素d(1)到d(8)的值依次为“97,79,68,48,35,23,18,10”,若运行该程序段后,c的值为2,则文本框Text1中输入的值是(   )
A.68或18B.68或23C.79或23D.79或18
当前题号:3 | 题型:选择题 | 难度:0.99
某查找算法的VB程序段如下:
i=1:j=7:n=0
Key=Val (Text l. Text)
Do While i <=j

n=n+1

m=Int ((i+j)/2)

If Key=d(m) Then Exit Do

If Key <d(m) Then j= m-1 Else i =m+ l

Loop
数组元素d(1)到d(7)存放的数值依次为6,45,23,36,78,58,12,若该程序段运行结束后,n的值为2,则Key的值是(   )
A.58B.6或12C.45或58D.23或78
当前题号:4 | 题型:选择题 | 难度:0.99
把学生成绩由高到低排序后,按姓名在前、成绩在后的顺序依次存储在数组a中。例如(“张三”“97” “李四”“92” “王五”“87”,……)。设计一个VB程序,利用对分查找思想实现在数组a中查找成绩为Key的学生姓名。程序段如下:
i=1:j=n  'n代表学生的数量
Key=Val(Text1.Text)
Do While i<=j
m=
If Val(a(m))>Key Then i=m\2+1 Else j=m\2-1
Loop
List1.Clear
j=j+1
Do While i<=n

If Val(a(2*j))=Key Then List1.AddItem a(2*j-1)+""十a(2*j)

Else exit do

j=j+1

Loop
上述程序中方框处可能的语句是(   )
A.(i+j)\2B.(i+h)/2C.((i+j)12)*2D.((i+j)\2)/2
当前题号:5 | 题型:选择题 | 难度:0.99
查找最短26个字母字符串: 在文本框Text1中输入任意一串仅包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮 Command1,若无解,则在标签 Label1中输出“无解!”,反之程序在标签 Labell中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示。
查找最短26个字母字符串的算法可描述为:
1)确定初始右边界: 从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
2)调整子串左边界: 若左边界有重复的字母则表明该子串可缩短,故左边界可右移1位,……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
3)调整子串右边界: 子串右边界继续右移,在新子串符合条件后,记录并进行比较。重复2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。
    
实现上述功能的VB程序如下,请回答下列问题:
(1)对于字符串“ qbwcadsgeqbdatcy”,包括字母 abcde的最短字符串长度为___________(填数字)
(2)请在划线处填入合适的代码。
Const n=200
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, sl As String, res As String
Dim f(1 To 26) As Integer    '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_ Click

res=" "

s1=Textl. Text

For i=1 To Len(s1)

s(i)= _____________
Next i
k=0: pos=1: length=n
For i=1 To 26
f(i)=0
Next i
For i=1 To Len(sl)
If f(s(i))=0 Then k=k+1
f(s(i))=f(s(i))+1
Do While___________
f(s(pos))=f(s(pos))-1
If______________Then
k=k-1
If i-pos+1<length Then
length=i-pos+1
res=Mid (sl, pos, length)
L=pos
End If
End If
pos=pos+1
Loop
Next i
If res<>""Then

Text2 Text=res

Labell. Caption="最短长度: "+Str( length)+"开始位置: "+Str(L)Else

Labell. Caption="无解!"

End if

End Sub
当前题号:6 | 题型:None | 难度:0.99
某对分查找算法的VB程序段如下: 
Dim a(l to 6)As Integer
i=1: j=6: n=0
key= Val(Textl. Text)
Do While i<=j
n=n+1
m=(i+j)\2
If key=a(m) Then Exit Do 'Exit do为退出do循环
If key<a(m) Then
j=m-1
Else
i=m+1
LOOP
数组元素a(1)到a(6)的值依次为“1921,1927,1949,1998,2008,2019”。在文本框Text1中输入“1998”后运行该程序,则以上程序段运行结束后,下列说法正确的是(   )
A.变量i的值为3
B.变量j的值为5
C.变量m的值为3
D.变量n的值为3
当前题号:7 | 题型:选择题 | 难度:0.99
纪念品分组问题。某教师节晚会的纪念品分组规则如下:按纪念品价值进行分组,每组总价值不超过限定值w且最多包含两件,要求分组数最少。编写VB程序解决该问题,程序运行时,在文本框Text1中依次输入每件纪念品的价格(不超过w),以逗号分隔,在文本框Text2中输人限定值w,单击“分组”按钮,在标签 Label2上输出最少的分组数。程序运行界面如图所示。

(1)要使程序启动后,窗体的标题栏显示“纪念品分组”文字,可在 Form Load事件过程中添加语句   (单选,填字母:
A.Form1="纪念品分组"/B.Form1.Name="纪念品分组"/C.Form1. Caption="纪念品分组"/D.Fom1.Text="纪念品分组")。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码;并且加框处代码有错,请改正。
Private Sub Command1 Click()

Dim a(l To 1000), n As Integer, w As Integer,cnt As Integer

Dim i As Integer, j As Integer, t As Integer

Dim s As String, ch As String

Dim p As Integer, q As Integer

S= Textl. Text: w =Val(text2. Text): n=0

For i=1 To Len(s)

ch=Mid(s, i, 1)

If ch="."Then

n=n+1:a(n)=t: t=0

Else

t=____________________

 End If

Next i
For i=n To 2 Step-1

For j=1 To '②

If a(j)< a(j+1)Then
t=a(j):a(j)=a(j+1):a(j+1)=t

End If

   Next j
Next i
cnt= 0
p=1: q=n
Do While p<q

cnt=cnt+1

If _________________ Then

p=p+1:q=q-1

Else

p=p+1

End If

Loop
If p=q Then cnt=cnt+1
Label2 Caption- Str(cnt)
End sub
(3)若在文本框Text1中输入“50,30,100,70,80,40,50,20”,文本框Text2中输人“110”,单击“分组”按钮,标签Labe2中显示的内容是____________。
当前题号:8 | 题型:None | 难度:0.99
已知一无序数组a中的元素为“90,15,40,72,65,32,81,6”,通过引入数组b存储数组a元素按升序排列时的下标,b数组元素为“8,2,4,6,5,3,7,1”,使得a(b(1)≤a(b(2))≤a(b(3))≤......≤a(b(n)),从而对a数组中的数据进行对分查找。部分程序如下:
i=1:j=8:c=0
key= Val(Textl. Text)
Do While i<=j

m=Int((i+j)/2)

t=b(m)

c=c+1

If a(t)=key Then p=t:Exit Do

If a(t)<key Then

i=m+1

Else

j=m-1

End If

Loop
当文本框 Text1中输入的值为32时,程序运行结束后变量c的值为(   )
A.1B.2C.3D.4
当前题号:9 | 题型:选择题 | 难度:0.99
某查找算法的VB程序段如下:
k= Val(Text1.Text)
i=1:j=6:Label1.Caption="":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 k<a(m)Then j=m-1 Else i=i+1

Else

If a(m)<k And k<=a(j)Then i=i+1 Else j=j-1

End If
Label1 Caption=Label1 Caption+ Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输人的值为35,执行该程序段,标签 Label1中显示的值是(   )
A.72  35B.24  35
C.72  24  35D.72  24  24  35
当前题号:10 | 题型:选择题 | 难度:0.99