16.小李要給全班學生拍合照,要求所有學生站成一排,中間高,兩端低。小李 采用如下排隊方法:按身高信息從高到低排序,讓身高第一位的同學單獨站出來,身高第二位同學站在他的左手邊,身高第三位同學站在他的右手邊,再依次向兩端安排其他人。每個 學生的學號與身高信息已存入數據庫中。小李編寫了 VB 程序,從數據庫中讀取學號和身高 信息,在“原始信息”下方的列表框 List1 中顯示,單擊“排隊”按鈕 Command1,在“排 好的隊形”下方的列表框 List2 中顯示排好的隊形。程序界面如圖所示: 實現上述功能的 VB 程序如下,但加框處代碼有錯,請改正。 Const maxn=100 Dim id(1To maxn) As Integer'存儲每個學生的學號 Dim tall(1to maxn) As Single'存儲每個學生的身高 Dim n As Integer'存儲學生的個數 Private Sub Form_Load ( ?。?br/>'從數據庫得到學生的總人數 n '從數據庫讀取學號信息,并存入 id 數組中 '從數據庫讀取身高信息,并存入 tall 數組中 '在列表框 List1 中顯示學號與身高 End Sub Private Sub Command1_Click ( ) Dim a(1 To maxn) As Integer'存儲排好隊形的學號 Dim b(1 To maxn) As Single'存儲排好隊形的身高 Dim i As Integer,j As Integer Dim tl As Integer,tr As Integer,mid As Integer Dim tmp1As Single,tmp2As Integer For i=1To n-1 For j=n To i+1Step-1 IfThen tmp1=tall(j):tall(j)=tall(j-1):tall(j-1)=tmp1 tmp2=id(j):id(j)=id(j-1):id(j-1)=tmp2 End If Next j Next i If n Mod 2=0Then'根據總人數的奇偶性,確定隊形的中間位置 mid=n\2+1 Else mid=(n+1)\2 End If '身高第一位的同學,安排在隊形的中間位置 a(mid)=id(1)b(mid)=tall(1)tl=mid-1 tr=mid+1 For i=2To n IfThen a(tr)=id(i) b(tr)=tall(i) tr=tr+1 Else a(tl)=id(i) b(tl)=tall(i) tl=tl-1 End If Next i List2.AddItem“位置“+“學號“+“身高“For i=1To n List2.AddItem Str(i)+““+Str(a(i))+““+Str(b(i)) Next i End Sub
17.火柴棍可以拼成數字 0~9,拼法如圖 a 所示。 輸入火柴棍的數量 n(n≤24),計算可以拼出多少個“A+B=C”的等式?要求: ①加號與等號各自需要兩根火柴棍。 ②A、B、C 為非負的整數,且該數非零時,最高位不能是 0。 ③如果 A≠B,則 A+B=C 與 B+A=C 視為不同的等式。 ④n 根火柴棍必須全部用上。 小明發現,數字 1 用的火柴棍最少,24 根火柴棍全部用上的話,能拼出最大的整數 A 或 B 不超 1111,C 不超過 2222.他編寫了一個 VB 程序,在文本框 Text1 中輸入火柴棍的數 量,單擊“統計”按鈕 Command1,在文本框 Text2 中輸出“A+B=C”的方案數,程序界面如圖 b 所示。 實現上述功能的 VB 程序如下,請回答下列問題: (1)請在橫線處填入合適的代碼。 Private Sub Command1_Click ( ?。?br />Dim a(0 To 2222)As Integer'存儲每個整數需用的火柴棍數 Dim n As Integer,ans As Integer Dim i As Integer,j As Integer n=Val(Text1.Text) For i=0To 2222a(i)=0 Next i '得到 0~9 中每個數字需用的火柴棍數 a(0)=6:a(1)=2:a(2)=5:a(3)=5:a(4)=4 a(5)=5:a(6)=6:a(7)=3:a(8)=7:a(9)=6 n=①
'去掉等號與加號后,剩余的火柴棍數量 For i=10To 2222'計算出 10~n 中每個數字需用的火柴棍數 a(i)=a(②
)+a(i Mod 10) Next i ans=0 '枚舉 0~n 中任意兩個數,判斷是否符合 A+B=C 的火柴棍數量 For i=0To 1111 For j=0To 1111 If a(i)+a(j)+a(③
)=n Then ans=ans+1 End If Next j Next i Text2.Text=Str(ans) End Sub (2)輸入的火柴棍的數量為 14 時,方案數為