16.一個正整數(非素數)可以表示成它的質因子(“1”與其本身除外)的乘積。給出任一個整數N,求出它所有的質因子以及每個因子出現的次數,并顯示乘積表達式。例如:整數120=2×2×2×3×5,所以它的質因子是2,3,5,次數分別是3次,1次,1次。 用Visual Basic編寫一個程序求質因子,功能如下:在文本框Text1中輸入一個數,單擊“計算”命令按鈕Command1,在列表框中顯示該數的質因子及相應的次數,并顯示乘積表達式。程序運行時的界面如圖所示。 實現上述功能的VB程序如下,但加框處代碼有錯,請改正: Private Sub Command1_Click ( ) Dim a(1 To 100)As Integer'數組a存放該整數的質因子出現的次數 Dim i As Integer,m As Integer,n As Integer,k As Integer,s As String n=Val(Text1.Text) m=n k=Int(Sqr(n)) For i=2 To k a(i)=0 Next i For i=2 To k Do While n Mod i=0
a(k)=a(k)+1'
① n=n\i If
n=1
Then s=s+Str(i)+″×″Else s=s+Str(i):Exit For'② Loop Next i List1.AddItem“質因子″&″″&″次數″ For i=2 To k If a(i)<>0 Then List1.AddItem Str(i) &″″& Str(a(i)) Next i List1.AddItem Str(m)+″=″+s End Sub 加框①處應改為:
。 (3)請在橫線處填入合適的代碼。 Dim kh(1 To 1500)As String'存放學生考號 Dim a(1 To 1500)As Integer'存放學考成績 Dim b(1 To 1500)As Integer'存放加試成績 Dim pm(1 To 1500)As Integer'存放排名 Dim n As Integer'存放總人數 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+″\cj.jye.ai″ conn.Open Set rs.ActiveConnection=conn rs.Open″select*from stu_cj″ List1.AddItem“考號″&″學考″&″加試″ n=0 Do While Not rs.EOF'到記錄集最后一條記錄后退出循環 n=n+1'計數 kh(n)=rs.Fields(″考號″) a(n)=rs.Fields(″學考成績″) b(n)=rs.Fields(″加試成績″) List1.AddItem kh(n) &″″& a(n) &″″& b(n) rs.MoveNext'移動到下一條記錄 Loop rs.Close conn.Close Set rs=Nothing Set conn=Nothing End Sub Private Sub Command1_Click ( ) Dim i As Integer,j As Integer,t As Integer,k As String For i=1 To n-1 For j=n To i+1 Step-1 If a(j)+b(j)>a(j-1)+b(j-1)Or ①
Then t=a(j):a(j)=a(j-1):a(j-1)=t t=b(j):b(j)=b(j-1):b(j-1)=t k=kh(j):kh(j)=kh(j-1):kh(j-1)=k End If Next Next pm(1)=1 For i=2 To n If a(i)=a(i-1)And b(i)=b(i-1)Then ②
Else pm(i)=i End If Next List2.Clear List2.AddItem″排名″&″考號″&″學考″&″加試“ For i=1 To n List2.AddItem pm(i) &″″& kh(i) &″″& a(i) &″″& b(i) Next End Sub