试题

试题 试卷

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

 ② ③ 

举一反三
某校学生会选举需要从学校数据库中随机抽取若干名学生作为监票人。该数据库文件名为school.mdb,其中数据表student存储有关学生学号(xuehao)、姓名(xingming)相关信息,括号内的内容为对应字段名。该程序编辑界面如图所示,相关对象名可参考标识图。

当主持人点击按钮“生成抽号”后,下方的标签会显示可抽取的学号姓名,一定时间后显示被抽取作为监票人的学号姓名。

'xxxss:学校学生数,kcq:可抽取

'xhxm:学号姓名,kcq:可抽取

Dim xxxss As Integer

Dim xhxm(3000) As String

Dim kcq(3000) As Boolean


'cq_Click:启用两个定时器

Private Sub cq_Click()

    cqxhxm.Enabled = True

    xskcqxhxm.Enabled = True

End Sub


Private Sub cz_Click()    '初始化数组kcq,使每个元素数据都处于可显示状态

  For i = 0 To xxxss - 1

    kcq(i) = True           '①

  Next i

End Sub


Private Sub xskcqxhxm_Timer()  '若数组kcq第x个元素处于可抽取状态,则显示数组xhxm第x个元素

    x = Int(Rnd * xxxss)

    If kcq(x) Then xhxmbq.text = kcq(x)     '②

End Sub


Private Sub Form_Load()  '从数据库中提取需要的学号姓名相关数据并初始化数组kcq

    Randomize

    xxxss = 0

    Dim conn As New ADODB.Connection,rs As New ADODB.Recordset

    Dim str_conn as String,str_sql As String

    str_conn = "driver=Microsoft access driver(*.mdb);DBQ="&app.path&"\school.mdb";

    conn.open str_conn

    str_sql = "select * from students"

    rs.open str_sql

    Do While Not rs.eof

      xxxss = xxxss + 1

      xhxm(xxxss) = rs.fields("xuehao")&rs.fields("xingming")

      rs.movenext

    Loop

    For i = 0 To xxxss - 1

      kcq(i) = True

    Next i

End Sub


Private Sub cqxhxm_Timer()    '决定抽取的学号姓名作为监票人

    xskcqxhxm.Enabled = False

    For i = 0 To xxxss - 1

        If xhxmbq.Caption = xhxm(i) Then kcq(i) = False

    Next i

    cqxhxm.Enabled = False

End Sub

①{#blank#}1{#/blank#} 

②{#blank#}2{#/blank#} 

返回首页

试题篮