资源简介 非选择题专项(一)二、非选择题(本大题共3小题,其中第13题9分,第14题8分,第15题9分,共26分)13.小明为蔬菜大棚搭建了一个简易温度监测控制系统,可以设定阈值,系统提供自动及手动工作模式。自动工作模式时,系统会自动根据温度变化情况控制是否加热,使蔬菜大棚保持适合的温度。手工工作模式,可以通过浏览器远程访问系统控制网页,直接开启或关闭加热器。该系统结构示意图如图所示。系统为B/S开发模式,使用micro:bit作为智能终端,温度传感器采集数据。传感器采集的数据由智能终端经IoT模块发送到Web服务器,用户可通过浏览器查询实时和历史数据。执行器用于实现温度的控制。根据以上功能描述,请回答下列问题:(1)下列关于该信息系统的说法,正确的是________(单选,填字母)。A.在该信息系统中,智能终端的作用相当于中央处理器CPUB.在该信息系统中,传感器和执行器没有智能终端的控制不能正常工作C.概要设计阶段,包括系统的模块结构设计、系统物理配置和数据库设计三大部分(2)通过浏览器远程手动模式开启加热器操作时,指令数据的传输过程为________。(单选,填字母)A.浏览器→数据库→智能终端 B.浏览器→智能终端→服务器C.浏览器→Web服务器→智能终端(3)根据题意,下列功能需要在智能终端程序中实现的是________。(多选,填字母:A.采集温度传感器上的数据/B.处理浏览器访问请求/C.接收服务器指令/D.打开或关闭加热器)。(注:全部选对的得2分,选对但不全的得1分,不选或有选错的得0分)(4)智能终端上的程序具有如下功能:每隔5分钟从传感器获取1次温度值:加热器处于关闭状态时,若温度值小于等于阈值temp1,则打开加热器;加热过程中,若温度值大于等于阈值temp2,则关闭加热器;并将温度数据传输到服务器。部分Python程序如下,请在程序中划线处填入合适的代码。#导入相关库,代码略flag=Falsewhile True: #从传感器获取温度值,保存在newtemp中,代码略 #从服务器获取温度阈值temp1和temp2及工作模式数据auto代码略 if auto==True: if newtemp<=temp1 and flag==False: ① #打开加热器,代码略 elif ② and flag== True: flag=False #关闭加热器,代码略 else: #执行手动控制加热器,代码略 #将newtemp,flag等数据传输到服务器。代码略 sleep(1000*5*60) #延时5分钟(5)该系统使用后发现通过浏览器远程访问系统控制网页,能直接开启或关闭加热器。小明希望实际温度低于20摄氏度时,加热器开启加热,当温度高于26摄氏度时,加热器关闭加热,但在实际应用中自动模式下温度低于20摄氏度时,加热器没有开启,而此时手动模式开启正常,请分析可能的原因____________________________________________________________________________________________________________________________________________(注:回答2项,1项正确得1分)。14.小红从网上下载收集了浙江省部分海岛2022年10月~12月的天气预报信息,存储在Excel文件中,包含预报时间、站点编号、浪高、温度、风向以及风速,如图a所示,海浪等级信息如图b所示,她要编写一个Python程序快速对海岛天气数据进行分析。图a浪高值 风浪等级0 无浪1~10 微浪10~25 小浪25~100 中浪>100 大浪图b(1)为了获取该数据集中预报信息最多的海岛站点编号及该岛某月各风浪等级的预报次数,小红需要对图a所示的表中数据进行整理,下列说法正确的是________。(多选,填字母)A.第4行和第5行数据重复,删除其中一行即可B.通过检测发现D7单元格的数据存在错误,应进行修正C.删除“风向”和“风速”两列数据,不影响分析结果D.“浪高”为0的数据没有任何价值,可以直接删除(2)小红利用整理好的数据,编写并运行程序,求出预报信息最多的海岛站点编号并根据给定月份,分析该月的数据并可视化,可视化结果如图c所示,请在划线处填入合适的代码。import pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['KaiTi','SimHei','FangSong'] #设置中文字体显示df=pd.read_excel(″浙江省海岛预报信息.xls″)def zhengli(): #整理数据 df[″风浪等级″]=″无浪″ for i in df.index: t=df[″浪高″][i]if t>100: df[″风浪等级″][i]=″大浪″ elif t>25: df[″风浪等级″][i]=″中浪″ elif t>10: df[″风浪等级″][i]=″小浪″ ① df[″风浪等级″][i]=″微浪″for i in df. index:#截取″预报时间″列中的月份日期信息,添加到″月份″列和″日期″列 df.at[i,″月份″]=str(df.at[i,″预报时间″])[5:7] df.at[i,″日期″]=str(df.at[i,″预报时间″])[8:10]zhengli()df1=df.groupby(② , as_index=False).count()df1_sort=df1.sort_values(″预报时间″ , ascending=False,ignore_index=True)top=df1_sort[″站点编号″][0]print(″预报信息最多的海岛站点编号是:″, top)df2=df[df.站点编号==top]m=input(″请输入要查询的月份:″)df3=③ df3=df3.groupby(″风浪等级″).预报时间.count()x=df3.indexy=df3.valuesplt.plot(x,y)#设置绘图参数,绘制如图c所示线形图,代码略。图c(3)观察图c图表可知,该海岛12月出现天数最多的风浪等级为 。15.某仓库有一排连续相邻的货位,现有多批货物需要临时存放,每批货物占用不同长度的相邻货位,其中将未放置货物的连续货位,称为一个“空闲区间”。在货物存放和搬离的过程中,可能会产生大量的“碎片区间”(碎片区间是长度小于等于10的连续货位)。为解决上述问题,小辰设计一种货位分配方案,即每次都将新货物存放在满足存放要求且最长的空闲区间的头部(不会出现货物无法存放的情况),并在货物搬离后将连续的空闲区间合并。若仓库货位长度n为100,按图a所示的操作顺序执行(操作类型为0表示存放、1表示搬离),则货物存放和搬离过程如图b所示,最终货物的存放方案存储在“区间分配表”中,如图c所示。表中区间按地址顺序存放且货物编号为“0”表示该区间为空闲区间,最终可知该存放方案的碎片区间个数为1。编写程序,根据分配方案执行货物存放或搬离操作,并统计操作后碎片区间的数量。请回答以下问题:货物编号 操作类型 货物长度1 0 302 0 201 13 0 304 0 203 1图a图b起始地址 区间长度 货物编号0 20 420 10 030 20 250 50 0图c 区间分配表货物编号 操作类型 货物长度1 0 402 0 303 0 504 0 601 15 0 353 16 0 404 1图d(1)若仓库货位长度n为200,需要执行的货物操作流程如图d所示,则执行完流程后,“区间分配表”中碎片区间的起始地址和区间长度分别为________。(2)为了能够快速地获取到最长空闲区间的信息,小辰创建了包含所有空闲区间的空闲链表,并在货物放置和搬离过程中保持链表按照区间长度降序。为实现上述功能定义如下sort(k)函数,参数k表示待插入链表的节点地址。函数功能为将新节点插入至空闲链表中并保持降序。链表节点lst[k]中的地址k为区间的起始地址,数据域lst[k][0]为区间长度,指针域lst[k][1]、lst[k][2]分别为前驱指针和后继指针,请将以下代码补充完整。def sort(k): #降序链表 global head #可以在函数中修改 head 变量的值 q=-1;p=head while p!=-1 and lst[k][0]<=lst[p][0]: q=p p=lst[p][2] if p==head: lst[p][1]=k head=k elif p==-1: lst[q][2]=k else: lst[q][2]=k lst[p][1]=k lst[k][2]=p(3)实现上述功能的部分 Python 程序代码如下,请在划线处填入合适的代码。def delete(k): #从空闲链表中删除地址为 k 的节点,同时更新头指针 head,代码略def alloc(num,length): global head for i in range(len(fq)): if fq[i][0]==head and fq[i][2]==0: break fq[i][1]=length fq[i][2]=num sy=lst[head][0]-length ① delete(head) #删除头节点if sy>0: fq.insert(i+1,[k,sy,0]) #在i之后添加新的空闲区 lst[k]=[sy,-1,-1] #更新空闲区长度 sort(k)def releace(num): for i in range(len(fq)): if num==fq[i][2]: break ② lst[fq[i][0]]=[fq[i][1],-1,-1] #若区间 fq[i]和 fq[i+1]为相邻空闲区间则合并,并修改“区间分配表”和“空闲链表”,代码略 if i!=0 and fq[i-1][2]==0: fq[i-1][1]+=fq[i][1] ③ delete(fq[i-1][0]) fq.pop(i) #删除“区间分配表”索引为i的区间 sort(fq[i-1][0]) else: sort(fq[i][0])#按行读取操作流程,并将数据存储值列表d中,其中d[i][0]和d[i][1]分别表示区间i的货物编号和操作类型,d[i][2]表示存储操作时的货物长度。n=200 #货位长度fq=[[0,n,0]] #区间分配表lst=[[0,-1,-1] for i in range(n)] #空闲链表head=0;lst[head][0]=nfor i in range(len(d)): if d[i][1]==″0″: alloc(int(d[i][0]),int(d[i][2])) else: releace(int(d[i][0]))#遍历链表lst,统计碎片区间数量并输出,代码略非选择题专项(一)13.(1)B (2)C (3)ACD (4)①flag=True②newtemp>=temp2 (5)温度传感器损坏或服务器阈值设置不正确或web服务器程序代码有误解析 (1)A选项智能终端负责数据采集与传输,并控制执行器工作。C选项概要设计阶段包括系统的模块结构设计、系统物理配置、数据库管理系统选择等。(2)通过浏览器远程手动模式开启加热器操作时指令数据的传输过程为从浏览器至Web服务器,再从Web服务器传输至智能终端。(3)智能终端通过温度传感器采集的数据由智能终端经过IoT模块发送到Web服务器,再接收服务器的控制指令打开或关闭加热器。(4)①flag表示加热器的工作状态,其值为False且条件newtemp<=temp1成立,设置flag为True。②加热过程中,若温度值newtemp大于等于阈值temp2,则关闭加热器。(5)略。14.(1)BC (2)①elif t>=1:或elif t>0: ②″站点编号″ ③df2[df2.月份==m] (3)微浪解析 (1)略。(2)①除此外还有″微浪″和″无浪″情况,因此加上微浪的条件。②预报信息最多的海岛站点编号,因此需对海岛站点编号进行分组。③输入要查询的月份m,因此需筛选出符合条件的数据。(3)略。15.(1)35 5 (2)lst[k][1]=q (3)①k=head+length②fq[i][2]=0 ③lst[fq[i-1][0]][0]+=fq[i][1]解析 (1)35 5,本题使用了一种称为“最坏适配”的算法,即每次都从剩余空闲区间中选择最大的区间用于分配,这样的算法能够使空闲区间的大小趋于均匀,尽量避免出现无法使用的碎片区间。(2)lst[k][1]=q,将地址为k的节点降序连接至双向链表lst中。(3)①k=head+length;②fq[i][2]=0;③lst[fq[i-1][0]][0]+=fq[i][1]。本题的核心问题在于分配和释放区间的过程中,需要同时维护好“区间分配表”fq和“空闲链表”lst。为实现快速的区间分配和合并,空闲链表lst的节点的地址为区间分配表fq中空闲区间的起始地址。函数alloc(num,length)中,需要从lst的头节点中分配出一个长度为length的区域。为实现上述功能,需要先将lst中的头节点删除,在fq中修改好分区后,再将剩余空闲区间重新连接至降序双向链表lst中。函数release(num),则用于将编号为num的区间删除,即释放num区间并转换为空闲区间。新增的空闲区间需要和前后区间进行对比,若前后存在空闲区间,则需与新空闲区间进行合并。上述的区间的释放与更新都需要修改fq和lst中的区间。(共21张PPT)非选择题专项(一)第四部分 考前题型特训二、非选择题(本大题共3小题,其中第13题9分,第14题8分,第15题9分,共26分)13.小明为蔬菜大棚搭建了一个简易温度监测控制系统,可以设定阈值,系统提供自动及手动工作模式。自动工作模式时,系统会自动根据温度变化情况控制是否加热,使蔬菜大棚保持适合的温度。手工工作模式,可以通过浏览器远程访问系统控制网页,直接开启或关闭加热器。该系统结构示意图如图所示。系统为B/S开发模式,使用micro:bit作为智能终端,温度传感器采集数据。传感器采集的数据由智能终端经IoT模块发送到Web服务器,用户可通过浏览器查询实时和历史数据。执行器用于实现温度的控制。根据以上功能描述,请回答下列问题:(1)下列关于该信息系统的说法,正确的是 (单选,填字母)。A.在该信息系统中,智能终端的作用相当于中央处理器CPUB.在该信息系统中,传感器和执行器没有智能终端的控制不能正常工作C.概要设计阶段,包括系统的模块结构设计、系统物理配置和数据库设计三大部分(2)通过浏览器远程手动模式开启加热器操作时,指令数据的传输过程为 。(单选,填字母)A.浏览器→数据库→智能终端 B.浏览器→智能终端→服务器C.浏览器→Web服务器→智能终端(3)根据题意,下列功能需要在智能终端程序中实现的是 。(多选,填字母:A.采集温度传感器上的数据/B.处理浏览器访问请求/C.接收服务器指令/D.打开或关闭加热器)。(注:全部选对的得2分,选对但不全的得1分,不选或有选错的得0分)(5)该系统使用后发现通过浏览器远程访问系统控制网页,能直接开启或关闭加热器。小明希望实际温度低于20摄氏度时,加热器开启加热,当温度高于26摄氏度时,加热器关闭加热,但在实际应用中自动模式下温度低于20摄氏度时,加热器没有开启,而此时手动模式开启正常,请分析可能的原因________________________________________________________________________________________(注:回答2项,1项正确得1分)。答案 (1)B (2)C (3)ACD (4)①flag=True ②newtemp>=temp2 (5)温度传感器损坏或服务器阈值设置不正确或web服务器程序代码有误解析 (1)A选项智能终端负责数据采集与传输,并控制执行器工作。C选项概要设计阶段包括系统的模块结构设计、系统物理配置、数据库管理系统选择等。(2)通过浏览器远程手动模式开启加热器操作时指令数据的传输过程为从浏览器至Web服务器,再从Web服务器传输至智能终端。(3)智能终端通过温度传感器采集的数据由智能终端经过IoT模块发送到Web服务器,再接收服务器的控制指令打开或关闭加热器。(4)①flag表示加热器的工作状态,其值为False且条件newtemp<=temp1成立,设置flag为True。②加热过程中,若温度值newtemp大于等于阈值temp2,则关闭加热器。(5)略。14.小红从网上下载收集了浙江省部分海岛2022年10月~12月的天气预报信息,存储在Excel文件中,包含预报时间、站点编号、浪高、温度、风向以及风速,如图a所示,海浪等级信息如图b所示,她要编写一个Python程序快速对海岛天气数据进行分析。图a浪高值 风浪等级0 无浪1~10 微浪10~25 小浪25~100 中浪>100 大浪图b(1)为了获取该数据集中预报信息最多的海岛站点编号及该岛某月各风浪等级的预报次数,小红需要对图a所示的表中数据进行整理,下列说法正确的是 。(多选,填字母)A.第4行和第5行数据重复,删除其中一行即可B.通过检测发现D7单元格的数据存在错误,应进行修正C.删除“风向”和“风速”两列数据,不影响分析结果D.“浪高”为0的数据没有任何价值,可以直接删除(2)小红利用整理好的数据,编写并运行程序,求出预报信息最多的海岛站点编号并根据给定月份,分析该月的数据并可视化,可视化结果如图c所示,请在划线处填入合适的代码。import pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['KaiTi','SimHei','FangSong'] #设置中文字体显示df=pd.read_excel(″浙江省海岛预报信息.xls″)def zhengli(): #整理数据图c(3)观察图c图表可知,该海岛12月出现天数最多的风浪等级为 。答案 (1)BC (2)①elif t>=1:或elif t>0: ②″站点编号″ ③df2[df2.月份==m] (3)微浪解析 (1)略。(2)①除此外还有″微浪″和″无浪″情况,因此加上微浪的条件。②预报信息最多的海岛站点编号,因此需对海岛站点编号进行分组。③输入要查询的月份m,因此需筛选出符合条件的数据。(3)略。15.某仓库有一排连续相邻的货位,现有多批货物需要临时存放,每批货物占用不同长度的相邻货位,其中将未放置货物的连续货位,称为一个“空闲区间”。在货物存放和搬离的过程中,可能会产生大量的“碎片区间”(碎片区间是长度小于等于10的连续货位)。为解决上述问题,小辰设计一种货位分配方案,即每次都将新货物存放在满足存放要求且最长的空闲区间的头部(不会出现货物无法存放的情况),并在货物搬离后将连续的空闲区间合并。若仓库货位长度n为100,按图a所示的操作顺序执行(操作类型为0表示存放、1表示搬离),则货物存放和搬离过程如图b所示,最终货物的存放方案存储在“区间分配表”中,如图c所示。表中区间按地址顺序存放且货物编号为“0”表示该区间为空闲区间,最终可知该存放方案的碎片区间个数为1。编写程序,根据分配方案执行货物存放或搬离操作,并统计操作后碎片区间的数量。请回答以下问题:货物编号 操作类型 货物长度1 0 302 0 201 1 3 0 304 0 203 1 图a图b起始 地址 区间 长度 货物编号0 20 420 10 030 20 250 50 0图c 区间分配表货物编号 操作类型 货物长度1 0 402 0 303 0 504 0 601 1 5 0 353 1 6 0 404 1 图d(1)若仓库货位长度n为200,需要执行的货物操作流程如图d所示,则执行完流程后,“区间分配表”中碎片区间的起始地址和区间长度分别为 。(2)为了能够快速地获取到最长空闲区间的信息,小辰创建了包含所有空闲区间的空闲链表,并在货物放置和搬离过程中保持链表按照区间长度降序。为实现上述功能定义如下sort(k)函数,参数k表示待插入链表的节点地址。函数功能为将新节点插入至空闲链表中并保持降序。链表节点lst[k]中的地址k为区间的起始地址,数据域lst[k][0]为区间长度,指针域lst[k][1]、lst[k][2]分别为前驱指针和后继指针,请将以下代码补充完整。答案 (1)35 5 (2)lst[k][1]=q (3)①k=head+length ②fq[i][2]=0 ③lst[fq[i-1][0]][0]+=fq[i][1]解析 (1)35 5,本题使用了一种称为“最坏适配”的算法,即每次都从剩余空闲区间中选择最大的区间用于分配,这样的算法能够使空闲区间的大小趋于均匀,尽量避免出现无法使用的碎片区间。(2)lst[k][1]=q,将地址为k的节点降序连接至双向链表lst中。(3)①k=head+length;②fq[i][2]=0;③lst[fq[i-1][0]][0]+=fq[i][1]。本题的核心问题在于分配和释放区间的过程中,需要同时维护好“区间分配表”fq和“空闲链表”lst。为实现快速的区间分配和合并,空闲链表lst的节点的地址为区间分配表fq中空闲区间的起始地址。函数alloc(num,length)中,需要从lst的头节点中分配出一个长度为length的区域。为实现上述功能,需要先将lst中的头节点删除,在fq中修改好分区后,再将剩余空闲区间重新连接至降序双向链表lst中。函数release(num),则用于将编号为num的区间删除,即释放num区间并转换为空闲区间。新增的空闲区间需要和前后区间进行对比,若前后存在空闲区间,则需与新空闲区间进行合并。上述的区间的释放与更新都需要修改fq和lst中的区间。 展开更多...... 收起↑ 资源列表 非选择题专项(一).pptx 非选择题专项(一)(含解析).docx