题库 高中信息

题干

酒店房间管理:酒店房间(房间数小于10000)编号按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),65
小王依据上述描述设计了如下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(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
上一题 下一题 0.99难度 填空题 更新时间:2019-05-27 12:11:02

答案(点此获取答案解析)

同类题1

某数据压缩方法描述如下:
1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;
2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个位0,第2个为0;
3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个位0,第2个为重复数的个数,第3个为该数本身;
根据上述压缩方法,对应的解压缩方法示例如图a所示。

图a

小明编写了一个解压送VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)……中,压缩数据的个数存储在变量n中,压缩数据显示咋文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。

图b

(1)如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是__________。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。
Dim a(1 To 100) As Integer '存储压缩数据,最大处理个数为100
Dim b(1 To 1000) As Integer '存储解压缩数据,最大处理个数为1000
Dim n As Integer '存储压缩数据的个数
Private Sub Form_Load()
'压缩数据由上述压缩方法生成
'本过程用于读取压缩数据并存储在数组a,压缩数据个数存储在变量n中
'代码略
End Sub
Private Sub Command1_Click()

Dim pa As Integer '存储压缩数组当前处理位置

Dim pb As Integer '存储解压缩数组当前处理位置

Dim firstdata As Integer, count As Integer, i As Integer

pa = 1: pb = 1

Do While pa <= n

 firstdata = a(pa)
If firstdata <> 0 Then  '示例1情况处理
b(pb) = firstdata
pa = pa + 1: pb = pb + 1

Else

count = a(pa + 1)

If count = 0 Then    '示例2情况处理

b(pb) = 0

pa =____________: pb = pb + 1

Else '示例3情况处理

For i = 1 To count
______________
Next i
pa = pa + 3:  pb = pb + count
End If
End If

Loop

Text2.Text = Str(b(1))

For i = 2 To ___________

Text2.Text = Text2.Text + , + Str(b(i))

Next i

End Sub