资源简介 绝密★考试结束前2025年 1月浙江省普通高校招生选考科目考试技 术姓名: 准考证号:考生须知:1.答题前,请务必将自己的姓名、准考证号用黑色字迹的签字笔或钢笔分别填写在试题卷和答题纸规定的位置上。2.答题时,请按照答题纸上“注意事项”的要求,在答题纸相应的位置上规范作答,在本试题卷上的作答一律无效。3.非选择题的答案必须使用黑色字迹的签字笔或钢笔写在答题纸上相应区域内,作图时可先使用 2B铅笔,确定后必须用黑色字迹的签字笔或钢笔描黑。第一部分 信息技术完美解析(共 50 分)一、选择题(本大题共 12 小题,每小题 2 分,共 24 分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)阅读下列材料,回答第 1 至 2 题:某市举行科普现场宣传活动,包括科学实验秀、科技故事分享等内容。该活动还通过视频直播、网站、报纸等媒介进行传播。市民可参加线下活动,也可注册后参加线上活动。1.下列关于该活动中数据和信息的说法,正确的是A.同一活动内容的数据在不同的媒介上表现形式相同B.活动内容中图像和文本的数字化方法是完全一致的C.活动内容通过多种媒介传播有助于信息的共享D.同一活动信息的价值不会随着时间的推移而变化【答案】C【解析一】本题考查数据和信息的相关知识。A. 错误,该活动直播时以视频的方式表现,在网站上可以以视频、图像、文字等方式表现,在报纸上以文字、图像等方式表现,可见在不同媒介上表现形式不一定相同;B. 错误,活动内容中的图像数字化,需要经过采样、量化、编码的环节,文本的数字化,遵循 ASCII或 GB2312或 unicode的编码规则;C. 正确,信息的共享需要多种媒介的传播;D. 错误,信息反映的是事物某一特定时间内的状态,它会随着时间的推移而变化。【解析二】本题考查数据、信息的相关知识。A.错误,例如数据在视频直播中的表现形式为视频;在网站中表现形式可能为视频、图像、文字等;在报纸的表现形式为文字、图片等;B.错误,活动中的图像的数字化是将模拟图像转换为数字图像;文本的数字化方法是将纸质文档或手写转换为计算机可识别的字符格式。C.正确。D.错误,信息具有时效性,随着时间的推移,信息的价值会发生变化。技术(选考)试题 第 1 页(共 15 页)2.关于信息安全与信息社会责任,下列行为合适的是A.视频直播时接受社会监督 B.观众将科学实验秀制作成视频销售C.使用他人信息注册参加线上活动 D.将注册信息发到活动用户群里【答案】A【解析一】本题考查信息安全和信息社会责任的相关知识。A. 正确,直播行为必须接受社会的监督;B. 错误,观众不拥有这些科学实验的版权,不能随意制成视频盈利;C. 错误,侵犯了他人的个人信息安全;D. 错误,侵犯了注册用户的个人隐私。【解析二】本题考查信息安全与信息社会责任的相关知识。选项 B、C、D中,泄露了他人的个人信息,违反了使用信息传播时的行为规范。阅读下列材料,回答第 3至 6题:某连锁餐厅的智能监管系统实现从食材验收区到加工区全程监管。在食材验收区,智能验收秤采集并保存食材的品种、重量等数据,同时将数据发送到服务器;在食材加工区,AI抓拍设备自动识别员工的违规行为,并通过音箱发出语音提示,如“请穿工作服”,同时将抓拍数据发送到服务器。管理员可通过安装有监管系统 APP的移动终端查看各连锁餐厅的数据。3.下列关于该信息系统功能的说法,不.正.确.的是A.系统的数据收集和输入功能由智能验收秤实现B.语音提示功能可采用语音合成技术实现C.监管系统 APP 可与服务器进行双向数据传输D.识别员工违规行为的功能属于人工智能技术的应用【答案】A【解析一】本题考查信息系统功能和人工智能的相关知识。A. 错误,系统的数据收集和输入由智能验收秤、AI抓拍设备等实现;B. 正确,实现语音提示功能的关键技术之一就是语音合成技术;C. 正确,监管系统 APP将数据发送给服务器,服务器将各连锁餐厅数据发送给 APP,体现了数据的双向传递;D. 正确,要识别员工的违规行为是人工智能技术的应用。【解析二】本题考查信息系统功能、人工智能相关的知识。选项 A不正确,系统的数据收集和输入功能不仅由智能验收秤实现,在食材验收区,智能验收秤实现数据的收集和输入功能,但在食材加工区,AI抓拍设备实现的数据的收集和输入。4.某地区有 100家连锁餐厅,每家餐厅安装有 5台 AI抓拍设备。若使用二进制对这些设备进行编码,二进制的前几位表示餐厅号,其余位表示设备号,则所需的二进制位数最少是A.10 B.9 C.8 D.7【答案】A【解析一】技术(选考)试题 第 2 页(共 15 页)本题考查编码知识的应用的相关知识。100家连锁餐厅用二进制编码需要 7个位,27>100,每家餐厅需要安装 5个 AI抓拍设备,则需要 3个二进制位对每家抓拍设备进行编码,共至少需要 7+3个位,故选 A。【解析二】本题考查的进制编码的相关知识。题干中“二进制码的前几位表示餐厅号,其余位表示设备号”的内容,说明餐厅号的编码与设备号的编码是分开的,100家连锁餐厅的餐厅号需 7 位二进制进行编码(26<100<27);5台 AI抓拍设备的设备号需 3位二进制编码(22<5<23)。因此所需的二进制位数最少是 10位,故而答案选 A。5.下列关于该信息系统中硬件的说法,正确的是A.系统的硬件不包括管理员使用的移动终端B.系统中的传感器都用于获取图像数据C.智能验收秤的组成部件一定有存储器D.AI抓拍设备和服务器一定通过有线方式直接相连【答案】C【解析一】本题考查信息系统中硬件的相关知识。A. 错误,信息系统的硬件包括计算机硬件、移动终端硬件和通信网络设备,因此管理员使用的移动终端也属于信息系统的硬件;B. 错误,智能验收秤采集的食材的重量数据不属于图像数据;C. 正确;智能验收秤属于移动终端,它的硬件组成包括存储器;D. 错误,AI抓拍设备和服务器可以通过有线、无线、蓝牙等方式连接。【解析二】本题考查信息系统中硬件的相关知识。A.错误,系统的硬件包括管理员使用的移动终端。B.错误,智能验收秤中的传感器可获取物品的重量数据,不是仅用于获取图像数据。C.正确,智能验收秤能采集并保存食材的品种、重量等数据,故而其组成部件一定有存储器。D.错误,AI抓拍设备和服务器之间可能还有无线路由器,无线路由器与 AI抓拍设备可通过无线进行连接。6.下列关于该信息系统中软件的说法不.正.确.的是A.监管系统 APP属于应用软件B.软件要随着系统需求的变化而不断完善C.AI抓拍设备需要在软件的支持下工作D.系统中,服务器和移动终端需要使用相同的操作系统【答案】D【解析一】本题考查信息系统相关知识。服务器和移动终端不需要使用相同的操作系统,D错误。【解析二】本题考查信息系统的组成部分中“软件”的概念与作用。D选项服务器与移动终端属于不同的终端,虽然都是操作系统,但是对于不同类型的终端需要使用专门的操作系统。技术(选考)试题 第 3 页(共 15 页)7.某校组织学生进行阳光月跑活动,30天内总里程满 50km达标。每天组织一次跑步,平均速度(S)达到 6km/h 时方可计入总里程(T),每天的跑步里程(K)若超过 4km 按 4km计入,否则按实计入。判断某学生是否达标的部分流程图如第 7题图所示,表达式为①T←T+K ②T≥50 ③i≤n ④K←4则(1)~(4)处表达式序 B.③④①②C.②①④③ D.②④①③【答案】B【解析一】本题考查流程图及程序的综合分析能力。依题意:“每天的跑步里程(K)若超过 4km 按 4km 计入,否则按实进入”,可知(2)处填 k=4,选④,(3)处累加里程,填 T←T+K,选①,答案在 B和 D中选择。当 T≥50时应输出“达标”而不是进入循环,故(1)第 7题图处循环条件为:i≤n,(4)处填 T≥50 ,选 B。【解析二】本次考查流程图的算法描述。先考虑(2)和(3):变量 K表示当天跑步的里程,K≤4为 False 即 K>4,此时采取“超过 4km按 4km 计入”,因此(2)处的答案为④K 4。同时,变量 T 存储累计里程,无论 K是否更新,T都需要累加当天里程,因此(3)处答案为①T T+K;然后考虑(4):(4)处“Y”分支时直接输出“达标”,根据题干对于“达标”的描述是“总里程满 50km”,因此(4)处的答案为②T≥50 。最后(1)处的答案仅剩③,即答案为 B。8.有后缀表达式“1 3 + 2 * 3 +2 *”,现利用栈计算该表达式:从左向右扫描,遇到数字时,数字入栈;遇到运算符时,两个元素出栈,用运算符计算,所得结果入栈,如此反复操作,直到扫描结束,栈顶元素是A.21 B.22 C.23 D.24【答案】B【解析一】本题考查栈的相关操作。依题意可得表达式为:((1+3)*2+3)*2=22,选 B。【解析二】本题考查后缀表达式。将后缀表达式“1 3 + 2 * 3 + 2 *”转换为中缀表达式后为“((1+3)*2+3)*2”,计算结果为22,即答案 B。9.某二叉树如第 9题图所示,若其中的一个叶子节点增加右子树(仅包含节点 N),则新二叉树的中序遍历结果不.可.能.是A.CNBDAE B.CBDNAEC.CBDAEN D.NCBDAE第 9题图【答案】D【解析一】本题考查二叉树相关知识。中序遍历是左-根-右,若某个叶子节点仅添加右子树,则 N在 C左侧不可能,选 D。技术(选考)试题 第 4 页(共 15 页)【解析二】本题考查二叉树的中序遍历。根据题意,给叶节点增加右子树节点“N”,本题中共有 3个叶节点,因此可能有 3种答案,当节点“C”增加右子树后,中序遍历为“CNBDAE”,即选项 A;给节点“D”增加右子树后,中序遍历为“CBDNAE”,即选项B;当节点“E”增加右子树后,中序遍历为“CBDAEN”,即选项 C;因此答案为 D。10.数组元素 a[0]~a[n-1]已按升序排列,现要将 a[pos](0≤pos≤n-1)的值加 1,并保持数组的有序性不变,实现该功能的程序段如下,方框中应填入的正确代码为t = a[pos]+1I = poswhile :a[i] = a[i+1]i += 1a[i] = tA.i < n-1 B.i < n-1 and t > a[i+1]C.i < n-1 and a[i] > a[i+1] D.i <= n-1 or t > a[i]【答案】B【解析一】本题考查数组的插入排序知识。根据代码可知,由于代码中出现了 a[i+1] 的表达式,因此循环变量 i的取值范围不能等于 n-1,否则会产生下标越界的错误,因此排除选项 D。另外还需要保持数据的升序,因此还需要附加其他条件,故可排除选项 A。根据代码可知,待排序的数事先已经被暂时存放到变量 t中,因此移动数组元素数据时需要比较的是t和其后面的元素 a[i+1],只有当 t>a[i+1]时,才需要改变元素之间的前后顺序,因此可以排除选项 C。综上,本题选项 B符合题意。【解析二】本题考查顺序查找和插入排序。代码先将 a[pos] + 1的值存入变量 t,即要将 t插入到正确的位置以确保数组仍然有序。因原数组元素已升序排列,所以从 pos位置开始向后顺序查找正确位置,并在查找的同时进行数组元素的前移操作,以便空出 t应该在的位置。整个 while循环即使实现上述功能,循环条件应为:确保语句 a[i] = a[i + 1]不能超出数组范围(即 i+1<=n-1 或 ia[i + 1]),故选 B。11.对于任意非空字符串 s,甲、乙程序段输出结果相同,则乙程序段加框处的正确代码为def f(s,t): r = ""if t >= len(s)-2: n = len(s)return s[t] for i in range(0,n,2):return f(s,t+2) + s[t]print(f(s,0)) print(r)甲程序段 乙程序段A.r = s[n-i]+r B.r = r+s[n-i-1]C.r = r+s[i] D.r = s[i]+r【答案】D【解析一】技术(选考)试题 第 5 页(共 15 页)本题考查递归函数和字符串处理知识。根据甲程序段代码可知,该程序段是典型的利用自定义函数实现的递归算法,假设非空 s="ABCDEF",其调用过程如下:f(s,0)→f(s,2)+s[0]→f(s,4)+s[2]+s[0]→s[4]+s[2]+s[0]→"ECA",其本质是将 s中的偶数位置的字符取出,然后逆序连接输出。观察乙程序段和选项,能实现上述同样功能的只有选项 D。【解析二】本题考查递归和递推。甲程序段是一个递归函数,其逻辑是:如果 t >= len(s) - 2,返回字符串 s 的第 t 个字符,否则递归调用 f(s, t + 2),并将结果与 s[t] 拼接。因此函数 f(s, 0) 的作用是从字符串 s 的第 0 个字符开始,每隔一个取一个字符(偶数索引),并将这些字符逆序拼接成结果字符串。乙程序段则是采用循环递推的方式,索引从 0 开始遍历字符串,且每次步进 2(跳过一个字符),再拼接成结果字符串。因索引必须是偶数且逆序拼接结果字符串,而 n奇偶性不确定,故选 D。12.列表 c长度为 100,如第 12题图所示,其中 c[10]~c[89]各元素的值均为 10以内的随机正整数。执行如下程序段,输出的最后一行是i 0 1 2 3 4 5 6 7 8 9 …… 90 91 92 93 94 95 96 97 98 99c[i] 1 1 1 1 2 3 2 3 2 3 …… 2 3 2 2 2 2 1 1 1 1第 12题图qa = [0,0,0,0,0]qb = [0,0,0,0,0]h,t = 0,4temp = 0for k in range(100):qa[t] = c[k]qb[t] = temp+qa[t]-qa[h]print(qb[h], qb[t])temp = qb[t]t = (t+1) % 5h = (h+1) % 5A.5 4 B.8 4 C.9 5 D.9 9【答案】B【解析一】本题考查循环队列知识。根据代码可知,qa和 qb分别是两个各有 5个元素的数组(初始元素均为 0)。由代码“t=(t+1)%5”和“h=(h+1)%5”可知,h和 t分别是循环队列的头尾指针。代码“qa[t]=c[k]”的作用是将数组 c中的元素按顺序依次从循环队列 qa 的尾部 t入队。此题最为关键的是:循环队列 qb中的元素依次记录 qa中元素的累加,即进入队列 qa中的元素值减去从队头 h出队的元素值。由于循环队列中实际的元素只有 4个,根据之前的分析前面的依次入队又出队,且 qb中元素又涉及 qa 中元素的累加,由于同时有 2个循环队列 qa和 qb,因此我们只需考查列表 c中的最后 8个元素即可,即“2,2,2,2,1,1,1,1”,经过模拟可知最终的结果 qa=[1,1,2,1,1],qb=[5,4,8,7,6],此时的 h=2,t=1,因此输出的最后一行是 qb[h]=8,qb[t]=4,故选项 B正确。【解析二】本题考查循环列表和算法综合。此题难点之一在于数据量大且具有不确定性,靠纯模拟感觉有点无从下手。逐行分析,基本能理解每行代码的单独作用,但代码整体算法和逻辑不容易理解。其实列表 qa、qb元素个数确定(5 个),且其索引 h、t是在 0 到 4之间循环(构成环),所以 qa 和 qb 只会存储最近 5 个处理过的值。再结合题干描述大部分值是随机整数且四个选项均是固定值,可以确定前面大部分的数据处理并技术(选考)试题 第 6 页(共 15 页)不会影响到最后的输出结果。故而可以仅从 k=90开始模拟,此时 h、t值刚好为 0、4,假设 qa中元素的值为任意,模拟下来即可得到正确选项 B。其实代码中 qb[t] = temp + qa[t] - qa[h],即加上后一项的值并减去第一项的值,而 qa[t] = c[k],所以 qb列表存储的是 c列表中连续四项元素值的和,对应关系由 t或 h决定。例如 k=98时,h和 t分别为 3和 2(h为头 t是尾),则 qb[t]=5(即 c[95]~c[98]之和),qb[h]=9(即 c[91]~c[94]之和)。这段代码实现了一个滑动窗口的累加计算,每次循环更新窗口内的一个元素,并计算新的累加值,打印的结果展示了窗口内累加值的变化情况。假设中间随机数全是 1或 5,给出最后十次循环各个变量的值,帮助大家理解。二、非选择题(本大题共 3小题,其中第 13小题 7分,第 14小题 10分,第 15小题 9分,共 26分)13.根据机器的负载率对工厂的 6台机器(编号 0~5)进行监控和调度。调度规则是:每隔 1小时采集 1次各台机器的负载率(负载率用百分制表示,例如,负载率 95%表示为 95,机器休息时的负载率为 0),负载率超过 90的机器都调度休息;如果所有机器负载率都不超过 90,则负载率最高的机器休息,若多台机器负载率同为最高,则编号最小的机器休息。休息的机器在休息 1小时后再次工作。请回答下列问题:(1)若某次采集到 0~5号机器的负载率依次为 75、85、88、0、88、87,当前处于休息状态的机器编号是 3,接下来休息的机器编号是 ▲ 。(2)实现上述功能的部分 Python程序如下,请在划线处填入合适的代码。n = 6a = [0] * n #列表 a长度为 n,各元素值均为 0#启动 0~4号机器工作,5号机器休息,代码略While True:#延时 1小时,再采集各机器负载率存入 a,a[i]存放 i号机器的负载率,代码略t = 0cnt=0for i in range(n):if ① :#调度 i号机器休息,代码略cnt += 1if a[i] > a[t]:②elif a[i] == 0:#调度 i号机器工作,代码略if ③ :#调度 t号机器休息,代码略技术(选考)试题 第 7 页(共 15 页)【答案】(1)2 (1分)(2)①a[i] > 90 (2分)②t = i (2分)③cnt == 0 或 a[t]<90 (2分)【解析一】本题涉及以下相关知识点:1.条件判断与逻辑处理;2.循环与遍历;3.变量与状态管理;4.模拟与算法设计。本题主要考查学生的逻辑思维能力、编程基础、问题分析与解决能力以及代码阅读与填空能力。学生需要理解题目描述的调度规则,并将其转化为程序逻辑,同时能够处理多种情况和边界条件。题目还要求学生具备一定的代码阅读能力,能够根据上下文推断出缺失的代码。(1)机器负载均不超过 90,负载最大的是 2号、4号,都是 88。按题目要求此时编号小的机器休息,编号为 2的机器休息。(2)① 按要求,负载率只要超过 90的机器都调度休息,所以这里的条件:a[i] > 90;②根据后面的代码,这里是查找负载最大的机器,将编号保存在变量 t中:t = i;③ 变量 cnt用于统计当前有多少台机器的负载率超过了 90,只有当 cnt为 0时,编号为 t号的机器休息。所以这里的条件是:cnt == 0【解析二】本题考查 Python的相关知识。(1)0-5号机器的负载率为“75、85、88、0、88、87”,休息状态的机器编号是 3。根据题意“如果所有机器负载率都不超过 90,则负载率最高的机器休息”,当前负载率最高的机器是 88,分别是 2 号和 4 号机器,再根据题意“若多台机器负载率同为最高,则编号最小的机器休息”可知,接下来休息的机器是 2号机器,故答案是:2。(2)第 1小空,根据注释语句“调度 i号机器休息,代码略”结合题意“负载率超过 90的机器都调度休息”可知该处判断的是负载率超过 90的机器,而 i遍历的是机器的台数,那么只要判断当前机器负载率是否超过90即可,故可推出答案:a[i]>90;第 2小空,结合第 3小空的注释语句“调度 t号机器休息,代码略”可推出要求出 t号机器,那么求 t的语句只能产生在第 2 小空了,第 1小空和第 3 小空都是条件判断语句。而题意中第二类机器休息的条件则是“如果所有机器负载率都不超过 90,则负载率最高的机器休息”,所以第一个 if语句和第二个 if语句是并列的两个 if,第一个 if先判断负载率是否超过 90,然后没有超过 90则再利用第二个 if语句找出负载率最高的机器,故可得第 2小空的答案为:t=i,找负载率最高的机器索引也就是编号。elif语句则是判断当前机器是否已在休息,因为一个小时后该号机器要开始工作了。第 3 小空,是遍历完一轮机器后,找到负载率最高的机器,但如果多台机器负载率同为最高,则编号最小的机器休息,但这个要求在第二 if语句 a[i]>a[t]的时候已经是完成找最小编号机器的要求了,此处要考虑的是“如果所有机器负载率都不超过 90,则负载率最高的机器休息”,所以要添加的条件是所有机器是否超过 90,可以用 cnt来作为判断的依据,如果有超过 90的则 cnt+1,那么只要 cnt==0说明是所有机器负载率都不超过 90这个前提条件,所以第 3小空的答案为:cnt==014.某研究小组搭建了室外温度检测系统,在 4所学校各设置了 1个监测点。智能终端连接传感器,每隔 3小时采集 1次温度数据通过网络将温度数据传输到服务器。服务器根据数据判断出异常情况时,通过智能终端控制执行器发出预警信号。请回答下列问题:(1)在搭建该监测系统时,温度传感器与智能终端的配备总数量合理的是 ▲ (单选,填字母:A.4个温度传感器和 4个智能终端 / B.4个温度传感器和 1个智能终端)。(2)系统数据采集的时间间隔为 3小时,可用于控制采集时间的设备是 ▲ (单选,填字母:A.传感器 / B.智能终端)。(3)编写智能终端程序时,不.需.要.知道 ▲ (多选,填字母)。(注:全部选对的得 2分,选对但不全的得 1分,不选或有错的得 0分)技术(选考)试题 第 8 页(共 15 页)A.与传感器连接的智能终端引脚 B.服务器的存储容量C.服务器的地址及端口 D.数据库的文件名(4)当服务器判定有异常情况后,除可通过智能终端控制蜂鸣器发出预警声音之外,请写出其他两种预警的具体方式。(5)将系统中某年的数据导出到文件 data.xlsx中,部分数据如第 14题图 a所示。其中“预报温度”列是指学校所在地的天气预报温度数据,“差值”列是指实测温度与预报温度相减的绝对值。现要由高到低输出 3月份各监测点差值的平均值(如图 b所示),再用差值平均值最高的监测点的 3月份实测温度数据绘制线形图(如图 c所示)。第 14题图 a 第 14题图 b 第 14题图 c实现上述功能的部分 Python程序如下,请选择合适的代码填入划线处(填字母)。import pandas as pdimport matplotlib.pyplot as pltdf=pd.read_excel("data.xlsx")df1 = ①df2 = ②df2 = ③#依次输出 df2中各监测点编号及其差值的平均值,如图 b所示,代码略#将 df2中首行的监测点编号存入 uid,代码略df2 = ④#创建 x列表,长度为 248,元素依次为 0~247,表示 3月份采集时间点的序号,代码略plt.plot(x,df2['实测温度 ']) #绘制线形图#设置绘图参数,并显示如图 c所示的线形图,代码略①②③④处可选代码有:A.df.groupby("月",as_index=False).差值.mean() #分组求平均B.df[df["监测点"]==uid] #筛选C.df[df["月"]==3]D.df1.sort_values("差值",ascending=False) #降序排序E.df1.groupby("监测点",as_index=False).差值.mean()F.df1[df1["监测点"]==uid]G.df2.sort_values("差值",ascending=False)【答案】(1)A (1分)(2)B (1分)(3)BD (2分)(4)服务器发送预警邮件;向终端发出预警信息;通过智能终端控制发光二极管闪烁;或其他等价答案。 (2分)(5)①C ②E ③G ④F ( 4分)【解析一】技术(选考)试题 第 9 页(共 15 页)本题主要考查信息系统及利用 pandas数据分析。(1)4个监测点分别设置在 4所学校,所以配备总数量合理的是 4个温度传感器和 4个,确定答案为 A;(2)传感器一般是负责采集数据,而采集时间的控制,一般在智能终端程序代码中进行设计,确定答案为B;(3)选项 A,在智能终端程序中获取传感器采集到的数据时需要知道传感器连接的智能终端引脚;选项 B,数据存储是在服务器端完成,在智能终端程序中如果不知道服务器的存储容量不影响程序编写;选项 C,智能终端需要将采集到的数据上传至服务器,所以需要知道服务器的地址及端口;选项 D,数据存储到数据库中的功能,是在服务器端代码中实现,所以不需要完成数据库的文件名,确定答案为 BD;(4)服务器端通过手机发送短信;服务器端通过手机或电话方式向管理人员发出预警;服务器端向管理人员发出预警邮件通知;或其他等价答案。(5)题干中要求“由高到低输出 3月份各监测点差值的平均值”,所以首先对 df中筛选出月为 3的数据,确定①处为 C;然后按"监测点"分组,“差值”求平均值确定②处选 E,然后“差值”降序所以③处选 G;题干中要求“差值平均值最高的监测点的 3月份实测温度数据绘制线形图”,且代码注释中已经明确“将 df2中首行的监测点编号存入 uid”,即筛选出 df1监测点值为 uid的数据,所以④处选 F。【解析二】(1)在 4个学校分别设置 1个监测点,智能终端和传感器都没办法共用,所以是需要 4个智能终端和 4个传感器。所以答案为 A。(2)必修二《信息系统与社会》课本 P135页中智能终端程序如下图:从上图最后一行代码“sleep(1000*5)”可知,采集时间的间隔是由智能终端控制的。所以答案为 B。(3)从上图第二行代码可知,获取传感器数据时,需要知道传感器连接的端口号(pin0),故 A不选;从上图第三行代码可知,使用 GET方法上传数据给服务器时,必然要知道服务器的 IP和端口号,故 C不选;B选项服务器容量跟智能终端上传数据无关;D选项数据库文件名,是在服务器连接数据库时需要用到,与智能终端无关。所以答案为 BD。(4)当服务器判定异常时,其他预警方法:一是服务器端向指定手机发送短信,或者拨打指定手机(电话);二是服务器端向指定邮箱发送邮件;三是增加合理的执行器(蜂鸣器除外),启动该执行器。(5)题目要求“由高到低输出 3月份各监测点差值的平均值”。所以第一步先以列“月”为条件,筛选出 3月份的数据;第二步对筛选后的数据以“监测点”分组,求出“差值”列的平均值;第三步按照“差值”列降序排序(从高到低)。所以①处答案为 C(df[df[“月”] == 3]),②处答案为 E(df1.groupby(“监测点”,as_index = False).差值,mean()),③处答案为 G(df2.sort_values(“差值”,ascending = False))。参照题目,最后还要实现“用差值平均值最高的监测点的 3月份实测温度数据绘制线形图”。从该处上一行注释可知,差值平均值最高的监测点名称存入了 uid,而 3 月份的数据在第一步完成筛选的 df1。所以④处答案为 F(df1[df1[“监测点”] == uid])。15.某市举行体育赛事活动,n所学校的选手已完成预赛,现计划根据预赛的成绩挑选 s名选手参加市决赛。成绩位列所在学校前 w名次的选手直接入选,剩余名额按成绩由高到低依次挑选,成绩相同的选手一并技术(选考)试题 第 10 页(共 15 页)入选,选中的选手数一旦达到或超过 s名,挑选结束。现给定所有选手预赛的成绩数据表,每位选手的数据包含学校编号(0~n-1)、选手编号、成绩,成绩数据表已按成绩由高到低排列。编写程序,计算各选手的校内名次,再按上述规则挑选决赛选手,按成绩数据表中的顺序输出选手编号,同时提供查询功能。选手校内名次的计算方法是:若选手所在学校有 m人成绩高于该选手,则该选手的名次为 m+1。在第 15题图所示的样例中, n、s、w分别为 3、8、2,根据图中前 3 行数据计算出了每位选手的校内名次,进而选出实际入选的 9名选手。学校编号 0 2 2 0 0 2 2 0 1 1 1 1选手编号 0002 2027 2002 0072 0182 2071 2128 0012 1081 1002 1008 1208成绩 198 185 183 182 182 177 177 176 175 163 161 161校内名次 1 1 2 2 2 3 3 4 1 2 3 3是否入选 True True True True True True True False True True False False第 15题图请回答下列问题:(1)对于第 15题图所示前 4行数据,若 s、w分别为 5和 1,则 0号学校入选人数是 ▲ 。(2)定义如下 search(data,sid,score)函数,data列表每个元素的前 5个数据项依次为学校编号、选手编号、成绩、校内名次、是否入选,列表已按成绩由高到低排列。函数功能是查找选手编号为 sid、成绩为 score的元素,返回其下标,若未找到则返回-1。def search(data,sid, score):left,right = 0, len(data)-1f = -1while left <= right:mid = (left+right)//2if score == data[mid][2]:f = midleft = mid+1elif score < data[mid][2]:left = mid+1else:right = mid-lif f == -1:return -1for i in range( f, len(data) ):if data[i][2] != score:return -1elif data[i][1] == sid:return i①调用 search函数,若 data列表长度为 12,data[0][2],data[1][2],…,data[11][2]的值依次为:198,185,183,182,182,177,177,176,175,163,161,161,score值为 177,则 while 语句中循环体的执行次数是 ▲ 。②程序中加框处代码有错,请改正。(3)实现根据选手成绩(成绩不超过 200)计算校内名次,以及挑选决赛选手功能的 Python程序如下,请在划线处填入合适的代码。def proc(data,n,s,w):技术(选考)试题 第 11 页(共 15 页)#创建 r列表,共 n个元素,每个元素的值均为[0,0,201],代码略heads = [-1,-1]tails = [-1,-1]cnt = 0for i in range(len(data)):①r[k][1] += 1if data[i][2] < r[k][2]:r[k][2] = data[i][2]②data[i][3] = r[k][0]data[i].append(-1) #为 data[i]追加一个元素-1v = 1if data[i][3] <= w:data[i][4] = Truecnt += 1v = 0if heads[v] == -1:heads[v] = ielse:data[tails[v]][5] = itails[v] = ip,q = heads[0],heads[1]res = [] #res列表用于存放入选决赛的选手编号,顺序与 data列表保持一致while cnt < s and q != -1:tmp = data[q][2]while q != -1 and data[q][2] == tmp:③ :res.append(data[p][1])p = data[p][5]res.append(data[q][1])data[q][4] = Truecnt +=1q = data[q][5]while p !=-1:res.append(data[p][1])p = data[p][5]return res'''读取 n、s、w;读取选手成绩数据表存入 data 列表,每个元素包含学校编号、选手编号、成绩、校内名次(初值为 0)、是否入选(初值为 False)5个数据项,代码略res = proc(data,n,s,w)#输出 res列表中的入选选手编号,代码略#读取待查询的选手编号与成绩,调用 search函数,根据返回值输出查询结果,代码略技术(选考)试题 第 12 页(共 15 页)【答案】(1)3 (1分)(2) ① 4 (1分)(3) ② f,-1,-1 或 right,-1,-1 或 left-1,-1,-1 (2分)(3) ① k = data[i][0] (1分)②r[k][0]=r[k][1] (2分)③while p!=-1 and p【解析一】(1)按照题干描述算法,每个学校先定最高分数的第1人,第4名是2号学校的183,则第5名是0号学校的182,而182有两位选手,则0号学校一共3人。(2)根据算法确定,整体算法根据对分查找进行,当查找到相应的score数据时继续在小的半段数据中查找,同时标记索引位置,因此案例的12个数据在程序的循环体中最多执行4次,该部分查找到数据中最后一个等于score的索引位置。因此第②小题查找范围只能在0到f的区间范围内查找,因此答案可以是(f,-1,-1)。(3)根据程序中已经给出的相应变量和语句,可以分析出,数组r中的每个子列表[0,0,201],分别是当前选手的校内排名、统计到当前选手为止该学校的总人数以及该学校目前的最低成绩,因此根据r[k][1]+=1可判定第①空需要确定当前选手所属的学校编号,因此答案为k=data[i][0];而第②空的判定条件在更新当前选手所属学校的最低成绩,同时结合下一行的表达式data[i][3]=r[k][0],可以确定是在给当前选手排名,并且是在自己学校的校内排名。根据题干中的描述,所有数据已经按照降序排好,则排名时要根据该选手是当前学校的第几人以及同分情况,若所有选手分数都不同,则排名数据和人数数据一致,但若出现同分情况,则在发现分数不一致时,才需要将排名数据更新成人数数据,因此第②空答案为r[k][0]=r[k][1];根据后续代码的描述可以发现,head[0]是直接入选的链表表头,head[1]是剩余选手的表头,tail中存储的是相应链表的表尾,根据第(2)小题的程序结果res中应该存储进入决赛选手数据,并且顺序与data列表保持一致,因此在遍历过程中如果pq,则将剩余选手的数据加入res中。【解析二】本题考查基本数据结构包括数组、链队,考查的基本算法涉及对分查找、顺序查找、最值问题等。(1)根据题意可得,当s,w分别为5,1时,每个学校先选取成绩最高的一名学生入选决赛,编号分别是”0002”、“2027”、“1081”,剩余的名额按照成绩由高到低分别是“2002”,“0072”, “0182”,所以0号学校入选3人次。(2)自定义函数search功能是查找选手编号为sid、成绩为score的元素,考查的算法主要为对分和顺序查找。对分查找用来查找data中成绩为score的元素位置。当出现多个同分数据时,f返回的是最右边的元素位置。找到后,从索引为f的节点开始查找对应选手编号是否为sid,若找到,返回对应节点的索引,否则继续往前(左)查找,直到将同分段的所有元素查找完毕为止。当数据为198,185,183,182,182,177,177,176,175,163,161,161,score值为177时,对应的查找二叉树如下,查找次数为4次。结合上述分析,当score=177,f=6,即返回最后一个177元素的位置,然后从f开始往前查找选手编号sid,所以加框处代码改为f,-1,-1(3)自定义函数proc主要功能是根据选手成绩(成绩不超过200)计算校内名次,以及挑选决赛选手。分析代码中的核心变量:k表示当前选手的学校编号,r[k][0]表示当前选手成绩在本校所有参赛选手中的排名,r[k][1]表示data[0]到data[i]中编号为k的学校人数。r[k][2]表示data[0]到data[i]中当前学校的所有选手成绩的最小值。技术(选考)试题 第 13 页(共 15 页)cnt为计数变量,统计进入决赛选手的数量v表示链队编号,0表示本校前w名选手组成链队0,1表示其他选手组成链队1。head[0]、tail[0]表示链队0的队首和队尾位置;head[1]、tail[1]表示链队1的队首和队尾位置。具体代码解析如下:def proc(data,n,s,w):heads =[-1,-1]tails =[-1,-1]cnt=0for i in range(len(data)): #遍历列表 datak = data[i][0] #获取当前选手的对应的学校编号r[k][1]+=1 #统计 data[0]到 data[i]中编号为 k的学校人数if data[i][2]< r[k][2]: #当前选手成绩小于其学校之前选手成绩的最小值r[k][2]= data[i][2] #更新当前学科成绩最小值r[k][0]=r[k][1] #当前选手成绩比之前出现的本校的所有参赛选手小,所以该选手的排名就是data[0]到 data[i]中,当前学校参赛选手的总人数。data[i][3]=r[k][0] #更新当前选手排名data[i].append(-1) #为 data[i]添加指针域,默认-1v=1 #链队编号,默认为 1if data[i][3]<= w: #判断当前选手是否是本校的前 w名,若是data[i][4]= True #标记变量,表明当前选手入选到决赛cnt +=1 #进入决赛的选手数量+1v=0 #修改链队编号,将当前选手添加到链队 0的尾部,否则加到链队 1尾部。if heads[v]== -1: #若当前链队为空,当前元素即为链队 v的头节点heads[v]= i #修改头指针,指向当前节点位置else:data[tails[v]][5]=i #否则,修改原链队尾结点的指针域,指向当前节点位置tails[v]=i #修改尾指针,指向当前节点位置因为 data中的数据是根据成绩降序排列的,所以两个链队的节点也是按照成绩降序排列。p,q=heads[0],heads[1] #p指向链队 0的队首,q指链队 1的队首。res=[] #res列表用于存放入选决赛的选手编号,顺序与 data列表保持一致while cnt选手成绩降序排列,所以选择链队 1前 s-cnt个选手,并判断临界的选手出现成绩相同,相同则一并入选。tmp= data[q][2] #tmp读取 q节点对应的选手成绩while q!=-1 and data[q][2]==tmp: #如 tmp与后续节点的选手成绩相同,则一并入选。while p!=-1 and pres. append(data[p][1])p= data[p][5] #p指向下一个节点res. append(data[q][1]) #当 p>q或 p==-1,将 q 节点的选手编号添加到 res,确保 res中数 据的顺序与 data列表保持一致data[q][4]= True #标记当前选手已入选cnt +=1 #入选人数+1q = data[q][5] #q指向下一个节点while p!=-1: #将链队 0剩余节点对应的选手编号添加到 resres. append(data[p][1])p= data[p][5]技术(选考)试题 第 14 页(共 15 页)return res根据题中数据模拟:当 n、s、w分别为 3、8、2,链队 0和链队 1,下图只保留索引选手编号、成绩:1. 当 p!=-1且 pq链队 0链队 1此时 res=[“0002”,”2027”,”2002”,”0072”,”0182”]2. 将链队 1的 q节点对应的选手编号添加到 res,q后移一位,cnt加 1链队 1res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”]3. 此时,进入决赛的选手已达到8人次,但是临界的两个选手分数相同,所以将后续的“2128”一并入选,res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”,”2128”],cnt加1。cnt>s,循环结束。链队 14. 将链队 0中剩余的选手添加到 res中,res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”,”1081”,”1002”]链队 0技术(选考)试题 第 15 页(共 15 页) 展开更多...... 收起↑ 资源预览