题库 高中信息

题干

(加试题)数组a中存储的是一组正整数,特征是:①以三个数为一组的话,每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依次递减;③数组中数的总个数为3的倍数。依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有错,请改正。
8
5
3
17
15
10
32
23
18
53
43
37
82
72
63
……
 
Private Sub Command1_Click()
Const n = 15
Dim a(1 To n) As Integer, search As Integer, key As Integer
Dim i As Integer, j As Integer, m As Integer
'读取一组正整数,按上述规则存入数组a中,代码略。
key = Val(Text1.Text)
i = 1: j = n: search = 0
Do While i <= j
m = (i + j) \ 2
If m Mod 3 <> 0 Then m= m -2   '(1) 把m调整到三个一组的最后一个数的位置
If key = a(m) Then
search = m : Exit Do
ElseIf key < a(m) Then
j = m - 3
ElseIf  key <= a(m - 2)  Then    '(2)
i = m + 1
ElseIf key = a(m - 2) Then
search = m - 2 : Exit Do
ElseIf key = a(m - 1) Then
search = m - 1 : Exit Do
Else
search = 0 : Exit Do
End If
Loop
If search <> 0 Then
Text2.Text = Str(search)
Else
Text2.Text = "找不到"
End If
End Sub
加框处代码应修改为:(1)【小题1】 (2)【小题2】
上一题 下一题 0.99难度 填空题 更新时间:2019-05-25 01:10:59

答案(点此获取答案解析)

同类题5

   (加试题)某校秋季运动会共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