题型:综合题 题类:常考题 难易度:困难
浙江省台州中学2018届高三上学期信息技术第四次统练试卷
某旅客退房了,需要把这房子也登记上去,有四种情况需要处理:
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程序。请回答下列问题:
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
试题篮