-
1、某工厂有n条生产线可加工a、b两类产品。为获取更大利润,需制定合适的生产线分配方案。要求:同一生产线上的订单时间不能重叠(需在前一订单完成后启动下一订单);a类和b类生产线至少各分配1条。产品加工规格:每个a类产品加工时长5个时间单位,收益10元;每个b类产品加工时长7个时间单位,收益15元。订单表示方法:每个订单表示为[产品类型,到达时间,产品数量]。例如:["a",15,10]表示a类产品订单,到达时间15,数量10。若订单到达时没有空闲生产线,则该订单转给其他公司处理。
设n为4,订单任务为task=[["a",0,10],["b",0,20],["a",20,30],["b",50,10],["a",30,20],["b",100,5],["b",200,30],["a",100,10],["b",300,10]],最佳分配方案:2条生产线加工a产品,2条生产线加工b产品。最大收益是:1550元。
请回答下列问题:
(1)若有3条生产线,订单 task=[["a",0,30],["b",0,20],["a",20,20],["b",50,10],["a",30,10]],则最佳分配方案中,a类产品分配生产线数量条。
(2)定义如下sort(que)函数,参数que列表的每个元素由产品类型、到达时间、产品数量3项组成。函数的功能是根据产品到达时间进行升序排序。
def sort(que):
for i in range(1, len(que)):
t= que[i]
j=i-1
while j>=0 and t[1]< que[j][1]:
que[j+1]=t
若que列表为[["a",10,10],["a",0,20],["a",50,30],["a",30,10]],则加框处代码执行次数是次。
(3)实现生产线分配方案的部分Python程序如下,请在划线处填入合适的代码。
def check(s,e,j):
money=0
if task[j][0]=="a":
time=5
m=10
else:
time=7
m=15
for i in range(s, e+1):
if top[i]==-1 or task[st[i][top[i]]][1]+ time* task[st[i][top[i]]][2]<= task[j][1]:
top[i]+=1
st[i]. append(j)
①
break
return money
#生产线总数存入变量n,订单任务存入task列表,代码略
maxans=0
sort(task)
for a_lines in range(1, n):
st=[[] for i in range(n)]
top=[-1]*n
ans=0
for j in range(len(task)):
if task[j][0]=="a":
ans+= check(0,a_lines-1,j)
elif task[j][0]=="b":
②
if ans> maxans:
maxans= ans
③
print("最佳分配方案:", best_allocation, "条生产线加工a产品, ",n-best_allocation, "条生产线加工b产品,最大收益是:", maxans, "元。“)
-
2、某校图书馆采用“智慧借阅系统”,学生可使用校园一卡通自助完成图书借阅和归还。操作时,学生只需将校园卡和图书放置在借阅机指定区域,系统将自动识别校园卡信息并验证读者身份,同时读取图书电子标签信息,完成整个借还流程。
(1)在设计“智慧借阅系统”的过程中,需要对该系统的输入、输出及人机界面进行设计,这一过程属于。(单选,填字母:A.需求分析/B.可行性分析/C.概要设计/D.详细设计)
(2)借阅机读取图书电子标签信息的过程中采用的技术是(单选,填字母:A.图像识别/B.射频识别/C.蓝牙)。
(3)某学生在其中一台借阅机上可通过输入学号查询借阅信息,但刷卡时屏幕反复提示“请刷卡”。出现该故障的原因可能是(多选,填字母)
A.校园卡失效 B.读卡器故障 C.网络连接失败 D.服务器故障
(4)针对第(3)题中出现的故障,选择其中一种可能的故障,描述判定该故障是否存在的方法。
(5)图书馆现有藏书如图a所示,图书管理员想了解当前图书馆藏书的类目情况,绘制图表如图b所示,程序代码如下。
import pandas as pd
import matplotlib. pyplot as plt
#设置正常显示中文标签,代码略
def calc(d, df, col):
for i in range(len( df)):
if df. at[i, col] not in d:
d[ df. at[i, col]]=0
d[ df. at[i, col]]+=df. at[i,'书名']
return d
df= pd. read _ excel('图书馆书目. xlsx')
d={}
dfg= df. groupby("类型1", as _ index= False). count()
d= calc(d, df,"类型1")
dfg2= df. groupby('类型2', as _ index= False). count()
d= calc(d, dfg2,"类型2")
plt. bar(______)
plt. title("各类型图书的图书数量")
plt. show()
①现要统计并输出不同类型的图书数量,如图b所示,则程序方框中处应填入的语句依次为(填字母序列,少选、多选、错选或次序错均不得分)。
A. dft= pd. DataFrame(d. items(), columns=['类型',"数量"])
B. dft= pd. Series(d. items(), columns=['类型',"数量"])
C. dft= dft. head(5)
D. dft= dft. sort _ values('数量', ascending= False)
E. dft= dft. sort _ values('数量', ascending= True)
②请在划线处填入合适的代码。
-
3、某车间有编号1~n段机械轨道,现轨道出现多处故障,需要进行维修。为尽快恢复生产,紧急维修部分轨道。出现连续两段及以上轨道故障无法正常运行,若任意连续3段轨道中仅有一段轨道发生故障,则不影响运行。编写程序,根据故障轨道的编号,输出最少需要维修的轨道编号。
例如故障轨道有[1,2,3,6,7,9],最少需要维修[2,3,7]这3段轨道。
请回答以下问题:
(1)若故障轨道编号为[1,2,3,4,5,7,8,9,13],则最少需要维修的轨道数量为段。
(2)请将程序补充完整。
#输入故障轨道序列faults,代码略
result=[]
n= len(faults)
repair=[False]*n
i=0
while i < n:
j= i +1
while j < n and faults[j]- faults[i] < 3:
①
j+=1
②
for i in range(n):
if repair[i]:
result. append(③)
print(result)
-
4、使用列表d模拟链表结构(节点数大于0),每个节点包含数据区域和指针区域,h为头指针,如图a所示。现要实现根据链表的数据区域进行升序排序,排序结果如图b所示。实现该功能的部分程序段如下,方框内应填入的正确代码为( )
h=4; flag= True
while flag:
flag= False
r=h
q=r
p=d[q][1]
while p!=-1:
if d[q][0]>d[p][0]:
d[r][1]=p
d[p][1]=q
flag= True
if q==r:
h=p
r=p
r=q
q=d[r][1]
# 输出排序后的链表,代码略
数据区域
指针区域
数据区域
指针区域
6
1
6
3
2
-1
2
4
1
3
h→
1
1
7
0
7
-1
h→
5
2
5
0
图a 图b
A、① d[q][1]=d[p][1] ② p=d[q][1] B、① d[q][1]=p ②p=d[q][1] C、① d[q][1]=p ② p=q D、① d[q][1]=d[p][1] ②p=q -
5、有如下Python程序段:
import random
a=[10,20,31,31,31,40,50,60]
key = random. randint(5,30)*2+1
i=0;j= len(a)-1
while i<=j:
m=(i+j)//2
if key>a[m]:
i=m+1
else:
j=m-1
执行该程序段后,i的值可能是( )
A、0 B、3 C、4 D、8 -
6、有如下python程序段:
from random import randint
a=[randint(1,5) for i in range(6)]
i,n=0, len(a)
while i<n:
r=i+1
for j in range(i+1,n):
if a[i]!=a[j]:
a[r]=a[j]
r+=1
n=r
i+=1
执行该程序段后,a的值可能是( )
A、[3,4,6,5,6,5] B、[5,4,3,3,5,3] C、[1,3,3,5,4,3] D、[1,2,4,2,5,2] -
7、有表达式“23+4*”依次入队,约定:T操作是队列中的1个元素出队后再入队,Q操作是队列中1个元素出队,现利用出入队操作将其转换成表达式“2+3*4”,则操作串是( )A、QTQTTTQTQT B、TTTQTQ C、QTQTTQTQQ D、TQQTTQTQ
-
8、某二叉树有六个节点,其部分结构如图所示,若该二叉树有2个度为2的节点,中序遍历为cbaedf,则该二叉树前序遍历是( )A、abcdef B、abcedf C、acbdef D、bcefda
-
9、下列哪一段代码不能实现如图中虚线框内流程图的程序效果( )
A.
if a<b
m=b
elif a<c
m=c
else:
m=a
B.
m=c
if b>m:
m=b
if a>m:
m=a
C.
if a < b:
if b < c:
m=c
else:
m=b
else:
if a < c:
m=c
else:
m=a
D.
def find_m (a,b,c):
if b>a:
a =b
if c>a:
a=c
return a
m=find_m(a,b,c)
A、A B、B C、C D、D -
10、某校“数字校园”中“云管理”系统部分功能是:学生可通过人脸识别系统进出寝室、晨跑打卡以及在校内消费(如用餐、购物)。宿管人员以及班主任可通过该系统查询学生的迟到记录或考勤数据。家长则可通过微信小程序为学生的校园卡进行充值,并实时查询消费明细。关于该系统中网络技术的说法,正确的是( )A、该系统需要通过计算机网络访问 B、该系统的网络资源不包括硬件资源 C、在校内使用刷脸设备不需要连接网络 D、家长充值过程中的网络传输依赖于TCP/IP协议
-
11、某校“数字校园”中“云管理”系统部分功能是:学生可通过人脸识别系统进出寝室、晨跑打卡以及在校内消费(如用餐、购物)。宿管人员以及班主任可通过该系统查询学生的迟到记录或考勤数据。家长则可通过微信小程序为学生的校园卡进行充值,并实时查询消费明细。关于该信息系统功能和应用的说法,不正确的是( )A、该系统具有数据采集、处理和储存功能 B、分析学生的用餐数据,合理调配食堂菜品 C、家长查询的消费数据存储在微信小程序中 D、宿管人员查看学生迟到情况属于数据查询功能
-
12、某校“数字校园”中“云管理”系统部分功能是:学生可通过人脸识别系统进出寝室、晨跑打卡以及在校内消费(如用餐、购物)。宿管人员以及班主任可通过该系统查询学生的迟到记录或考勤数据。家长则可通过微信小程序为学生的校园卡进行充值,并实时查询消费明细。关于该系统组成的说法,正确的是( )A、识别人脸的摄像头属于输出设备 B、该系统需要预存所有学生的人脸照片 C、该系统数据可以存储在“云盘”,不需要服务器 D、该系统用户仅包括学生、教师、宿管人员和家长
-
13、某校构建了一个集“云游校园”、“云看学生”、“云学习”等多种功能的“数字校园”平台。校友可通过VR全景导览功能远程游览校园景观与文化地标,体验“云游校园”;家长依托实时监控与AI互动功能,随时查看孩子的在校动态,并接收系统自动生成的学习报告与生活记录,实现“云看学生”;学生可通过云端课堂参与混合式教学,结合AI智能答疑、虚拟实验室等工具,实现个性化、高效率的“云学习”。为提高“云学习”模块中AI答疑的准确性,下列方法可行的是( )A、提高客户端设备的硬件性能 B、增加AI知识库中的相关学科内容 C、缩短互动答疑页面的加载速度 D、定期清理AI答疑系统的缓存数据
-
14、某校构建了一个集“云游校园”、“云看学生”、“云学习”等多种功能的“数字校园”平台。校友可通过VR全景导览功能远程游览校园景观与文化地标,体验“云游校园”;家长依托实时监控与AI互动功能,随时查看孩子的在校动态,并接收系统自动生成的学习报告与生活记录,实现“云看学生”;学生可通过云端课堂参与混合式教学,结合AI智能答疑、虚拟实验室等工具,实现个性化、高效率的“云学习”。下列有关信息安全与保护的做法,不合理的是( )A、家长可以下载与AI互动的内容 B、以密文形式保存所有用户的注册信息 C、采用用户名+动态口令的方式登录“数字校园” D、对所有“数字校园”平台用户设置相同的访问权限
-
15、某校构建了一个集“云游校园”、“云看学生”、“云学习”等多种功能的“数字校园”平台。校友可通过VR全景导览功能远程游览校园景观与文化地标,体验“云游校园”;家长依托实时监控与AI互动功能,随时查看孩子的在校动态,并接收系统自动生成的学习报告与生活记录,实现“云看学生”;学生可通过云端课堂参与混合式教学,结合AI智能答疑、虚拟实验室等工具,实现个性化、高效率的“云学习”。关于该校“数字校园”平台中数据的叙述,不正确的是( )A、家长“云看学生”体现了信息的共享性 B、“数字校园”平台中的数据都是经过数字化的数据 C、“云游校园”中涉及的VR全景数据都是结构化数据 D、“云学习”中的所有数据均以二进制形式存储在计算机中
-
16、编写一个Python程序,实现链表操作:初始链表中的元素从头部到尾部依次为1到20。整数m表示后续要进行的操作总数。随后输入的m行数据每行包含三个整数,分别记为a、b和c。不同的a值对应不同的操作,具体规则如下:
当a为1时,在链表的第b个位置插入元素c;
当a为2时,将链表中第b到第c位置的这段子序列进行反转;
当a为3时,删除链表中第b到第c位置的所有元素;
当a为4时,输出链表中第b到第c位置的所有元素。
例如,程序运行结果见下图。
(1)请在划线处填入合适的代码。
def insert_node(L, head, pos, value):
new_node= [value, - 1]
if pos == 1:
new_node[1] = head
L. append(new_node)
head= len(L)-1
else:
index = head
for j in range(pos - 2):
index = L[index][1]
new_node[1] = L[index][1]
L. append(new_node)
①
return head
def reverse_segment(L, head, start, end):
if start == end:
return
pre = - 1
cur = head
for j in range(start - 1):
pre = cur
cur = L[cur][1]
start_index = cur
for j in range(end - start):
cur = L[cur][1]
end_index = cur
next_index = L[end_index][1]
ne = next_index
c = start_index
while c != next_index:
if pre != - 1:
L[pre][1] = ne
else:
head = ne
return head
def delete_segment(L, head, start, end):
pre = - 1
cur = head
for j in range(start - 1):
pre = cur
cur = L[cur][1]
for j in range(end - start):
cur = L[cur][1]
②
if pre !=-1:
L[pre][1] = next_index
else:
head = next_index
return head
def print_segment(L, head, start, end):
result = []
index = head
for j in range(start - 1):
index = L[index][1]
for j in range(end - start + 1):
result. append(str(L[index][0]))
③
print("输出: "+" ". join(result))#将列表result的元素顺序连接成字符串并输出
L = [[i, i] for i in range(1,21)]
L[-1][1] = - 1
h=0
m = int(input("请输入操作总数m: "))
for k in range(m):
print("操作"+ str(k+1)+": ", end="")
a, b, c = map(int, input(). split()) #变量a、b、c分别存储某个操作需要的三个整数
if a == 1:
h= insert_node(L, h, b, c)
elif a == 2:
h= reverse_segment(L, h, b, c)
elif a == 3:
h= delete_segment(L, h, b, c)
elif a == 4:
print_segment(L, h, b, c)
(2)加框处代码应该为(单选)
A.
L[c][1] = ne
ne = c
c = L[c][1]
B.
c = L[c][1]
L[c][1] = ne
ne = c
C.
t = L[c][1]
ne = c
L[c][1] = ne
c = t
D.
t = L[c][1]
L[c][1] = ne
ne = c
c = t
-
17、小杨搭建了一个大棚温度监测系统,该系统结构示意图如图所示。
(1)该系统的架构是(单选,填字母:A. B/S架构 B. C/S架构)。
(2)图中编号①②③④处表示的设备分别是。(按顺序填字母:A. IoT模块 B.执行器 C.数据库 D.传感器)
(3)小杨在搭建信息系统之前做了一系列的前期准备,其中一个准备工作是划分系统模块、确定模块功能和模块间的调用关系,这属于前期准备中的(单选,填字母:A.可行性分析 B.概要设计 C.需求分析 D.详细设计)
(4)该系统智能终端的部分代码如下。程序中加框处代码有错,请改正。
IP = "192.168.0.11" ; PORT = "8080"
SSID="dp" ; PASSWORD="wdjcxt"
#部分网络配置的代码略
While True:
tmp =(pin0. read_analog()/1024)*3000/10. 24
errno, resp = Oblog. get(" get? val="+ str(round(tmp,1)),10000)
if errno == 200:
display. show(str(resp))
if resp == 1:
pin8. write_digital(1)
else:
pin8. write_digital(0)
else:
display. show(str(errno))
#等待3分钟
(5)根据(4)的代码,判断下列说法不正确的是(单选,填字母)
A.该智能终端连接的SSID名称是“wdjcxt”
B.温度传感器应接在智能终端的pin0接口
C.执行器应接在智能终端的pin8接口
(6)若某时刻传感器获取到的数值为35.7,则相应的网址为http://。
-
18、基数排序是一种独特且高效的排序方法。它采用“按位分组”策略,从个位开始,将数字按每一位的数值分配至对应的“桶”中,完成一次排序后,再按十位、百位依次重复该过程,最终实现整体有序。它将待排序自然数统一数位长度,数位短的补零。例如:
待排序序列为“589, 36, 4, 8, 6, 865, 71, 46, 111”
第一次将每个元素按个位放入对应的桶中
将桶中元素分别自底向上取出,形成新序列“71, 111, 4, 865, 36, 6, 46, 8, 589”
第二次将每个元素按十位放入对应的桶中,没有十位的放入0号桶
将桶中元素分别自底向上取出,形成新序列“4, 6, 8, 111, 36, 46, 865, 71, 589”
第三次将每个元素按百位放入对应的桶中,没有百位的放入0号桶
将桶中元素分别自底向上取出,得到排序后序列“4, 6, 8, 36, 46, 71, 111, 589, 865”
(1)若输入的待排序序列为“56, 3, 6, 80, 357, 4, 854, 79”,则第二次排序结束后得到的序列为
(2)请在划线处填入合适的代码。
def radix_sort(li):
List = li ; max_num = max(List) ; i = 0
while i < len(str(max_num)):
temp = [[] for j in range(10)]
for item in List:
temp[radix]. append(item)
List = []
for item in temp:
for j in item:
List. append(j)
①
return List
s = input("请输入待排序数据(中间用逗号分隔):")
a = list(map(int, s. split(", "))) #将字符串s按逗号分隔,并转换为整数列表a
print( ②)
(3)程序中加框处代码有错,请改正。
-
19、执行如下程序段,下列说法正确的是( )
from random import randint
nums = [0 for i in range(10)]
nums[0]= randint(0,20)
for i in range(1,10):
nums[i] = nums[i-1] + randint(0,6)
target = 20 ; count=0
left, right = 0, len(nums) - 1
while left <= right:
mid =(left + right) // 2
if nums[mid] == target:
break
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
count += 1
print(count)
A、数组nums中不可能存在重复元素 B、程序结束后,变量left的值可能会小于0 C、程序结束后,输出结果可能为0 D、若target等于nums[5],程序运行后count一定等于2 -
20、执行如下程序段,下列说法正确的是( )
s = [0] * 100 ; q = [0] * 100
top = - 1 ; result = 0
exp = "+1+23+456"
for c in:
if "0" <= c <= "9":
top += 1
s[top] = int(c)
elif top != - 1:
num=0
while top != - 1:
num= num * 10 + s[top]
top -= 1
result += num
print(result)
A、程序计算的是数学表达式654+32+1的运算结果 B、若加框处代码改为range(len(exp)-1,-1,-1),程序运行结果不变 C、若第三行代码改为exp="1+23+456",程序运行结果不变 D、若第三行代码改为exp="+1+23+456+",程序运行结果不变