16.公司年會(huì),領(lǐng)導(dǎo)要小李編寫(xiě)一個(gè)小程序,用于抽獎(jiǎng),小李將參加年會(huì)的人員姓名、手機(jī)號(hào)保存在一個(gè)access數(shù)據(jù)庫(kù)中庫(kù)名:年會(huì)嘉賓.a(chǎn)ccdb 數(shù)據(jù)表名為:聯(lián)系人 程序設(shè)計(jì)的主要思路是:窗體裝入時(shí)讀出所有嘉賓的姓名和手機(jī)號(hào),保存在兩個(gè)數(shù)據(jù)中,從text1中取得要抽獎(jiǎng)的人數(shù),用隨機(jī)函數(shù)產(chǎn)生1~num間的數(shù)作為中獎(jiǎng)號(hào),從數(shù)據(jù)中讀出對(duì)應(yīng)的姓名和手機(jī)號(hào),手機(jī)號(hào)中間4位用“新年快樂(lè)”代替.已抽中過(guò)的姓名和手機(jī)號(hào)從數(shù)據(jù)中刪除,以防止重復(fù)中獎(jiǎng). Dim sname(1To 1000)As String‘用于保存嘉賓姓名 Dim phone(1To 1000)As String‘用于保存嘉賓手機(jī)號(hào) Dim num As Integer‘未抽獎(jiǎng)人數(shù) Private Sub Command1_Click ( ) Dim n As Integer‘?dāng)M抽獎(jiǎng)人數(shù) Randomize n=Val(Text1.Text) List1.Clear If
(1) Then For i=1To n k=Int(Rnd*num)+1 List1.AddItem Str(i)+““+sname(k)+““+
(2) For j=k To num sname(j)=sname(j+1) phone(j)=phone(j+1) Next j num=
(3) Next i Else List1.AddItem“剩余的數(shù)據(jù)不足!“ End If End Sub Rem 下列程序段用于從數(shù)據(jù)庫(kù)中讀取嘉賓的姓名和手機(jī)號(hào),分別保存在全局變量sname ( )和phone ( )兩個(gè)數(shù)組中,設(shè)嘉賓個(gè)數(shù)不超過(guò)1000個(gè). Private Sub Form_Load ( ) Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset conn.ConnectionString=“provider=microsoft.ace.oledB.12.0;data source=“& App.Path &“\年會(huì)嘉賓.a(chǎn)ccdb“ conn.Open Set rs.ActiveConnection=conn rs.Open“select*from 聯(lián)系人“ num=0 Do While Not rs.EOF And num<1000 num=num+1 phone(num)=rs.Fields(“聯(lián)系電話(huà)“) sname(num)=rs.Fields(“姓名“) rs.MoveNext Loop rs.Close conn.Close Set rs=Nothing Set conn=Nothing End Sub.
17.小張學(xué)習(xí)了冒泡排序后,覺(jué)得還可以再改進(jìn),用K指向要排序的數(shù)的頭部,用m指向要排序的數(shù)的尾部,每一輪先從前向后掃描k~m-1,比較相鄰若逆序則交換,找出本輪最大數(shù)放到本輪數(shù)據(jù)的尾部,再?gòu)暮蟮角皰呙枋O碌男蛄衜~k+1,比較相鄰若逆序則交換,找出本輪最小數(shù)放到本輪數(shù)據(jù)頭部.直到k=m結(jié)束程序.以下是改進(jìn)后的程序請(qǐng)補(bǔ)充完整. Dim n As Integer‘?dāng)?shù)字的個(gè)數(shù) Rem 以下程序段為產(chǎn)生n個(gè)[10,99]之間的隨機(jī)整數(shù)并在list1中顯示 Private Sub Command1_Click ( ) Randomize Time n=50 For i=1To n List1.AddItem Str(Int(Rnd*90)+10) Next End Sub Rem 以下程序段為從list1中取出數(shù)并進(jìn)行排序,最后在list2中顯示排序后的數(shù) Private Sub Command2_Click ( ) Dim a(50)As Integer Dim k As Integer,m As Integer,i As Integer,j As Integer For i=1To n a(i)=Val(List1.List(i-1)) Next i m=n:k=1 Do While①
J=m-1:m=1 For i=k To j If a(i+1)<a(i) Then t=a(i):a(i)=a(i+1):a(i+1)=t:m=i Next i j=②
k=1 For i=m To j Step-1 If a(i)<a(i-1)Then t=a(i):a(i)=a(i-1):a(i-1)=t:③