题目

(加试题)编写一个成绩查询程序,输入要查找的分数,输出该分数的名次及同分人数,其算法是:用数组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(1 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. ACE.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 ① ② ③  ④ 答案:【1】m(n)+ 1【2】m(n-1) + mc(n-1)【3】tmp=s【4】a(mid) <> key
信息技术 试题推荐
最近更新