有n件重量各不相同的物品,从中挑选2件物品使其重量和等于k。编写了一个VB程序实现上述功能,运行程序,从数据库中读取n件物品的编号和重量并在列表框List1中显示,在文本框Text1中输入重量k后,单击“挑选”按钮Command1,在列表框List2中按重量从小到大显示各物品的编号和重量,在列表框List3中显示所有符合条件的物品编号;若未找到,则输出“未找到这样的组合”。程序运行界面如图所示。
(1)
程序运行时,按钮Command1上显示“挑选”,是通过设置该对象的属性实现的(单选,填字母:A.Text /B.Caption /C.Font)。
(2)
实现上述功能的VB程序如下,请在划线处填入合适代码。
Const n = 10
Dim num(1 To n) As Integer, w(1 To n) As Integer
Private Sub Form_Load()
'本过程从数据库中读入n件物品的编号和重量分别存数组num,w中,并在List1中显示,代码略。
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim t As Integer, f As Boolean
Dim p As Integer, q As Integer
Dim k As Integer, flag As Boolean
f = False
i = 1
Do While
f = True
For j = n To i + 1 Step -1
If Then
t = num(j): num(j) = num(j - 1): num(j - 1) = t
t = w(j): w(j) = w(j - 1): w(j - 1) = t
f = False
End If
Next j
Loop
For i = 1 To n
List2.AddItem Str(num(i)) + " " + Str(w(i))
Next i
k = Val(Text1.Text)
flag = False
p = 1: q = n
Do While
If w(p) + w(q) < k Then
p = p + 1
ElseIf w(p) + w(q) > k Then
q = q - 1
Else
List3.AddItem Str(num(p)) + "和" + Str(num(q))
flag = True
p = p + 1: q = q - 1
End If
Loop
If Not flag Then
List3.AddItem "未找到这样的组合"
End If
End Sub
(3)
程序加框处的代码有误,请改正。
答案: 【1】B
【1】w(j) < w(j - 1)【2】i = i + 1【3】p < q
i <= n - 1 And Not f 或 i <= n - 1 And f = False