学校需要从A班(共50人)选拔一批学生集训准备比赛。小明为了减轻老师的工作量,编写了一个程序帮助老师解决这个问题,将所有学生的成绩排序后按照预设人数划取分数线。由于相同分数可能有多个学生,找出最接近预设人数的分数作为分数线。如果按照前分和按后分录取增加或减少的人数相同时则按高于录取人数进行录取,最后输出录取的学生名单。例如现要求选拔15个学生,排序后第14-20名的学生成绩相同,由于13比20更接近预录取人数,因此实际只录取13人。小明编写的VB程序如下,在文本框Text1中输入拟录取人数,单击“确定”按钮后,在标签Labe15和Labe16中输出录取人数和分数线,在List1中输出录取学生名单。
实现上述功能的代码如下。请回答下列问题:
(1)
观察代码,“确定”按钮的对象名是。
(2)
请在划线处填入合适的代码
Dim xh(0 To 100) As String .
Dim cj(0 To 100) As Integer
Const num = 50
Private Sub Form_ Load ()
‘本过程从数据库读取每位学生的学号和成绩存放在数组xh和cj中,代码略
End Sub
Private Sub Com1_Click ()
Dim i
As Integer, m As Integer, n As Integer, k As Integer, a As Integ
a =
Val(Text1.Text)
For
i=1 To num-1
k=
If
k<>i Then
t=cj(k):cj(k)=cj(i):cj(i)=t
s=xh(k):xh(k)=xh(i):xh(i)=s
End If
Next i
m=a-1:n=a+1
Do
While cj(m) = cj(a)
m=m-1
Loop
Do
While cj(n) = cj(a)
n=n+1
Loop
If
m<>0 And Then lq = m Else lq=n-1
Label5.Caption
= Str(lq)
Label6.Caption
= Str(cj(lq))
List1.AddItem “字号”+“学号”+“成绩”
For
i=1 To lq
List1.AddItem Str(i) +“ ”+xh(i)+Str(cj(i))
Next i
End Sub
Function imax(x As Integer, y As Integer) As Integer
Dim i As Integer,j As Integer
i=x
For
j=x+1 To y
If Then i=j
Next j
imax =
i
End Function
答案: 【1】com1
【1】imax(i, num)【2】a-m < n- 1- a或等价答案【3】cj(i) < cj(j)