16.在 VB 的算術運算中,最大的實數類型 double 有效位數也只有 15 位。為了實現除法運算保留任意位數,小明根據除法原理,編寫了如下程序,功能如下:在文本框 Text1 中輸入被除數(正整數),在文本框 Text2 中輸入除數(正整數),在文本框 Text3 中輸入小數位數,單擊按鈕 Command1,在標簽 Label 中顯示除法運算的商。程序運行界面如圖所示,但加框處代碼有錯,請改正: Private Sub Command1_Click( ) Dim x,y As Integer Dim n As Integer Dim s As String x=Val(Text1.Text):y=Val(Text2.Text) n=Val(Text3.Text) s=s+Str(x\y) s=s+“。“ k=x Mod y For i=1To n
第一步:統計數組 a 中每個值 a(i)出現的次數,存入 b(a(i)),統計完成后數組 b 的情況如下:
下標
1
2
3
4
5
值
0
1
2
1
1
第二步:從前向后,依次使數組 b 中的每個值等于其與前一項之和,這樣數組 b(a(i))就代表 了數組 a 中小于或等于 a(i)的元素個數,完成第二步后數組 b 如下:
下標
1
2
3
4
5
值
0
1
3
4
5
第三步:從后往前,依次將數組 a 中元素填入數組 c 中,將數組元素 a(i)放在數組 c 的第 b(a(i))項,如元素 a(1)=5,應該放在數組 c 的 b(5)位(即 c(5))。每放一個元素就將 b(a(i))遞減;完成第三步后,數組 c 如下所示,已經完成升序排序,且相對位置不變,即原來 a ( 2)的值 3 仍然在 a(3)的值 3 前面。
( 2)請在橫線處填上相應代碼。 Dim a(1To 50)As Integer'存放學生的成績 Dim sname(1To 50)As String'存放學生姓名 Dim n As Integer Private Sub Command1_Click( ) Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=“+ App.Path+“\stu.jye.ai“ conn.Open strSQL=“SELECT*From stucj“ Set rs.ActiveConnection=conn rs.Open strSQL n=0 List1.AddItem“姓 名“&““&“成績“ Do While Not rs.EOF n=n+1 a(n)=rs.Fields(“cj“) sname(n)=rs.Fields(“xm“) List1.AddItem sname(n) &““& Str(a(n)) ①
Loop rs.Close conn.Close End Sub Private Sub Command2_Click( ) Dim i As Integer,k As Integer Dim b(0To 100)As Integer Dim c(1To 50)As Integer,c1(1To 50)As String'c 和 c1 作為臨時數組 For i=1To n b(a(i))=b(a(i))+1 Next For i=1To 100 b(i)=②
Next For i=n To 1Step-1 c(b(a(i)))=a(i) c1(b(a(i)))=sname(i) ③
Next For i=1To n'把臨時數組 c 和 c1 中的數據放入 a 和 sname 數組 a(i)=c(i) sname(i)=c1(i) Next List2.AddItem“姓 名“&““&“成績“ For i=1To n List2.AddItem sname(i) &““& Str(a(i)) Next End Sub