试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省台州中学2018届高三上学期信息技术第四次统练试卷

【加试题】酒店房间管理:酒店房间(房间数小于10000)编号按1、2、3…连续编号,老板对于没有出租的房子使用如下的方法来登记管理。连续的空房间,登记第一间的编号和连续的空房间数,比如空房间1,2, 6,7,8,10,则登记3条记录,分别为(1  2),(6  3),(10  1).

某旅客退房了,需要把这房子也登记上去,有四种情况需要处理:

1)上靠,例如退的房间号为3,则原来登记的3条记录变成(13), (6,3), (10,1).

2)下靠,例如退的房间号为5,则原来登记的3条记录变成(1,2), (54), (10,1).

3)上下不靠,例如退的房间号为4,则登记的记录数变成4条(1,2)  ,(41), (6,3),(10,1).

4)上下靠,例如退的房间号为9,则登记的记录数变成2条(1,2),(6,5).

小王依据上述描述设计了如下VB程序。请回答下列问题:

(1)、当登记的记录有3条,分别为(1,4),(6,2),(10,3)。现在某旅客退掉5号房间,则登记的记录变成
(2)、请在划线处填入合适的代码。

Const n = 5000

Dim a(0 To n) As Integer  'a(i)保存第i条记录的开始房间号

Dim b(0 To n) As Integer  ' b(i)保存第i条记录的房间数

Dim c As Integer, k As Integer, sp As Integer  'k为原始记录数

' 读取原始k条记录的数据,依次存入a(1),b(1),a(2),b(2)…a(k),b(k),代码略

'为了程序处理方便,虚设了下面2条记录

 a(0) = 0   :   b(0) = 0:   sp = k + 1 : a(sp) = 10000 :  b(sp) = 0

Private Sub Command1_Click()

Dim i As Integer

c = Val(Text1Text)  'c为退掉的房间号

i = 1

Do While a(i) < c   '查找房间c,应该登记在某位置

  i = i + 1

Loop

i = i - 1

'下面为处理退房登记问题

If a(i) + b(i) = c Then

   If  Then   '第4种情况,上下靠

      b(i) = b(i) + 1 + b(i + 1)

      For j = i + 1 To sp - 1

         a(j) = a(j + 1)  :    b(j) = b(j + 1)

      Next  j

      sp = sp - 1

   Else                      '第1种情况,上靠

      b(i) = b(i) + 1

  End If

ElseIf  c + 1 = a(i + 1) Then  '第2种情况,下靠

    a(i + 1) = c  :    b(i + 1) = b(i + 1) + 1

Else                         '第3种情况,上下不靠

   For j =

      a(j) = a(j - 1) :      b(j) = b(j - 1)

   Next j

   a(i + 1) = c  :   b(i + 1) = 1 :   sp = sp + 1

End If

‘下面为输出登记的记录,不包括虚设的两条记录

For i =1 to

  List3.AddItem "第" & Str(i) & "记录(" & Str(a(i)) & "," & Str(b(i)) & ")"

Next i

End Sub

返回首页

试题篮