1. 某医院的团体体检流程如下:

编号登记:为n位体检者设置体检编号1~n。

体检呼叫:体检项目处空闲时呼叫下一个体检者(编号小的优先),若多个项目同时呼叫,体 检者到优先级小的项目处体检。仅考虑常规体检项目,各个项目的优先级及体检时间如表1所示:

前去体检:各个体检项目之间相互独立,互不影响;病人排队体检和体检完毕到下一科室之 间没有时间延迟。

(1) 某日下午,仅1个团队4人(分别用编号1,2,3,4表示)参加体检 ,开始体检后第5分钟,4在检查 (填写项目名称)项目。
(2) 定义如下lst(n)函数,生成n人体检队列 。若体检人数为4人,则 que生成结果如表2所示。

deflst(n):

    que=[]

   

        que.append(temp)

    return que

若加框处语句改为:

则执行语句lst(4),que的生成结果 (选填:是/否)相同。

(3) 用 python程序模拟一个10人团队参加体检的流程。程序运行后,体检完成顺序如图1所示:

Python部分程序如下 , 请在划线处填入合适的代码。

n=10

head=0

que=lst(n)

tail=10

dis=[['B超', 12],[ '心电图' , 5],['抽血', 2],['尿常规' , 2],['C14检测', 2],['胸透' , 2], ['一般常规(身高体重血压)', 1]]

t=[-1]*7         #t记录各个项目当前体检的开始时间

f=[-1]*7         #f记录各个项目当前体检人员编号

def jh(num):

    global tail            #global能够实现在自定义函数中改变公共变量tail

    p=head

    while p<tail:

        if que[p][0]not in fand num not in que[p][1]:  #p体检者等待中且未体检num项目

            que[p][1].append(num)

           

            t[num]=time

            if len(que[p][1])==7:

                temp=que[p]

                    for i in range(p , tail-1):

                        que[i]=que[i+1]

                    que[tail-1]=temp

                    tail-=1

                break

        p=p+1

time=0

while tail! =head:

    i=0

    while i<7:

        if t[i]==-1:

            jh(i)

        elif  :

            t[i]=-1

            f[i]=-1

            i-=1

        i+=1

    time+=1

print('体检完成顺序:')

for i in range(  ):       #按体检完成顺序输出体检者及其的体检项目顺序

    item= que[i][1]

    s= '  '

    for j in item:

        s+=dis[j][0]+'→'

    print('编号%d:%s'%(que[i][0], s[:-1]))

【考点】
过程与自定义函数; 基本数据结构;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
换一批
1. 小王在某政府接待窗口工作,该单位的共有ABCDEF六个窗口,民众在具体窗口办事,都会取到一个编号如 A001(窗口编号+三位数字)。当民众完成一个办事后,都会按“确认”键报送给小王。小王的工作是每间隔30分钟,公布一次各窗口累计处理事务单,统计结果按 照 窗 口 序 号 及 编号升 序 输出。如:某30分钟内,小王接收到一批数据:"A001","A002","B001","B002","D001","C003","C002"。现小王采用链表方式将这批数据插入。程序结果运行如下:

具体 Python 程序代码如下,请在划线处填入合适的代码。

(1) 实现对链表a按序输出功能:

def output(h,a):

   

    while p!=-1:

        print(a[p][0],end=" ")

        p=a[p][1]

(2) 实现对列表b进行排序整理

def sort_lst(b):

    for i in range(len(b)-1):

        for j in range(1,len(b)-i):

            if :

            b[j],b[j-1]=b[j-1],b[j]

    return b

(3) 实现将列表b中的数据有序插入到a链表中,并保持有序性

def insert_lst(a,head,b):

    p=-1 ; q=head

    for i in b:

        a.append([i,-1]) ; n=len(a)-1

        if a[head][0]>i:

            a[n][1]=head ; head=n

           

        else:

            p=q ; q=a[p][1]

            while :

                p=q ; q=a[p][1]

           

            a[p][1]=n ; q=n

    return head

lst1=[["F001",-1],["B003",3],["E001",0],["C001",2]]              #已有数据

lst2=["A001","A002","B001","B002","D001","C003","C002"]          #新接收数据

lst2=sort_lst(lst2)

head=1

head=insert_lst(lst1,head,lst2)

print("各窗口累计处理事务单:")

output(head,lst1)                   #输出整理后的有序的链表

综合题 困难
2. 校服烘干。五校联考要求学生统一穿校服参加,但是不幸的是,考试前所有考生的校服全都打湿了。一件衣服在自然条件下用一秒的时间可以晒干a点湿度。现在学校里有且仅有一台烘衣机,且目前烘衣机全部断货(即无法购入新机器)使用用一秒烘衣机可以让一件衣服额外烘干b点湿度(一秒晒干a+b湿度),但在同一时间内只能烘一件衣服。现在有n件衣服,第i衣服的湿度为w(i)(保证互不相同),要你求出弄干所有衣服的最少时间(湿度为0为干)。编写VB程序,实现上述功能。运行程序,显示窗体From1,在文本框Text1输入衣服总数n,在文本框Text2中输入a,在文本框Text3中输入b,在文本框Text4中输入各件衣服的湿度(共n个数据,数据与数据使用空格隔开),点击命令按钮Command1后,在标签Label1中显示弄干所有衣服的最少时间。程序运行界面如图所示。请回答下列问题:

(1) 若要使程序运行时,命令按钮Command1上显示为“计算”,可以在事件处理过程中添加语句Command1.Caption="计算"。(单选,填字母:A .Form_Load/B .Form1_Load/C .Command1_Click/D .Form1_Start)
(2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

Const maxn = 500005

Dim n As Long, a As Long, b As Long

Dim f(1 To maxn) As Long

Dim i As Long, tby As Long

Private Sub Command1_Click()

    tby = 1

    n = Val(Text1.Text) : a = Val(Text2.Text) : b = Val(Text3.Text)

    For i = 1 To n

        f(i) = Getin()

    Next i

    Dim l As Long, r As Long, m As Long

    l = 0: r = n

    Do While l <= r

        m = (l + r) / 2

        If Then

            r = m - 1

        Else

            l = m + 1

        End If

    Loop

    Label1.Caption = Str(r + 1)

End Sub

Function check(x As Long)

    Dim y As Long

    y = x

    For i = 1 To n

    Dim tmp As Long

   

    If tmp > 0 Then

        If y < 0 Then

            check = True

            Exit Function

        End If

    Next i

    check = False

End Function

Function Getin() As Long

    Dim aaa As String

    aaa = Mid(Text4.Text, tby, 1)

    If aaa = " " Then tby = tby + 1

    aaa = Mid(Text4.Text, tby, 1)

    Dim bbb As Long

    bbb = 0

    Do While aaa <> " " And tby <= Len(Text4.Text)

        bbb = bbb * 10 + Val(aaa) : tby = tby + 1

        aaa = Mid(Text4.Text, tby, 1)

    Loop

    Getin = bbb

End Function

(3) 程序中加框处代码有错,请改正。
综合题 困难