16.循環(huán)排序。任意生成10個[1,100]之間的整數(shù),編程實現(xiàn)將這10個數(shù)進行循環(huán)升序排序,即首尾相連后是一個升序序列。要求最小值位置不變,然后依次進行排列。程序運行界面如圖所示: 實現(xiàn)上述功能的VB程序如下,加框處的代碼有誤,請改正。 Dim a(1 To 10)As Integer,b(1 To 10)As Boolean Private Sub Command1_Click ( ) Dim min As Integer,pmin As Integer min=a(1):pmin=1 For i=2 To 10 If a(i)<=min Then min=a(i):pmin=i Next i b (pmin)=True pmin= If pmin=0 Then pmin=10 For i=1 To 8 k=pmin For j=1 To 10 If Then k=j Next j If k<>pmin Then temp=a(k):a(k)=a(pmin):a(pmin)=temp End lf b(pmin)=True pmin=pmin-1 If pmin=0 Then pmin=10 Next i 將排序后的結(jié)果輸出在列表框List2中,代碼略。 End Sub Private Sub Form Load ( ) 隨機生成10個[1,100]之間的整數(shù),存儲在數(shù)組a中,并初始化數(shù)組b為 False,按順序輸出在列表框List1中,代碼略。 End sub
。 (2)實現(xiàn)上述功能的程序如下,請在橫線處填上合適的代碼。 Dima(1To21)As Integer′該檔次賦分分值 Dimb(1To21)As Integer′該檔次人數(shù) Dim kh(1To200)As String′學(xué)生考號 Dim cj1(1To200)As Integer'學(xué)生的原始成績 Dim cj2(1To200)As Integer'學(xué)生賦分后的成績 Private Sub Form_Load( ?。?br />'從數(shù)據(jù)庫中讀取數(shù)據(jù),將21個等級的分值和人數(shù)存儲在數(shù)組a和數(shù)組b中,將學(xué)生的考號和原始成績存儲在數(shù)組kh和數(shù)組cj1中。最終根據(jù)原始成績從高到低排序后將kh和cj1輸出在列表框 ListI中,代碼略。 End sub Private Sub Commandl_Click( ) Dim k As Integer Dim flag As boolean'是否還可以對該檔次進行賦分 k=1:t=1:cj2(1)=a(1):flag=True For i=2 To 200 ′根據(jù)學(xué)生的原始成績按檔次進行賦分 If cjl(i)=oThen cj2(i)=0 Elsele①
Then'填空1處 t=t+1:cj2 (i)=a(k) Else flag=False End If If Not flag then'當(dāng)前檔次的分值已經(jīng)賦分完畢 Do While t>b(k) ②
:k=k+1'填空2處 Loop t=t+l:cj2(i)=a(k):③
'填空3處 End If Next i List2.AddItem″學(xué)生考號″+″″+″學(xué)生成績″ For i=1 To 200 List2.AddItem kh (i)+″″+Str(cj2(i)) Next i End sub