试题

试题 试卷

logo

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

浙江省重点中学2018届高三上学期期末热身联考试卷

【加试题】酒店房间管理:酒店房间(房间数小于10 000)编号按1,2,3…连续编号,老板对于没有出租的房子使用如下的方法来登记管理。连续的空房间,登记第一间的编号和连续的空房间数,比如房间1,2,6,7,8,10,则登记3条记录,分别为(1,2),(6,3),(10,1)。某旅客退房了,需要把这房间也登记上去,有四种情况需要处理:

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

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

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

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

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

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

  Const n=10

  Dim a(o 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)=10 000:b(sp)=0

  Private Sub Command1_Click()

  Dim i As Integer

  c=Val(Text1,Text)   ‘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

 ② ③ 

返回首页

试题篮