16.小明基于選擇排序算法編寫了一個(gè)VB程序,功能如下:某班有50個(gè)學(xué)生,從中選擇10個(gè)身高最高的同學(xué),要求被選的任何兩個(gè)人不能身高一樣(所給的數(shù)據(jù)保證能選10個(gè))。 實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。 Const n=50 Dim d(0 To n) As single,name(1 to n) as string '讀入50個(gè)學(xué)生的身高,依次存入d(1)…d(50),最高身高小于2,姓名存入name(1)…name(50) '代碼略 Private Sub Command1_Click ( ) Dim i As Integer,j As Integer,temp As single,k As Integer,r as string d(0)=2 For i=1 To 10 For j=i To n If d(j)<d(i-1)Then IfThen k=j End If End If Next j If k<>i Then temp=d(k):d(k)=d(i):d(i)=temp r=name(k):name(k)=name(i):name(i)=r End If Next i For i=1 To 10‘輸出被選的10個(gè)人的名字和身高。 List2.AddItem name(i) & d(i) Next i End Sub
17.酒店房間管理:酒店房間(房間數(shù)小于10000)編號(hào)按1、2、3…連續(xù)編號(hào),老板對(duì)于沒有出租的房子使用如下的方法來登記管理。連續(xù)的空房間,登記第一間的編號(hào)和連續(xù)的空房間數(shù),比如空房間1,2,6,7,8,10,則登記3條記錄,分別為(1 2),(6 3),(10 1),某旅客退房了,需要把這房子也登記上去,有四種情況需要處理: 1)上靠,例如退的房間號(hào)為3,則原來登記的3條記錄變成( 1 3),(6 3),(10 1); 2)下靠,例如退的房間號(hào)為5,則原來登記的3條記錄變成(1 2),( 5 4),(10 1); 3)上下不靠,例如退的房間號(hào)為4,則登記的記錄數(shù)變成4條(1 2),(4 1),(6 3),(10 1); 4)上下靠,例如退的房間號(hào)為9,則登記的記錄數(shù)變成2條(1,2),(6,5); 小王依據(jù)上述描述設(shè)計(jì)了如下VB程序。請(qǐng)回答下列問題: (1)當(dāng)?shù)怯浀挠涗浻?條,分別為(1,4),(6,2),(10,3),現(xiàn)在某旅客退掉5號(hào)房間,則登記的記錄變成 (2)請(qǐng)?jiān)跈M線處填入合適的代碼。 Const n=5000 Dim a(0 To n) As Integer'a(i)保存第i條記錄的開始房間號(hào) Dim b(0 To n) As Integer'b(i)保存第i條記錄的房間數(shù) Dim c As Integer,k As Integer,sp As Integer'k為原始記錄數(shù) '讀取原始k條記錄的數(shù)據(jù),依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代碼略 '為了程序處理方便,虛設(shè)了下面2條記錄 a(0)=0:b(0)=0:sp=k+1:a(sp)=10000:b(sp)=0 Private Sub Command1_Click ( ) Dim i As Integer c=Val(Text1.Text)'c為退掉的房間號(hào) i=1 Do While a(i)<c'查找房間c,應(yīng)該登記在某位置 i=i+1 Loop i=i-1 '下面為處理退房登記問題 If a(i)+b(i)=c Then If ①
Then'第4種情況,上下靠 b(i)=b(i)+1+b(i+1) For j=i+1 To sp-1 a(j)=a(j+1):b(j)=b(j+1) Next j sp=sp-1 Else'第1種情況,上靠 b(i)=b(i)+1 End If ElseIf c+1=a(i+1)Then'第2種情況,下靠 a(i+1)=c:b(i+1)=b(i+1)+1 Else'第3種情況,上下不靠 For j=②
a(j)=a(j-1):b(j)=b(j-1) Next j a(i+1)=c:b(i+1)=1:sp=sp+1 End If ‘下面為輸出登記的記錄,不包括虛設(shè)的兩條記錄 For i=1 to ③
List3.AddItem“第“& Str(i) &“記錄(“& Str(a(i)) &“,“& Str(b(i)) &“)“ Next i End Sub