7位学生的身高(单位:cm)从高到低依次为:178,177,175,172,170,165,162。用对分查找法找到178 的过程中,依次被访问到的数据是(  )
A.178B.172,175,178C.172,177,178D.172,175,177,178
当前题号:1 | 题型:选择题 | 难度:0.99

   (加试题)某校秋季运动会共n名运动员参赛,高老师编写了一个运动会号码牌查询软件,输入号码牌就能查询该号码牌所属的班级和运动员姓名。数组hm、bj、xm分别保存了本次运动会所有运动员的号码牌、所在班级和姓名的信息。第i个选手的号码牌保存在a(i)中,对应的班级和姓名保存在bj(i)和xm (i)中。

运动会号码牌查询程序界面如第16题图所示,在文本框Text1中输入号码牌,单击“查询”按钮(Command1),电脑就开始查找该号码牌的信息,如果找到对应的信息,就显示该运动员所属班级和姓名,如果没有找到,则显示“没有该号码牌的信息”。


相应程序如下,在程序①和②划线处填入适当的语句和代码,把程序补充完整。
(1)学生运动会数据存入的数据库文件是_________________;
(2)在程序画线①处应填入________________________;
(3)在程序画线②处应填入________________________。
Dim n As Integer  ‘运动员人数
Dim hm(1000) As Integer, bj(1000) As String, xm(1000) As String
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;DATA Source=" & App.Path & "\games.accdb"
conn.Open
strSQL = "SELECT * FROM Student"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
Do While Not rs.EOF '到记录集最后一条记录后退出循环
n = n + 1 '计数
hm(n) = rs.Fields("号码")
bj(n) = rs.Fields("班级")
xm(n) = rs.Fields("姓名")
rs.MoveNext     '移动到下一条记录
Loop
‘用冒泡排序法按a数组(号码牌)升序排列,显示在列表框List1中,代码略。
End Sub
Private Sub Command1_Click()   
Dim w As Integer
w = Val(Text1.Text)
pos =
If pos > 0 Then
Text2.Text = bj(pos)
Text3.Text = xm(pos)
Else
Text2.Text = "找不到"
End If
End Sub
Function Search(Key As Integer) As Integer
Dim i As Integer, j As Integer,
i = 1
j = n
Do While i <= j
found = Fix((i + j) / 2)
If Key = a(found) Then
Search = found
Exit Function
ElseIf      Then
j = found - 1
Else
i = found + 1
End If
Loop
Search = 0
End Function
当前题号:2 | 题型:填空题 | 难度:0.99
(加试题)用如下对分查找算法 VB.程序段,对数组 a 中 7 个有序数据“20,30,35,42,46,50,53”进行查找。
i = 1 : j = 7 : x = 45
Do While i <= j
m = (i + j) \ 2
If a(m) = x   Then   Exit Do   ‘Exit Do 退出 Do 循环 If a(m) > x Then
j = m - 1
Else
i = m + 1
End   If
Loop
执行完上述代码后,根据最终变量值判断下列表达式,其中成立的是
A.i = j
B. i = m + 1
B.j = m - 1
C.j = m
当前题号:3 | 题型:选择题 | 难度:0.99
(加试题)最大回文子串。回文字符串是具有回文特性的字符串:即该字符串从左向右读, 与从右向左读都一样.如:凤落梧桐梧落凤,abcba 等。“最大回文子串”是指一个字符串中长 度最大的回文字符串,其基本算法思想如下:
(1)每个回文都有一个“中心”,当回文字符数为奇数时,中间的那个字符就是回文中心;但是当回文的字符数为偶数时,回文的中心是最中间的那两个字符,且这两个字符相同。
(2)对任意一个字符或者相同的两个连续字符,我们都可以假设它为回文的“中心”,向它的 左右两边扩展出尽可能长的回文。对于每种假设,我们都能得到一个回文,而最长回文必定由 其中的某个假设中得到!
现编写一个 V
A.程序,在 Text1 中输入一串字符,单击“统计”按钮,在 Text2 中显示该字 符串中的最大的回文子串(长度相同时,输出最左边的子串)。请回答下列问题:
(1)当 Text1 中输入“123321344332423112113123”时,则输出的结果为_________。
(2)请在划线处填入合适的代码。
Dim n As Integer
Dim a(0 To 100) As String Private Sub Command1 Click() Dim s As String
Dim left As Integer, right As Integer, i As Integer
Dim max As Integer, m As Integer, b1 As Integer
'变量 b1 用于记录回文子串的左端起点 Text2.Text = ""
s = Text1.Text n = Len(s)
For i = 1 To n

a(i) = Mid(s, i, 1) Next i

max = 0: left = 0: right = 0
For i = 1 To n left = i
right = i
m = longest(left, right) If m > max Then
b1 = i - m \ 2 max = m
End If left = i
right = i + 1
If a(left) = a(right) Then
m = longest(left, right) + 1
If m > max Then
①________
max = m
End If
End If
Next i
For i = b1 To ②________

Text2.Text = Text2.Text + a(i) Next i

End Sub
Function longest(left As Integer, right As Integer) As Integer
Dim p As Integer p = 1
Do While left > 1 And right < n And ③________
left = left - 1 right = right + 1 p = p + 2
Loop
longest = p
End Function
当前题号:4 | 题型:填空题 | 难度:0.99
查找并删除重复数据的算法是基于顺序查找的优化,主要思路是把待查数据的起点元素设置成查找关键字,然后从后往前查找,通过结束时停留的数据位置来判断查找结果(即结束时若停留在数据序列的起点,表示数据序列中无重复数据;否则,存在重复数据,删除该数据后继续查找)。
编写VB程序,实现上述算法。程序功能如下:运行程序时,在列表框List1中显示数组a中的原始数据;单击“去重”按钮(Command1),查找数组a中的重复数据并删除,即相同的数据仅保留一个,并在列表框List2中输出去重后的数组a中的数据,同时在标签Label1中显示删除的数据总个数,运行效果如图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。
Const maxn = 10
Dim a(1 To maxn) As Integer
Private Sub Form_Load()
' maxn个数据存储在数组a中,并在列表框List1中显示
' 代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, n As Integer 'n用于存储当前查找的数组长度
Dim j As Integer, key As Integer   'key用于存储本次查找关键字的数据位置
key = 1: n = maxn
Do While key <= n

i = n

Do While  a(i) <> a(1)   '(1)

i = i - 1
Loop
If i = key Then   '找到重复数据,删除;未找到,设定下一查找关键字
key = key + 1
Else
For j = i To n - 1
a(j) = a(j + 1)
Next j
n = n - 1
End If
Loop
For i = 1 To n
List2.AddItem a(i)
Next i
Label1.Caption = "共删除重复数据:" &  Str(n)  & " 个" '(2)
End Sub
当前题号:5 | 题型:填空题 | 难度:0.99
小明利用Visual Basic编写了“查找第二小的数”的程序,界面如图所示。程序随机产生50个范围在1~1000之间的随机整数,单击“查找”按钮,能够在标签Label1中显示第二小的数字。

(1)为了在列表框List1中加入随机产生的数字,小明在程序中写了语句“List1.AddItem Str(a(i))”,其中AddItem 是List1对象的__________(单选,填字母:
A.属性/B.事件/C.方法)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer
Dim a(1 To 50) As Integer
Randomize
For i = 1 To 50
①___________
List1.AddItem Str(a(i))
Next i
If a(1) < a(2) Then

firstmin = a(1)

secondmin = a(2)

Else

firstmin = a(2)

secondmin = a(1)

End If
For i = 3 To 50
If a(i) < secondmin Then

②___________

secondmin = firstmin
firstmin = a(i)
Else
③____________
End If

End If

Next i
Label1.Caption = "第二小的数是" & Str(secondmin)
End Sub
当前题号:6 | 题型:填空题 | 难度:0.99
(加试题)对分查找的VB程序段如下:
key=78
i=1
j=8
k=1
Do While i<=j
m= fix((i+j)/2)
if d(m)=key Then
Label1.Caption=k
Exit do
End if
If d(m)<key Then
i=m+1
else
j=m-1
End If
k=k+1
Loop
数组元素a(1)到a(8)的值依次为“22,34,41,53,66,71,78,91”。若该程序执行后得到的结果是
A.1B.2C.3D.4
当前题号:7 | 题型:选择题 | 难度:0.99
关于对分查找和顺序查找算法的叙述,正确的是( )。
A.顺序查找需要排序,效率低;对分查找不需要排序,效率高。
B.顺序查找不需要排序,效率低;对分查找需要排序,效率高。
C.顺序查找不需要排序,效率高;对分查找需要排序,效率低。
D.顺序查找需要排序,效率高;对分查找不需要排序,效率低。
当前题号:8 | 题型:选择题 | 难度:0.99
数组a中的数据存放情况如下表:若用对分法查找数值8,需要查找( )次。
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
a[10]
a[11]
a[12]
2
5
8
10
21
23
36
37
41
47
52
55
 
A.5B.4C.3D.2
当前题号:9 | 题型:选择题 | 难度:0.99
设某汉字由7×7的0、1点阵图案组成。依照以下规则生成压缩码:连续一组数值,从汉字点阵图案的第一行第一个符号开始计算,按书写顺序由左到右,从上到下。压缩码第一个数表示起始的数字(例如0),第二个数表示连续有几个0,第三个数表示接下来连续有几个1,第四个数表示接下来连续有几个0,第五个数表示接下来连续有几个1,以此类推……

例如,以下汉字点阵图案:
0001000
0001000
0001111
0001000
0001000
0001000
1111111
对应的压缩码是031616431616137(第一个数是c(0或者1),表示一开始时的数字为0或1)。
(1)请将程序代码补充完整。
Private Sub Command1_Click()
Dim code As String, c As Integer, res As String,k As Integer
code=Text1.Text
k=0
res=""
c=Val(Mid(code,1,1))
For i=2 To Len(code)
For j=1 To _____________   '①
res=res+Str(c)
k=k+1
If k=7 Then
List1.AddItem res
k=0
res=""
End If
Next j
_______________   '②
Next i
End Sub
(2)现给出如下点阵图:

则压缩码为_________________________________。
当前题号:10 | 题型:填空题 | 难度:0.99