在一条宽度度为L的直线小河中,一只青蛙想沿着直线从河的左侧跳到右侧。小河中有n片位置互不相同的荷叶,青蛙必须跳到荷叶上过河,否则会掉入水中。开始时青蛙站在河的左侧(坐标为0),接着不停地向右侧跳跃,每次跳跃的距离不超过W,当青蛙跳到或跳过河的右侧(坐标为L)时,青蛙完成过河。例如当L=20,n=4,W=5,开始时4片荷叶的坐标为3,9,11,17,则至少需要增加2片荷叶,即在坐标8和16分别增加一个荷叶,得到过河的可行方案是0→3→8→9→11→16→17→20。
图a 图b 编写程序找出青蛙成功过河至少需要增加的荷叶数,界面如图b。请回答以下问题:
(1)
若要将列表框List1顶端与窗体顶端的距离设置为100,能实现该功能的语句是(A .
List1.Height = 100 / B . List1.Top = 100 / C . List1.Width = 100)。
(2)
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Form_Load()
'读取荷叶的位置,并保存到数组a中
'荷叶的数量保存在n中
'荷叶坐标和数量分别显示在list1和Text2中
End Sub
Private Sub Command1_Click()
Dim a(0 To 100) As Integer
Dim n As Integer, L As Integer,
W As Integer, tot As Integer
Dim i As Integer, j As Integer,
p As Integer, d As Integer
L = Val(Text1.Text) : n =
Val(Text2.Text) : W = Val(Text3.Text)
a(0) = 0 : a(n + 1) =
For i = 1 To n - 1
k
= i
For j = i + 1 To n
If a(k) > a(j) Then Next j If k <> i Then tmp = a(k): a(k) = a(i): a(i) = tmp End If Next i For i = 1 To n List1.AddItem a(i) Next i p = 1: d = 0 Do While d < L If p <= n + 1 And Then d = a(p) p = p + 1 Else tot = tot + 1 End If Loop Label4.Caption = "至少需要增加的荷叶数为:" + Str(tot) End Sub
(3)
程序中加框处代码有错,请改正。
答案: 【1】B
【1】L【2】a(p)-d<=W【3】d=d+W
k=j