amin= a(1) : amax=a(1)
i=2 : j=9
Do While i <= j
If a(i) > a(j) Then
Else
End If
i=1 : j=j-1
Loop
Text 1. Text= Str(amin)+"," Str(amax)
上述程序段中方框处可选语句为:
①If a(j)>amax Then amax =a(j)
②If a(j)< amin Then amin =a(j)
③If a(i)<amin Then amin =a(i)
④If a(i)>amin Then amin =a(i)
则(1)(2)(3)(4)处语句依次可为( )
'数组元素f(1)到f(9)赋初值为0,代码略
key= Val(Text1. Text)
i=1:j=9
Do While i<=j
m=(i+j)\2
If(m)=1
If a(m)= key then Exit Do ‘Exit Do表示退出循环
If a(m)> key Then j= m-1
Else i= m +1
Loop
整型数组元素a(1)到a(9)为升序序列,在文本框 Text1中输入待查找数,执行该程序段后,下列选项中,f(1)到f(9)各元素值不可能的是( )
①以“2020年3月”为关键字进行降序排序
②以“类别”为关键字(按字母排序)进行降序排序
③按“类别”进行筛选,选择的值为“商务交易
④按“2020年3月”进行筛选,选择“10个最大的值”并显示最大的1项
分配方法是:按考场号递增、同一考场座位号递增的顺序逐一分配座位。每次分配,先选班级,再选学生。选择班级时,在班级降序序列(按未分配人数)中选择第1个班级,但如果该班和前一次分配选定的班级相同,则改选第2个班级。选定班级后,再为该班耒分配学生中序号最大的学生分配考场座位,并维护班级降序序列(按未分配人数)。
编写VB程序,实现考场分配功能:在文本框Text1中填写入学年份,单击“读取”按钮Command1后,将各班数据按人数降序显示在列表框List1中,然后单击“分配”按钮Command2,在列表框List2中显示分配结果。程序运行界面如图所示。
请回答下列问题:
Dim n As Integer, y As String
Dim cla(1 To 20)As Integer, num(I To 20)As Integer
Dim room as Integer ‘存储考场号
Dim seat as Integer ‘存储座位号
Function fm(k As Integer) As String
‘返回整数k(l≤k≤99)对应的数字字符串,不足两位左侧补“0”,代码略
End function
Private Sub Command 1_ Click( )
‘从Text1中读取入学年份存入变量y,从数据库中读取该人学年份的班级数据
‘将班级个数存人变量n(1<n≤20),各班班号和人数分别存人数组cla和num
‘各班班号均大于0,各班人数均未超过总人数的一半
‘将数组cla和num按班级人数降序排列后,显示在List l中,代码略
End Sub
Private Sub Command 2_ Click( )
Dim i As Integer, t As Integer, s As Integer
Dim choice As Integer, m As Integer, f As Boolean
room=1 : seat=1 : choice=0
Do While f = True
If cla (1) <> choice Then m= 1 Else m = 2
choice = cla(m)
‘在列表框List2中显示准考证号、考场号、座位号
List 2. Addltem y+fm(cla(m))+fm(num(m))+" "+fm(room)+" "+fm(seat)
seat = seat+ 1
If seat > 30 Then
seat = 1
End If
num(m)= num(m)-1
For i=To n-1 ‘维护班级降序序列(按未分配人数)
If num(i)< num(i + 1)Then
t=num(i) : num(i)=num(i+1) : num(i+1)=t
s = cla(i) : cla(i)= cla(i + 1) : cla(i+1)=s
Else
Exit For ‘ExitFor表示退出循环
End If
Next i
IfThen f = False
Loop
End Sub
时间 |
第1小时 |
第2小时 |
第3小时 |
第4小时 |
第5小时 |
第6小时 |
第7小时 |
|
A城温度 |
30 |
30 |
33 |
33 |
31 |
31 |
32 |
|
A城数据 |
温度 |
30 |
33 |
31 |
32 |
|||
截止时间 |
2 |
4 |
6 |
7 |
||||
B城温度 |
20 |
20 |
20 |
22 |
21 |
21 |
22 |
|
B城数据 |
温度 |
20 |
22 |
21 |
22 |
|||
持续时长 |
3 |
1 |
2 |
1 |
||||
计算结果 |
温差 |
10 |
13 |
11 |
10 |
|||
持续时长 |
2 |
1 |
1 |
3 |
(时间单位:小时,温度单位:摄氏度)
表中,A城数据有4个记录,其中第1个记录为(温度30,截止时间2),第2个记录为(温度33,截止时间4),这表明从开始到第2小时的温度都是30,此后到第4小时的温度都是33。B城数据有4个记录,其中第3个记录为(温度21,持续时长2),这表明第5、第6这2个小时的温度都是21。两城温差计算结果的第4个记录为(温差10,持续时长3),这表明第5第6、第7这3个小时的温差都是10。
Const m =1000 ‘温度数据和温差数据包含的记录数都少于1000
Dim na As Integer, nb as integer ‘A、B城数据分别有na和nb个记录
Dim ha(m)As Integer ‘ha(i)存储A城第i个记录中的温度
Dim ta(m)As Integer ‘ta(i)存储A城第i个记录中的截止时间
Dim hb(m)As Integer ‘hb(i)存储B城第i个记录中的温度
Dim tb(m)As Integer ‘tb(i)存储B城第i个记录中的持续时长
Dim h(m)As Integer ‘h(i)存储计算结果第i个记录中的温差
Dim t(m)As Integer ‘t(i)存储计算结果第i个记录中的持续时长
Private Sub Command1_ Click( )
Dim i As Integer, j As Integer
Dim p0 As Integer, p1 As Integer, diff As Integer
Dim n As Integer ‘两城温差数据的记录个数
‘读取两城数据,存入变量ma,nb及数组ha,ta,hb,tb中,代码略
For i=2 To nb
tb(i)= ‘将B城第i个记录中的持续时长转换为截止时间
Next i
i=1 : j=1
n=0
p0=0
Do While i < na And i<= nb
diff ha(i)-hb(j)
p1 = ta(i)
IfThen i =i+1
If p1 >= tb (j) Then
p1 = tb(i)
j=j+1
End if
If n = 0 Or diff <> h(n) Then
n=n+1
h(n) = diff
t(n) = pl-p0
Else
End If
p0=pl
Loop
‘输出两城温差数据,代码略
End Sub