16.對學生數據排序,排序后男生在前,女生在后,(“M”表示男,“F”表示女),男生和女生分別按“姓名”升序排序。編寫一個 VB 程序,功能如下:在列表框 list1 中顯示排序前學生數據,單擊“排序”按鈕 Command1,在列表框 list2 中顯示排序后的結果。程序運行界面如圖所示。 實現上述功能的 VB 程序如下,但加框處代碼有錯,請改正。 Const n=10 Dim xm(1 To n)As String,xb(1 To n)As String Function adj(sAs String,n As Integer) As String '函數功能:在字符串 s 后添加若干個空格,使其長度變為 n,代碼略。 End Function Private Sub Form1_Load ( ) '讀取 10 個學生姓名和性別分別存數組 xm、xb, 并在列表框 list1 中顯示,代碼略。 End Sub Private Sub Command1_Click ( ) Dim i As Integer,jAs Integer i=1 Do While i<=n-1 '(1) Do While j>=i+1 If xb(j)=“M“And xb(j-1)=“F“Or Then'(2) temp=xm(j):xm(j)=xm(j-1):xm(j-1)=temp temp=xb(j):xb(j)=xb(j-1):xb(j-1)=temp End If j=j-1 Loop i=i+1 Loop For i=1 To n List2.AddItem adj(xm(i),12)+““+xb(i) Next i End Sub
。 (2)請在劃線①②③處填入合適的代碼,讓程序能實現計算功能。 Private Sub Command1_Click ( ) Dim a(1 To 100)As Single,b(0 To 100)As String Dim s As String,c As String Dim sz As Integer,i As Integer,k As Integer s=Text1.Text:k=0 For i=1 To Len(s) c=Mid(s,i,1) If c>=“0“And c<=“9“Then sz=0 Do While c>=“0“And c<=“9“ sz=①
i=i+1 c=Mid(s,i,1) Loop k=k+1:a(k)=sz:b(k)=c End If Do While k>1 And ②
If b(k-1)=“+“Then a(k-1)=a(k-1)+a(k) If b(k-1)=“-“Then a(k-1)=a(k-1)-a(k) If b(k-1)=“*“Then a(k-1)=a(k-1)*a(k) If b(k-1)=“/“Then a(k-1)=a(k-1)/a(k) b(k-1)=b(k) k=k-1 Loop Next i Label1.Caption=“運算的結果是:“+Str(a(1)) End Sub Function yxj(x As String) As Integer If x=“*“Or x=“/“Then yxj=1 ElseIf x=“+“Or x=“-“Then yxj=2 Else ③