1. 要向可容纳88966名观众的卢赛尔球场派送外卖是一项艰巨的任务,为了方便外卖派送,将球场观众席划分为A、B、C、D、E、F、G、H等8个区。派单平台可以根据各区域订单数量安排派送人员,以提高外卖派送效率(一个派送人员只安排一个区域),平台根据订单总量与空闲派送人员数量计算人均派单量,按平均派单数计算各区域所需派送人员。但按此方法分配派送人员,人员总数可能超过空闲派送人员数,则删除超额派送人数。删除规则如下:每个有订单的区域至少保留一个派送人员;每个区域最多减去一个派送人员,优先删除派单尾数最少的区域中的派送人员;如果派单尾数相同,则在分配到派送人员数最多的区域中去掉一个派单人员。例如:A~H区域的订单数量分别为[468,329,392,247,38,180,263,82],此时空闲派单人员数为30人,人均派单数为67,则各区域分配的派单人员数量分别为7、5、6、4、1、3、4、2,合计32个派送人员,需减掉2个超额派送人员,即从D区和H区派送人员中各减去1个。如下表所示:

(1) 数据如上表所示,如果 F 区退掉2份订单,重新计算并分配派送人员(整体调整),F区派送人员的人均派单量是
(2) 实现上述功能的Python程序如下,请在画线处填写正确的代码。

#从数据库中读取各订单所在区域,如a=[‘A’,‘B’,‘H’,‘F’, … …]

qyn=8

#区域数量

psryn=30

#配送人员数量

rs=round(len(a)/psryn)

b=[]

for i in range(qyn):

    c=chr(i+65)         # “A”的Ascii码值是65

    b.append([c,0,0])    #生成二维列表b=[[‘A’,0,0],[‘B’,0,0]…

…]

for i in a:

        #统计各区域订单数量

s=0

for i in range(qyn):

   

    If b[i][1]%rs!=0:

        b[i][2]+=1

    s+=b[i][2]

k=s-psryn

i=0

while k>0:

    for j in range(qyn-1,i,-1):

        :

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

    if b[i][2]>1:

        b[i][2]-=1

        k-=1

    i+=1

(3) 若程序中语句“s+=b[i][2]”缩进到了“if b[i][1]%rs!=0:”模块内,题中所给的样例数据运行结果(是/否)受到影响,将样例“E”区订单数量38修改为能测出程序存在的问题。
【考点】
常见数据类型、数组; 排序算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
3. 小明编写了一个图书录入系统的VB程序,功能如下:单击“读数据库”按钮Command1,从数据库中读取相应数据并显示在列表框List1中,在文本框Text1中实现数据录入这类图书的数量,单击“录入数据”按钮Command2实现数据录入,并按数量降序的方式显示在列表框List2中。程序运行界面如图所示。实现上述功能的VB程序如下,请回答下列问题:

(1) 分析程序,可知数据库的文件名为
(2) 请在划线处填入合适的代码。

Dim sType(1 To 200)As string                 '存放图书类别

Dim sNumber(1 To 200)As Integer         '存放图书数量

Dim n As Integer

Private Sub Command1_Click( )

    Dim conn As New ADODB Connection

    Dim rs As New ADODB Recordset

    conn. Connection String="Provider=Microsoft.AC

    A.OLEDB.12.0;DATA Source="& App. Path &"\ALibrary. accdb"

    conn. Open

    Set rs. Active Connection=conn

    rs. Open"Select*From Book"

    '本过程从数据库中读取图书数据,存储在相应的变量中,并在List1中显示

    '代码略

End Sub

Private Sub Command2_Chck()

    Dim i As Integer, j As Integer, t As Integer, y As Integer

    Dim x As String, s As String

    Dim flag As Boolean

    List2. Clear

    x=Text1. Text

    y=Val(Text2. Text)

    flag=True

    For i=1 To n

        If sType(i)=x Then

           

            flag=False

            Exit for

        End If

    Next i

    If flag Then

       

        sType(n)=x

        sNumber(n)=y

    End If

    For i=1 To n-1

        For j=i+1 To n

            If Then

                t=sNumber (j):s Number(j)=sNumber(i):sNtmaber (i)=t

                s=sType(j):sType(j)=sType(i):sType(i)=s

            End If

        Next j

    Next i

    List2. AddItem("类别数量")

    For i=1 To n

        List2. AddItem sType(i)&" "&Str(sNumber(i))

    Next i

End sub

综合题 困难