题型:综合题 题类:常考题 难易度:困难
浙江省重点中学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=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
① ② ③
试题篮