16.小王設計了一個算法試圖求出平面坐標系中最左點出發,從左往右途經所有點到達最右點的路徑值和,編寫了一個VB程序功能如下:在文本框Text1中輸入需隨機生成的坐標點數量,單擊“生成”按鈕Command1后,在列表框List1中生成相應數量的坐標點(坐標值為大于等于1小于10的實數,保留一位小數),在文本框Text2中輸出路徑值。程序界面如圖所示。 實現上述功能的VB程序如下,但加框處代碼有錯,請改正。 Private Sub Command1_Click ( ) Dim x(1To 100)As Single,y(1To 100)As Single Dim tmp As Single,length As Single,sum As Single,x1As Single,y1As Single Dim i As Integer,j As Integer,k As Integer Randomize List1.Clear k=Val(Text1.Text) For i=1To k x(i)=Int(Rnd*90)/10+1 y(i)=Int(Rnd*90)/10+1 List1.AddItem“X:“+Str(x(i))+““+“Y:“+Str(y(i)) Next i For i=1To k-1 For j=1To k-i If x(j)>x(j+1)Then x(i)=x(i)+x(j) x(j)=x(i)-x(j) tmp=y(j) y(j)=y(j+1) y(j+1)=tmp End If Next j Next i sum=0:length=0 For i=1To k-1 x1= '變量y1計算方法同x1,代碼略
length=Sqr(x1+y1) sum=sum+length Next i Text2.Text=Str(Int(sum*10)/10) End Sub
(2)將這些數字平方后除以100取余,得到兩位數如00,04,21,96。 (3)把這些兩位數按升序排成一行,組成一個最小的新數,如果新數開頭為0,就去除。 (4)步驟(3)找出的最小數即為密碼。 小明按照上述方法,設計了一個解密的VB程序,功能如下:單擊“解密”按鈕Commandl,程序依次將文本框Textl中以空格分隔的每個英文單詞取出,若單詞屬于數字單詞,則按解密步驟進行處理,最后在文本框Text2中輸出解密結果。程序運行效果如圖所示,請回答下列問題: (1)若文章內容為“tom bought two apples and five oranges,which cost ten dollars altogether。”,則破譯后的密碼應為
。 (2)請在橫線處填入合適的代碼。 Dim a(1To 20)As String Private Sub Form_Load ( ) a(1)=“one“:a(2)=“two“ '……將所有數字單詞按順序存入數組a中,代碼略 End Sub Private Sub Command1_Click ( ) Dim s As String,tmp As String Dim c as Integer,i As Integer,j As Integer,k As Integer,t As String,ch As As String,code As Long Dim b(1To 100)As String'b數組存放數字單詞處理后得到的兩位數 s=Text1.Text c=0:i=1:flag=True:t=““ Do While i<=Len(s) ch=Mid(s,i,1) If ch>=“a“And ch<=“z“Then t=t+ch flag=False ElseIf flag=False Then For j=1To 20 If t=a(j) Then c=c+1 b(c)=
End If Next j t=““ flag=True End If i=i+1 Loop ’將b數組中的兩位數按數值大小進行升序排序,代碼略 For i=1To c t=Val(b(i))
Next i Text2.Text=Str(code) End Sub Function decode(num As Integer) As String Dim mo As Integer mo=num*num Mod 100 If mo=0Then decode=“00“ ElseIf
Then decode=“0“+Trim(Str(mo)) Else decode=Trim(Str(mo))'Trim為去除字符串兩端空格的函數 End If End Function