(加试题)编写一个成绩查询程序,输入要查找的分数,输出该分数的名次及同分人数,其算法是:用数组a存放不同的分值,数组m存储相同分数的人数,数组mc存储不同分数的名次。例如,数据库中有一组成绩(已按降序排列):98,95,95,92,90,90,87,按该算法,各数组值如下表所示:
i
| 1
| 2
| 3
| 4
| 5
|
a
| 98
| 95
| 92
| 90
| 87
|
m
| 1
| 2
| 1
| 2
| 1
|
mc
| 1
| 2
| 4
| 5
| 7
|
程序界面如下图所示,在文本框Text1中输入查询成绩,点击“查找”按钮,若找到,则输出该分数的名次和同分数的人数,若找不到,则输出“查无此分”。

程序代码如下,请在划线处填入合适的代码。
Dim n As Integer
Dim a(l To 1000) As Integer ’存放不同的分数值
Dim m(0 To 1000) As Integer ’存放相同分数的人数
Dim mc (0 To 1000) As Integer ’存放此分数的名次
Private Sub Form_Load()
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim tmp As Integer
Dim s As Integer
tmp = -1: n = 0
conn. Connectionstring = 〃provider=Microsoft. AC
A.OLEDB. 12. 0; data source=〃 & App. Path & 〃\mydb. accdb〃 |
conn. Open
Set rs. ActiveConnection = conn
rs.Open "Select * from score"
mc(0) = 1: m(0) = 0
Do While Not rs. EOF
s = rs. Fields (〃成绩〃)
If s = tmp Then ’当前读入分数与上一个分数相同
m(n) = __________
Else
n = n + 1
a(n) = s
m(n) = 1
mc(n) = ___________
End If
_____________
rs. MoveNext
Loop
End Sub
Private Sub Command1_Click0
Dim key As Integer, i As Integer, j As Integer, mid As Integer
key = Val (Text1.Text)
i = 1: j = n
mid = (i + j) \ 2
Do While i <= j And ____________
mid = (i + j) \ 2
If a(mid) < key Then
j = mid – 1
Else
i = mid + 1
End If
Loop
If a(mid) = key Then
Label2. Caption = 〃名次: 〃+ Str(mc (mid)) + 〃同分人数: 〃+ Str(m(mid))
Else
Label2. Caption = 〃查无此分〃
End If
End Sub