15.求數組a 中非降序數列的方法,算法描述如下: (1)用數組依次存儲每個非降序數列中最大的元素(查找過程中的最大值),初始時 b(1)為數組 a 第 1 個元素。 (2)加入方法:將 a(i)與數組 b 中的每個元素依次逐個比較: 若 a(i)不比 b(j)小就用 a(i)替換 b(j)中的值;將 a(i)添加到第 j 個非降序數列中,并連接到 c 數組的 c(j)中。 若 a(i)比 b(j)都小,則在數組 b 最后添加新的元素值為 a(i),即將 a(i)添加到第 j+1 個下降數列中,并連接到 c 數組的 c(j+1)中。 (3)若數組a 各元素的值為:12,36,16,36,27,18 時,則 3 個非降序數列分別為:“12,36,36”,“16,27”,“18”。 程序運行界面如圖所示: 小明依據上述描述設計了如下 VB 程序。請回答下列問題: (1)代碼“List1.Clear“中的 Clear 是
。(單選,填字母:A.對象名/B.事件名/C.屬性名/D.方法名) (2)實現上述功能的 VB 程序如下,請在橫線處填上合適的代碼。 ①
②
③
(3)程序中加框處代碼有錯,請改正。 改正:
Const m=15 Dim a(1 To m) As Integer Private Sub Form_Load
'讀取m 個數據,依次存儲到 a(1)、a(2)、…a(m)中,代碼略End Sub Private Sub Command1_Click
Dim b(1 To m) As Integer'存儲數列最大的值Dim c(1 To m) As String'存儲非降序數列Dim i As Integer Dim bottom As Integer Dim j As Integer Dim bn As Integer'存儲非降序數列的個數List1.clear b(1)=a(1) ① c(1)=Str(a(1)) For i=2 To m For j=1 To bn If ②Then b(j)=a(i) Exit For End If Next j If j>bn Then bn=bn+1 ③ c(bn)=Str(a(i)) End If Next i For i=1 To bn List1.AddItem c(i) Next i Text2.Text=“數列中共有“+Str(bn)+“個非降序序列“ End Sub
座橋。 (2)請在橫線處填入合適的代碼。 Const n=9'島 嶼 的 數 量Dim a(1 To n*n) As Integer Private Sub Command1_Click
Dim s As String List1.Clear For i=1 To n For j=i To n If j=i Then a((i-1)*n+j)=0'對 角 線 為 0 Else a((i-1)*n+j)=Int(Rnd*2) ①
'矩 陣 對 稱 End If Next j Next i For i=1 To n s=““ For j=1 To n s=s+Str(a((i-1)*n+j)) Next j List1.AddItem s Next i End Sub Private Sub Command2_Click
Dim b(1 To n) As Integer Dim qiao(1 To n) As Integer'記錄相連島嶼之間橋的數量 Dim find(1 To n) As Boolean'記錄某島嶼是否被添加到數組 b 中 Dim p1 As Integer,p2 As Integer,cur As Integer,k As Integer,q As Integer p1=Val(Text1.Text) p2=Val(Text2.Text) cur=p1:k=1:q=0 find(cur)=True Do While find(p2)=False For i=1 To n If a((cur-1)*n+i)=1 And find(i)=False Then b(k)=i:k=k+1 find(i)=True ②
End If Next i q=q+1 If q=k Then Exit Do Else③
Loop If find(p2)=True Then Label1.Caption=“需要經過“+Str(qiao(p2))+“座橋“ Else Label1.Caption=“無橋相連“ End If End Sub