16.小吳為了探究冒泡排序過(guò)程中數(shù)據(jù)的“移動(dòng)”情況,編寫(xiě)了一個(gè)VB程序,功能如下:在列表框List1中顯示排序前數(shù)據(jù)(存儲(chǔ)在數(shù)組a中),在文本框Text1中輸入初始位置(即下標(biāo)值),單擊“排序”按鈕Command1后,在標(biāo)簽Label1中顯示指定初始位置的數(shù)據(jù)在排序過(guò)程中的位置變化情況,排序后的數(shù)據(jù)顯示在列表框List2中。程序運(yùn)行界面如圖所示。 實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。 Dim a(1To 8)As Integer Dim n As Integer Private Sub Form_Load ( ?。?br/>'n=8,排序前的8個(gè)數(shù)據(jù)存儲(chǔ)在數(shù)組a中,并在列表框Listl中顯示 '代碼略 End Sub Private Sub Command1_Click ( ) Dim i As Integer,j As Integer,k As Integer Dim pos As Integer'變量pos存儲(chǔ)指定數(shù)據(jù)的位置(即下標(biāo)值) Dim s As String'變量s存儲(chǔ)pos變化情況 s=Text1.Text pos=Val(Text1.Text) For i=1To n-1 For j=n To i+1Step-1 If a(j)<a(j-1)Then ‘(1) a(j-1)=a(j) a(j)=k '如果pos位置的數(shù)據(jù)參與交換,則更新pos值,記錄pos變化情況 If pos=j Then pos=j-1 s=s+”→”+Str(pos) ‘(2) pos=j s=s+”→”+Str(pos) End If End If Next j Next i Label1.Caption=”位置變化情況:”+s For i=1To n List2.AddItem Str(a(i)) Next i End Sub
。 (2)請(qǐng)?jiān)跈M線處填入合適的代碼。 Dim sName(1To 50)As String'存放學(xué)生姓名 Dim sScore(1To 50)As Integer'存放學(xué)生分?jǐn)?shù) Dim recCount As Integer'存放學(xué)生人數(shù) Private Sub Form_Load ( ?。?br />'本過(guò)程從數(shù)據(jù)庫(kù)中讀取學(xué)生數(shù)據(jù),存儲(chǔ)在相應(yīng)的變量中,并在List1中顯示 '代碼略 End Sub '整數(shù)轉(zhuǎn)換成長(zhǎng)度固定的字符串 Function ads(x As Integer,n As Integer) As String Dim sx As String,nx As Integer,i As Integer sx=Str(x):nx=Len(sx) For i=1To n-nx sx=””+sx Next i
①
End Function Private Sub Command1_Click ( ?。?br />Dim A(0To 100)As Integer'存放每個(gè)分?jǐn)?shù)的個(gè)數(shù) Dim B(0To 100)As Integer'存放每個(gè)分?jǐn)?shù)的名次 Dim mc As Integer,score As Integer,i As Integer For i=0To 100 A(i)=0 Next i For i=1To recCount'計(jì)算每個(gè)分?jǐn)?shù)的個(gè)數(shù) ②
Next i mc=1 For i=100To 0Step-1'計(jì)算每個(gè)分?jǐn)?shù)的名次 If A(i)<>0Then B(i)=mc ③
End If Next i List2.Clear List2.AddItem”姓名 分?jǐn)?shù) 名次” List2.AddItem”--------------” For i=1To recCount score=sScore(i) mc=B(sScore(i)) List2.AddItem sName(i)+ads(score,5)+”第”+ads(mc,3)+”名” Next i End Sub