当前位置: 高中信息技术 / 综合题
  • 1. (2021高三下·浙江月考) 小轩的绿色出行花费:某著名旅游城市H市为了鼓励大家采用公共交通方式绿色出行,推出了一种地铁换乘公交车的优惠方案,方案具体细则如下:

    ①在搭乘一次地铁后可以获得一张优惠票,有效期为45分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于45分钟,即:t_bus-t_ subway <=45

    ②搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。

    ③搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

    小轩同学编写了VB程序计算最近公共交通出行的费用,程序运行时,在文本框Text1中输人小轩的公共交通出行记录(各数之间以逗号分隔),单击“获取数据”按钮Command1将数据按顺序存储在数组a中并在List1中显示。其中第i条出行记录乘坐的交通工具存储在数组元素a(3*i-2)中,0代表地铁,1代表公交车;第i条记录乘车的票价存储在数组元素a(3*i-1)中;第i条记录开始乘车的时间(距0时刻的分钟数)存储在数组元素a(3* i)中。如小轩最近6条乘车记录的数据为0,5,1,0,20,16,0,7,23,1,18,31,1,4,38,1,7,68在数组a中的存储结构如下表所示。

    a(1)

    a(2)

    a(3)

    a(4)

    a(5)

    a(6)

    ……

    a(16)

    a(17)

    a(18)

    0

    5

    1

    0

    20

    16

    ……

    1

    7

    68

    单击“计算”按钮Command2,则在标签Label2中显示小轩同学的公共交通出行总费用。程序运行界面如图所示。

    1. (1) 若小轩的出行数据如上表所示,则小轩此次出行总花费为。(填数字)
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

      Const maxn= 1005

      Dima(1 To 3 * maxn) As Integer

      Dim ticket(1 To 3 * maxn) As Integer

      Dim i,n,k,x,y,cost As Integer

      Dim tail,head As Integer

      Dim s As String

      Dim found As Boolean

      Private Sub Command1_Click()

          s= Text1.Text

          k= 1

          For i=1 To L en(s)

              c= Mid(s,i,1)

              If c="," Then k=k+1 Else

          Next i

          '将各条出行数据输出在列表框List1中,代码略

      End Sub

      Private Sub Command2_ Click()

          head=1:tail= 1

          For i=1 To k\ 3

              If a(3 * i-2)=0 Then

                  cost= cost+a(3 * i-1)

                  ticket(3 * tail)=a(3 * i)+45

                  

                  tail= tail+1

              Else

                  Do While head < tail And ticket(3 * head) < < a(3 * i)

                      head= head+1

                  Loop

                  

                  If found= False Then cost=cost+a(3 * i-1)

              End If

          Next i

          Label2.Caption= Str( cost)

      End Sub

      Function pd(x As Integer, y As Integer) As Boolean

          pd= False

          For j=x Toy

              If ticket(3 * j-1) >=a(3 * i-1) And ticket(3 * j-2)=0 Then

                  pd=True

      ticket(3 * j-2)=1

                  Exit Function

              End If

          Next j

      End Function

微信扫码预览、分享更方便