15.編寫了一個尋找最長連續相同子串的程序,功能如下:程序運行時,在文本框Text1中輸入一個非降序字符串。單擊輸出按鈕Command1后,在文本框text2上顯示最長相同子串。程序運行界面如圖所示。 (1)實現上述功能的VB程序如下,請在橫線處填入合適的代碼。 Private Sub Command1_Click
Dim a(1 To 100)As String,s As String Dim i As Integer,m As Integer,n As Integer,pos As Integer Dim L As Integer,R As Integer,length As Integer,Max As Integer s=Text1.Text n=Len(s) For i=1 To n a(i)=Mid(s,i,1) Next i For i=1 To n L=i+1:R=n Do While L<=R m=(L+R)\2 If①Then L=m+1 Else R=m-1 End If Loop ② If length>Max Then Max=length:pos=i End If i=i+length-1 Next i Text2.Text= End Sub (2)上述程序段中加框處代碼有誤,請改正。 (3)若文本框Text1中輸入的非降字符串是“00111222”,執行這段程序后,文本框Text2中輸出的內容是
。 (2)在程序橫線處填上合適代碼,使程序完整 Dim a(1 To 1000)As Integer,n As Integer Private Sub Form_Load ( ) ‘讀入數據到數組a,數據個數n,代碼略 End Sub Private Sub Command1_Click ( ) Dim i As Integer,j As Integer Dim fz(1 To 16)As Integer'fz數組存儲信息各題滿分值 Dim b(1 To 33)As Single'數組b存儲全卷各題的平均得分 For i=1 To 16'數組fz存儲信息16個小題的滿分值 If i<=12 Then fz(i)=2 fz(13)=4:fz(14)=8:fz(15)=7:fz(16)=7 Next i For i=2 To n'把數組a數據分別統計到各題中,計算各題總得分 ① b(j)=a(i)+b(j) Next i For i=1 To 33 If i<=12 Then b(i)=b(i)/(a(1)*fz(i))’計算信息客觀題各題的得分率 ElseIf i>=26 And i<=29 Then b(i)=② End If Next i For i=1 To 16 If i>12 Then j=i+13 Else j=i b(j)=Int(b(j)*1000+0.5)/10'對結果四舍五入保留1位小數 List2.AddItem Str(i)+Str(b(j))+“%“ ave=③ Next i Text1.Text=Str(ave/100) End Sub