浙江省宁波市金兰教育合作组织2022-2023学年高二下学期信息技术4月期中试卷

试卷更新日期:2023-05-19 类型:期中考试

一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、错选、多选均不得分)

  • 1. 关于数据、信息与知识,下列说法错误的是(   )
    A、数据是信息的载体,单纯的数据没有意义 B、信息经过人为的解读和经验充实可以转化成知识 C、计算机只能处理数字化后的信息 D、不同的人接受同样的信息后,所构建的知识是相同的
  • 2. 下列研究领域中,不属于人工智能范畴的是(    )
    A、机器学习 B、专家系统 C、编译原理 D、人工神经网络
  • 3. 阅读以下材料,回答问题。

    宁波公共自行车是宁波市推出的公共自行车服务,用于解决公共交通中的“最后一公里”问题。 市民可通过具有租车功能的甬城通卡借还公共自行车。租车时,在公共自行车锁止器的刷卡区域刷 卡,听到“滴”声后,锁止器打开,市民就能轻松取车。

    另外还推出了宁波公共自行车app,市民通过该app加手机验证码就可以安全租赁公共自行车,免去办卡等辅助的手续,更好的保障个人信息安全,并且提供宁波公共自行车网点信息查询,以及相关资讯服务。

    (1)、关于宁波公共自行车系统,下列说法正确的是(   )
    A、该系统是一个人机交互系统,是一个工作系统 B、市民通过甬城通卡借还自行车时,无需通信网络的支持 C、借还自行车的市民是该系统的用户,但网点维护人员不是 D、租赁公共自行车的手机验证码是该系统的软件
    (2)、关于该系统中的数据,下列说法正确的是(   )
    A、租赁公共自行车的数据保存在甬城通卡或者市民手机中 B、甬城通卡是一种无源电子标签,刷卡时会向读卡器发送数据 C、刷卡系统采用了RFID 技术,在数据采集过程中,没有使用传输介质 D、该系统中的数据不含个人敏感信息,信息存储和传输时无需加密
    (3)、为了提升信息安全,下列做法正确的是(   )
    A、用户可以安装从互联网上搜索到的任意一个“宁波公共自行车 app” B、为了使通信更安全,应删除手机端的通信协议 C、对安装的“宁波公共自行车 app”开启所有的应用权限 D、宁波公共自行车系统应安装防火墙以阻挡外部攻击,保护内部资源的安全
  • 4. 某算法的流程图如图所示,执行该流程,输入x的值为整数26,则输出s的结果是(   )

    A、11010 B、10011 C、01011 D、11001
  • 5. Python 表达式 119%8*10+210//10 的计算结果是(   )
    A、91 B、59 C、60 D、19
  • 6. 已知字典 d={'名称': 'orange', '数量': 7, '售价': 6.7, '利润': 6.78} ,则下列 Python 表达式中值最大的是(   )
    A、len(d['名称']) B、d['数量'] C、round(d['利润'],1) D、int(d['售价'])
  • 7. 有如下 Python 程序段:

    s='HAPPY2023'

    s=s[3:]+s[1:3]

    print(s)

    则输出 s 的结果是(   )

    A、PY2023AP B、HAPY2023 C、PY2023HA D、HAPP2023
  • 8. 某加密程序如下,已知输入的明文是:2023-03-09,运行结束后,输出的密文为

    mingwen=input("请输入明文:")

    miwen=""

    for i in mingwen:

        if  "0"<=i<="9" :

            miwen += str((int(i)+3)%10)

        else:

            miwen += i

    print(miwen)(   )

    A、5356-36-12 B、5356-36-32 C、2016-16-12 D、53563632
  • 9. 某 Python 程序如下:

    def isprime(x) :

        for i in range(2,x) :

            if x % i == 0 :

                return False

            return True

        prime = []

        for m in range(2,19):

            if isprime(m) :

                prime.append(m)   #将 m 追加到列表 prime 中

    print(len(prime))

    程序运行后,输出的结果是(   )

    A、5 B、6 C、7 D、8
  • 10. 有如下 Python 程序段:

    s = input("请输入一串字符串:")

    f = True

    for i in range(len(s)//2) :

        if s[i] != s[len(s)-i-1] :

            f = False

        break

    print(f)

    若执行该程序后,输出的结果是“True”,则输入的字符串可能是(   )

    A、"onion" B、"hello" C、"278" D、"111"

二、非选择题(本大题共3小题,8+9+9,共26分)

  • 11. 小明模拟搭建了“室内烟雾实时监控系统”,实现如下功能:

    ⑴利用micro:bit结合烟雾传感器对室内烟雾浓度进行监测。

    ⑵通过串口采集传感器的数据变化,实时传输到Web服务器并保存到数据库中,以便后续进行分析。

    ⑶使用者可对监测系统进行相关的设置,限定室内烟雾浓度的临界值。一旦指标高于所限定的临界值,系统将自动发出警报并开启水泵浇水。

    系统通过智能终端每隔1分钟采集一次室内环境烟雾浓度数据。其架构示意图如图所示:

    智能终端的部分程序代码如下:

    #设置连接服务器参数并与智能终端建立无线连接,代码略

    while True:

        ①   = pin0.read_analog()

    errno,resp = Obloq.get("input?id=1&val="+str(fog),10000)

    if errno == 200:

    display.scroll(resp)

    if resp == '1':

    pin8.write_digital(1)     #打开蜂鸣器发出警报

    pin16.write_digital(1)    #打开继电器开启水泵浇水

    else:

    pin8.write_digital(0)     #关闭蜂鸣器

    pin16.write_digital(0)    #关闭继电器

    else:

    display.show (str(errno))

        ②    #设置数据采集间隔时间

    服务器端部分程序代码如下:

    from flask import Flask, request

    import sqlite3

    DATABASE ='tdata.db'

    app = Flask(__name__)

    @app.route("/")

    def index():

    #代码略

    @app.route("/input",methods=["GET"])

    def mytest():

    #获取传感器 id 值和环境烟雾浓度值并存储在数据库中

    #烟雾浓度超过最大值返回“1” ,否则返回“0”,代码略

    if __name__ == '__main__':

    app.run (host="192.168.1.8",port=8080,debug=True)

    (1)、根据室内烟雾实时监控系统的功能要求和相关代码,下列说法正确的是_____ (多选,填 字母)。
    A、该系统采用B/S 开发模式 B、蜂鸣器连接在pin8 引脚,烟雾传感器连接在 pin16 引脚 C、该系统的数据存储在数据库文件“tdata.db”中 D、为提高开发效率,无需进行网络测试
    (2)、请在程序划线处填入合适代码。

    (3)、若某时刻的烟雾浓度值是25,根据已知的地址和端口号,则传输数据时使用的URL是___ (单选,填字母)。
    A、http://192.168.1.8/input?id=1&val=25 B、http://192.168.1.8:8080/input?val=25 C、http://192.168.1.8:8080/input?id=1&val=25 D、http://192.168.1.8/input?val=25
    (4)、服务器端接收传感器数据的路由对应的视图函数名为
  • 12. 小王通过扫描仪获取到技术周考的学生信息技术单选题答题信息,记录了学生每个小题的答题选项,如图a所示:

    图 a

    为了统计分析出每一小题的答题情况,小王编写了Python 程序,请回答下列问题:

    (1)、分析学生每个小题的 A,B,C,D 选项的占比,代码如下:

    import pandas as pd                                                   第 1 小题

    import matplotlib.pyplot as plt                                       A: 2.22 %

    plt.rcParams[("font.sans-serif")]= ["KaiTi"]                          B: 6.67 %

    df=pd.read_excel ("ITdata.xlsx")                                       C: 80.0 %

    stunum=len(df)                                                         D: 8.89 %

    for i in range(1,13):                                                 第 2 小题

    print("第"+str(i)+"小题")                                         A: 0.0 %

    for k in "ABCD" :                                                  B: 80.0 %

    t

    =        

    print(k+":",round(len(t)/stunum*100,2),"%")

    该程序段运行结果的部分界面如图b 所示。

    图 b

    画线处填入的代码为          (单选,填字母)

    A、df["单选"+str(i)]==k B、df[df["单选"+str(i)]==k] C、df[["单选"+str(i)]==k] D、df[df["单选"+str(i)]]==k
    (2)、计算出全班学生的各小题得分并统计各小题平均分,绘制出线形图(如图c所示),部分Python程序如下,请在划线处填入合适的代码。

    图 c

    sans="CBCABCABDABD"

    qnum=list(df.columns)

    for i in df.index :

    =

    #本次单选题的标准答案

    for j in range(2,14):

    if df.at[i,qnum[j]]== :

    r=2 else:

    r=0

    #回答正确得 2 分

    #回答不正确得 0 分

    df.at [i,qnum[j]]=r

    aver= []

    for j in qnum[2:]:    #统计各单选题的平均分

    aver.append( )

    plt. (qnum[2:],aver,label="平均分")

    plt.legend()

    plt.show ()

    (3)、由图b 可知,12 道选择题中难度最低的是“单选”。
  • 13. 小强学习过大数据的“分治”思想后,对经“分治”处理后的数据合并产生了兴趣。他设计了一个算法,对两个升序列表a、b中的数据(均为正整数)进行合并,合并后的数据仍保持升序。
    (1)、为了生成长度为num 的升序列表x,小强写了如下代码。

    import random

    def mk(num) :

    x= [0]*num  #创建列表 x= [0,0,……,0],其中 0 的个数是 num

    x[0]=random.randint(5,10)  #randint(a,b)返回[a,b]区间内的一个随机整数

    for i in range(1,num) :

    return x

    m=n=5

    a=mk(m)

    b=mk(n)

    print("原始数据序列 a 为:",a)

    print("原始数据序列 b 为:",b)

    ①使用语句 a= mk(5)调用函数,加框处语句的执行次数是 (填写阿拉伯数字) 。

    ②执行上述代码后,关于输出的列表a、b 中的数据,下列说法正确的是 (单选,填字母: A .相同 / B .不相同 / C .可能相同)

    (2)、为了描述方便,假设两个列表中的元素个数m=n=5,其初始状态如下:

    b[0]

    b[1]

    b[2]

    b[3]

    b[4]

    10

    11

    15

    16

    17

    为了使合并后的数据保存在列表a 中,现对列表 a 扩充 n 个元素“-1”,扩充后状态如下:

    a[0]

    a[1]

    a[2]

    a[3]

    a[4]

    a[5]

    a[6]

    a[7]

    a[8]

    a[9]

    7

    9

    10

    14

    19

    -1

    -1

    -1

    -1

    -1

    变量i赋值为0,指向列表b的首数据,变量p赋值为0,指向列表a的首数据,变量tot指向列表a的最后一个有效数据(如图所示) 。

    合并的具体算法如下:

    Ⅰ.如果 a [p]= – 1 ,则直接将 b[i]存储到 a [p]中,同时 tot 值增加 1;

    Ⅱ.如果 a [p]>b[i] ,则整体将 a [p] ,… ,a [tot]向右移动一个位置,然后将 b[i]存储到空出的位置, 同时 tot 值增加 1。

    Ⅲ. p 值增加 1;

    小强编写的合并代码如下,请在划线处填入合适代码。

    #将列表a 的数据个数存入m,列表b 的数据个数存入 n,代码略

    #对列表 a 扩充 n 个-1,代码略

    p=0

    tot=

    i=0

    while  :           #将列表b 中元素 b[i]逐个插入到列表 a 中

    if a[p]==-1 :

    a[p]=b[i]

    tot+=1

    i+=1

    elif a[p]>b[i] :

    for j in range(tot,p-1,-1): #整体将 a[p], … ,a[tot]向右移动一个位置

    a[j+1]=a[j]

    tot+=1

    i+=1

    p+=1

    print("合并后的数据序列为:",a)