16.編寫VB程序,功能是根據(jù)各城市初賽成績(城市數(shù)為偶數(shù),每個城市初賽人數(shù)≥3)前3名的選手進(jìn)行復(fù)賽分組。其中各城市選手編號由城市代碼+編號組成,例如“A001“表示A市001號,復(fù)賽分組規(guī)則如表所示:
第1組 |
第2組 |
第3組 |
…… |
第7組 |
第8組 |
第9組 |
A市第1名 |
A市第2名 |
A市第3名 |
…… |
E市第1名 |
E市第2名 |
E市第3名 |
B市第3名 |
B市第2名 |
B市第1名 |
…… |
F市第3名 |
F市第2名 |
F市第1名 |
程序運行界面如圖所示:
(1)若存儲初賽成績的數(shù)據(jù)表中增加一條記錄“選手編號為B058,選手成績?yōu)?7.6”,重新運行該程序讀取數(shù)據(jù),點擊“分組”后,與選手“A001”分到一組進(jìn)行復(fù)賽的選手編號為
。
(2)實現(xiàn)上述功能的VB程序如下,請在橫線處填入合適的代碼。
Const nc=6′nc個城市參賽
Dim result(1 To 1000)As Single′存儲選手的初賽成績
Dim player(1 To 1000)As String′存儲各城市選手編號
Dim n As Integer′存儲初賽總?cè)藬?shù)
Dim record(1 To 3*nc)As Integer
Dim i As Integer
Private Sub Form_Load
′從數(shù)據(jù)庫中讀取初賽選手編號、選手成績,存人數(shù)組player,result中,代碼略
End Sub
Private Sub Command1_Click
Dim group(1 To nc)As Integer
Dim i As Integer,k As Integer,w As Integer
For i=1 To nc
group(i)=0
Next i
For i=1 To n
k=
group(k)=group(k)+1
If group(k)=1 Then
record((k-1)*3-1)=i
Else If group(k)<=3 Then
record((k-1)*3+w)=i
Else
If result(i)>result(record((k-1)*3+3))Then
w=find(3,k)
record((k-1)*3-w)=i
End If
End If
Next i
For i=1 To 3*nc
List1.AddItem player(record(i))&“選手成績:“&result(record(i))
Next i
List2.AddItem“選手編號“&“Vs“&“選手編號“
For i=1 To nc/2
For j=1 To 3
t=(i-1)*6
List2.AddItem player(record(t+j))&“VS“&.player(record(t+7-j))
Next j
Next i
End Sub
Function find(m As Integer,k As Integer) As Integer
Do While m>1
If
Then
record((k-1)*3+m)=record((k-1)*3+m-1)
m=m-1
Else
Exit Do
End If
Loop
Find=m
End Function