题型:综合题 题类: 难易度:困难
浙江省丽水市2022-2023学年高二下学期信息技术6月教学质量检测(期末)试卷
医院为提升服务质量,编写程序模拟就诊顺序。现获取某医生早上就诊患者的数据,分别为姓名、预约或挂号时间、就诊时长(单位:分钟)。预约挂号数据(准时到达人员数据)如图a所示,直接挂号数据如图b所示。运行程序,输出前三位就诊顺序名单,如图c所示。
|
|
|
图 a |
图 b |
图 c |
def sort(lst) :
n=len(lst)-1
for i in range(n-1) :
for j in range(n,i+1,-1) :
if:
lst[j],lst[j-1]=lst[j-1],lst[j]
return lst
def insert(lst,i,head) :
curtime=lst[head] [1]+int(lst[head] [2]) #就诊结束时间
if :
lst[i].append(head)
head=i
curtime=lst[i] [1]+int(lst[i][2])
i+=1
q=lst[p] [3]
while i<=len(lst)-1 :
if curtime>=lst[q][1] and q!=-1 : #预约人员优先就诊
p=q
q=lst[p] [ ]3
curtime+=int(lst[p][2])
elif curtime>=lst[i] [1] or q==-1 :
lst[i].append(q)
curtime+=int(lst[i] [2])
p=i
i+=1
elif lst[q] [1]<=lst[i] [1]:
curtime=lst[q] [1]
else :
curtime=lst[i] [1]
return lst
#预约挂号数据转换为列表 lst,并将时间转换为分钟,如 08:30 转为 510,代码略
lst=sort(lst)
n=len(lst)-1
for i in range(1,n) :
lst[i].append(i+1) #lst[i]追加一个元素 i+1
lst[n].append(-1)
#将门诊挂号数据合并至列表 lst 中,列表 lst数据如图d所示,代码略 head=1
lst1=insert(lst,n+1,head)
#输出就诊顺序,代码略
图 d
科目 |
政治 |
历史 |
地理 |
物理 |
化学 |
生物 |
技术 |
人数 |
193 |
151 |
112 |
186 |
167 |
103 |
179 |
设计VB程序,实现功能:将每个科目的选课人数按照选考人数降序排序后输出。其中,科目名称存放在数组a(i)中,人数存放在数组b(i)中。
程序运行界面设计如图所示,左边列表框List1是显示科目名称和选课人数,单击“排序”按钮Command1后,在右边的列表框List2中显示排序后的科目名称和选课人数。
Command1的处理事件过程如下,但加框处代码有错,请改正。
Private Sub command1_click()
Dim a(1 To 7) As String
Dim b(1 To 7) As Integer
Dim i As Integer, j As Integer, p As String, q As Integer
For i = 1 To 7
List1.AddItem a(i) + " " + Str(b(i))
Next i
For i = 1 To 6
k = i
For j = i + 1 To 7
Next j
If i <> k Then
p = a(i): a(i) = a(k): a(k) = p
End If
Next i
For i = 1 To 7
List2.AddItem a(i) + " " + Str(b(i))
Next i
End Sub
①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#}
试题篮