在搭乘一次地铁后可以获得一张面额为本次地铁价格的优惠券,有效期为60分钟,在有效期内可以使用这张优惠券,免费搭乘一次票价不超过这张优惠券的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于60分钟。搭乘地铁获得的优惠券可以累积,即可以连续搭乘若干次地铁后再连续使用优惠券搭乘公交车,但每次搭乘公交车只能使用一张优惠券。搭乘公交车时,如没有合适的优惠券,则自己全额支付;如果有多张优惠券满足条件,则优先消耗获得最早的优惠券。
小叶同学根据优惠政策,编写了计算优惠后需要支付费用的程序,同时将乘车记录按时间先后顺序逐行显示。在Text1里输入乘车记录的数量n,Text2里输入n组数据,每组乘车记录有3个数据,依次是车型(1表示地铁、2表示公交)、开始乘车时间、乘车票价。每个数据以逗号结尾。不会有两次乘车记录出现在同一分钟。数组d存储乘车记录的结构如图a所示:
第1条乘车记录 | 第2条乘车记录 | …… | |||||
数组中的位置 | 1 | 2 | 3 | 4 | 5 | 6 | …… |
对应的值 | 2 | 200 | 3 | 1 | 3 | 7 | …… |
车型 | 开始时间 | 票价 | 车型 | 开始时间 | 票价 | …… |
程序界面如图b所示:

(1)在VB表达式Val(Text1.Text)中,Val、Text1、Text依次表示
(2)实现上述功能的程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有误,请改正。
Dim yh(1 To 100)As Integer,flag(1 To 100)As Boolean,dt As Integer
Dim d(1 To 100)As Integer’存储乘车的记录
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer
Dim sum As Integer,n As Integer,c As String,s As String
n=Val(Text1.Text):s=Text2.Text:j=1:k=1
For i=1 To Len(s)
c=Mid(s,i,1)
If c="," Then
j=i+1:k=k+1
End If
Next i
For i=1 To n-1
For j=3*n-1 To
If d(j)<d(j-3)Then
temp=d(j+1):d(j+1)=d(j-2):d(j-2)=temp
temp1=d(j):d(j)=d(j-3):d(j-3)=temp1
temp2=d(j-1):d(j-1)=d(j-4):d(j-4)=temp2
End If
Next j
Next i
’按行输出乘车记录,代码略
dt=0
For i=1 To k-1 Step 3’yh(dt)存储第dt张优惠券的乘车记录在数组d中的起始位置
If d(i)=1 Then dt=dt+1:yh(dt)=i
Next i
sum=d(3)
For i=2 To n
For j=1 To dt
If yh(j)\3<i Then
If(d((i-1)*3+1)=2)And(d((i-1)*3+2)-d(yh(j)+1)<=60)And flag(j)=False And(

flag(j)=True:Exit For
End If
End If
Next j
If j=dt+1 Then sum=sum+d(3*i)
Next i
Label1.Caption=Text1.Text+"次乘车支付的总费用是:"Str(sum)
End Sub

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

