题库 高中信息

题干

在Visual Basic中,下列能作为变量名的是( )
A.5aB.a5C.ifD.dim
上一题 下一题 0.99难度 选择题 更新时间:2016-03-07 09:01:31

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

同类题2

挤牛奶问题:如有三个农民每天清晨5点起床,然后去牛棚分别给3头牛挤奶。第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻(总共挤了700个时刻),第二个农民在700时刻开始,在1200时刻结束(总共挤了500个时刻)。第三个农民在1500时刻开始2100时刻结束(总共挤了600个时刻)。期间最长挤奶的连续时间为900秒(从300时刻到1200时刻),而最长的无人挤奶的连续时间为300时刻(因第二个农民在1200时刻已结束,而第三个农民从1500时刻才开始,中间有300时刻没有人在挤牛奶)。相应时刻如下图所示:

下面提供的程序是,从N个农民(1<N<=5000)挤N头牛的工作时间列表,计算出最长有人在挤牛奶的时间段与最长的无人挤牛奶的时间段。
下图为两组不同数据程序运行后界面;

请在划线处填入相应的代码,使程序功能完善。
Dim a(1 To 100) As Integer '存放农民挤牛奶开始时刻
Dim b(1 To 100) As Integer '存放农民挤牛奶结束时刻
Dim n As Integer '存放农民人数
Private Sub Form_Load()
‘获取农民的人数与各个农民开始挤牛奶与结束挤牛奶的时间,并在list1中输出
‘相应的代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim t As Integer, ymax As Integer, nmax As Integer
Dim btime As Integer, etime As Integer, flag As Boolean
flag = True: i = 1
Do While i <= ________And flag
flag = False
For j = 1 To n - i
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
t = b(j): b(j) = b(j + 1): b(j + 1) = t
flag = True
End If
Next j
i = i + 1
Loop
btime = a(1): etime = b(1)
ymax = etime - btime: nmax = 0
For i = 2 To n
If _______________________________Then
etime = b(i)
If etime - btime > ymax Then ymax = etime - btime
ElseIf etime < a(i) Then
If a(i) - etime > nmax Then nmax = a(i) - etime
btime = a(i): etime = b(i)
End If
Next i
Label2.Caption = "最长挤牛奶时间为:" + Str(ymax) + " 时刻"
Label3.Caption = "最长无人挤牛奶时间为:" + Str(nmax) + " 时刻"
End Sub

同类题3

酒店房间管理:酒店房间(房间数小于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