当前位置: 高中信息技术 / 综合题
  • 1. (2023·宁波模拟) 某医院的看病流程为:患者通过网上、自助设备或人工窗口成功挂号后,到门诊的签到处签到,签到成功后即可排队等待叫号就诊。简化的排队规则如下:

    ①当天08:00之前完成签到的患者,按照挂号顺序从小到大排队就诊;

    ②08:00之后签到的患者,按照挂号的序号从小到大的次序插入候诊队伍中;

    ③队伍中前3名患者(包括正在就诊患者)视为已进入待诊状态,插队的患者只能插到这3 名待诊患者后的队伍中。

    假设医生从08:00开始叫号就诊,对每位患者的诊断时间均为3分钟,忽略相邻患者就 诊的时间间隔。编写程序实现以下功能:若有患者签到,则根据规则更新候诊队伍;医生每 完成一名患者的诊断,电子屏幕上按顺序显示待诊的患者姓名和每个患者预计就诊的时间。

    1. (1) 若当前已签到患者信息如下表所示:

      姓名

      挂号序号

      签到时间

      A

      3

      07:47:03

      B

      1

      07:51:12

      C

      6

      07:55:32

      D

      4

      07:57:10

      E

      8

      07:59:52

      F

      2

      08:02:07

      则患者 F的预计就诊时间为  (格式如08:07:20)。

    2. (2) 08:00:00之前签到的患者原始数据存在列表1st  中,每位患者信息包括姓名、挂号序 号、签到时间,以下函数将列表中的数据按挂号序号从小到大排序,并构建候诊队伍。

      def init(lst):     #构建8点前签到的候诊队伍

          i=0;n=len(lst)

          while i<n-1:

              k=i;i=n-1

              for j in range(n-1,k,-1):

                  if lst[i][1]<lst[j-1][1]:

                      lst[j],Ist[j-1]=Ist[j-1],Ist[j]

              ____▲____

          for i in range(n):

              lst[i][2]=180*i

              lst[i].append(i+1)

          lst[n-1][3]=-1

      #修改时间格式,每位患者诊断时间为3分钟

      #尾结点指针域处理,如[’E’,8,720,-1]

      程序划线处的代码是       (单选,填字母)

      A . i=i+1 B . i=j+1 C . i=k-1 D . i=j
    3. (3) 每当一位患者就诊结束,更新队伍并按就诊顺序输出待诊的患者姓名和每个患者预计就诊的时间。请补充程序划线处。

      def gs(t):#     时间格式转换,将时间戳127转成“08:02:07”形式

          t=t+8*60*60

          h=t//3600

          m=

          s=t%60

          time='%02d'%h+:'+'%02d%m+:+'%02d'%s

          return time

      def mov(lst,head):

          #更新队伍并输出,代码略

          return head

    4. (4) 若有患者签到,则更新候诊队伍。请补充程序划线处。

      def te(time):    #时间格式转换,将“08:02:07”转换成以秒为单位的时间戳127

          t=int(time[0:2])*60*60+int(time[3:5])*60+int(time[6:])

          t=t-8*60*60    #8 点开始叫号看诊

          return t

      def insnew(lst,head,data); #将新签到的患者插入候诊队伍中,并更新每个患者预计就诊的时间

          data[2]=tc(data[2])

          data.append(-1)

          p=head;q=p;k=0

          if head=-1:#       无人排队

              lst.append(data)

             

          else:

              while q!=-1 and():

                  k=k+1

                  p=q

                  q=lst[q][3]

              data[2]=lst[p][2]+180

              data[3]=q

              lst.append(data)

              lst[p][3]=len(lst)-]

              p=len(lst)-1

              while q!=-1:

                  lst[q][2]=1st[p][2]+180

                  p=q

                  q=lst[q][3]

          return head

微信扫码预览、分享更方便