12.某排序算法思想如下:若有11個桶,編號從0~10,隨機(jī)產(chǎn)生多個整數(shù),每產(chǎn)生一個整數(shù)時,就在以該整數(shù)位編號的桶中放一面小旗子,最后只要按順序數(shù)每個桶中有幾面小旗子,就能得到這幾個整數(shù)的有序排列.例如2號桶中有1個小旗子,表示2出現(xiàn)了一次;3號桶中有1個小旗子,表示3出現(xiàn)了一次;5號桶中有2個小旗子,表示5出現(xiàn)了兩次;8號桶中有1個小旗子,表示8出現(xiàn)了一次,按桶有編號順序讀出旗子數(shù)量,沒有旗子的桶略過,得到有序整數(shù)為“2,3,5,5,8”. 為此,小李編寫了一個VB程序,功能如下:運(yùn)行程序,窗體加載時隨機(jī)產(chǎn)生6個[0,9]的隨機(jī)整數(shù),并在列表框List1中依次顯示排序前數(shù)據(jù),單擊“排序”按鈕Commandl,在列表框Lixt2中顯示經(jīng)過上述排序算法后的數(shù)據(jù),運(yùn)行結(jié)果如第如圖2所示. 實(shí)現(xiàn)上述功能 的VB代碼如下,但加框代碼有錯,請改正. Dim a(10)As Integer’數(shù)組a表示桶的編號,如a(0)表示第0號桶 Private Sub Commandl-Click( ) Dim i As Integer,j As Integer For i=0 to 10 For j=1 to List2.AddItem CStr(i) Next j Next i End Sub Private Sub Form-Load Dim i As Integer Randomize For i=0 to 10’將數(shù)組初始化為0 a(i)=0 Next i For i=1 to 6’產(chǎn)生6個[0,9]的隨機(jī)數(shù) t=Int(Rnd*10) a(t)=’第t桶中小旗子數(shù)量加1 List1.AddItem CStr(t) Next i End Sub.
13.小李編寫一個統(tǒng)計學(xué)生選考科目的VB程序,算法的基本思想是:檢查每位學(xué)生選課組合的編碼是否有效,對有效選擇結(jié)果進(jìn)行科目統(tǒng)計,根據(jù)各科次占有效人數(shù)的百分率求出各科排名。程序運(yùn)行時,單擊“顯示”按鈕Commmad1,學(xué)生選課數(shù)據(jù)顯示在列表框list1中,各科編號及對應(yīng)科目名稱顯示列表框list2中,單擊“統(tǒng)計”按鈕Commmad2,選課結(jié)果按各科百分率由高到低顯示在列表框list3中,程序運(yùn)行結(jié)果如圖所示。 實(shí)現(xiàn)上述功能的VB程序如下,請回答下列問題: (1)學(xué)生選課的編碼數(shù)據(jù)存儲在數(shù)據(jù)表中,其字段名為。 (2)請在橫線處填入合適的代碼。 Dim ach(1To 500)As String'存儲各學(xué)生選課編碼 Dim bno(1To 10)As Integer'存儲各科目編號 Dim bname(1To 10)As String'存儲各科目名稱 Dim bnum(1To 10)As Integer'存儲各科目被選次數(shù) Dim bmc(1To 10)As Integer'存儲各科目被選的名次 Dim n As Integer,num As Integer Private Sub Command1_Click ( ) Dim i As Integer,km As String km=“物理化學(xué)生物政治歷史地理技術(shù)“ Dim cn As New ADODB.Connection,rs As New ADODB.Recordset,sql As String cn.Open“provider=Microsoft.Jet.jye.ai.4.0;Data Source=“+App.Path+“\students.jye.ai“ rs.Open“select*from choose“,cn Do While Not rs.EOF n=n+1:ach(n)=rs.Fields(“subject“):rs.MoveNext Loop rs.Close cn.Close Set rs=Nothing Set cn=Nothing For i=1To 7 bno(i)=i bname(i)=Mid(km,(i-1)*2+1,2) List2.AddItem Str(bno(i))+“---“+bname(i) Next i End Sub Private Sub Command2_Click ( ) Dim i As Integer,j As Integer,k As Integer Dim c As String,per As Integer For i=1To n If check(ach(i))=True Then For j=1To 3 c=Mid(ach(i),j,1) bnum(Val(c))=① Next j num=num+1 End If Next i i=1 Do While i<=7'該循環(huán)得到各學(xué)科被選人數(shù)的名次 bmc(i)=1 For j=1To 7 If bnum(j)>bnum(i) Then ② Next j i=i+1 Loop For i=1To 7 For j=1To 7 If ③ Then per=Int(bnum(j)*100/num*100)/100 List3.AddItem Str(bno(j))+“---“+bname(j)+“---“+Str(per)+“%“ End If Next j Next i End Sub Function check(s As String) As Boolean '代碼略!若學(xué)生選科代碼有效,函數(shù)返回True,否則返回False End Function