浙江省湖州市2021-2022学年高二下学期信息技术期末调研测试试卷

试卷更新日期:2022-07-28 类型:期末考试

一、选择题(本大题共12小题,每小题2分,共24分。)

  • 1. 某地区将进行全员核酸检测,小明接收到如下短信内容:请您携带健康码并于5月15日至5月17日8点到20点在社区扫码登记进行核酸检测,若未完成核酸检测,健康码会变成黄码。下列说法不正确的是 (    )
    A、黄码是图案,不是数据 B、每次扫码登记成功将生成相应的数据元素 C、核酸检测的数据为疫情防控提供了可靠的参考信息 D、采集到的核酸检测数据通过建立计算模型可以得到有价值的信息
  • 2. 下列关于数据结构的说法正确的是 (    )
    A、“撤销”操作,是“队列”的应用 B、排队就餐,是“栈”的应用 C、“链表”存储相邻节点不需要连续空间 D、“树”中每个节点的前后都只有一个相邻节点
  • 3. 将微信群他人发送的信息转发至其他微信群,关于该行为说法正确的是 (    )
    A、信息被转发次数越多,自身损耗越大 B、只是转发他人信息,转发者无需承担任何责任 C、及时转发信息是合格的数字公民应尽的义务 D、随意转发信息可能会导致个人隐私泄露
  • 4. 网页传输过程如图所示,下列说法不正确的是(    )

    A、客户端A可以通过HTTP协议访问Web服务器B上的网页 B、客户端A访问Web服务器A无需经过网关A C、客户端A访问Web服务器B的访问请求最先到达网关B D、Web服务器A和Web服务器B的IP地址可以相同
  • 5. 某智能终端连接声音传感器和LED灯,实现拍一次手,LED灯亮;再拍一次手,LED灯灭;周而复始。部分代码如下:

    flag = True

    while True:

      voice=pin0.read_analog( )

      if voice>380:

        if flag:

          pin14.write_digital(0)     #关闭LED

          flag=False

        else:

          pin14.write_digital(1)     #点亮LED

          flag=True

    sleep(1000)     #延时1秒

    下列说法正确的是 (    )

    A、LED灯连接在0号引脚 B、声音传感器连接在14号引脚 C、声音传感器实现数模转换功能 D、修改380为180可以实现轻拍开关LED灯
  • 6. 科技小组准备搭建酒店智能门锁系统,基本工作流程:管理终端将基本信息(包含验证信息)录入并传输到服务器中;智能终端将客户输入的验证信息至服务器上进行验证,验证通过后,解锁开门。系统结构图如图所示,下列说法正确的是 (    )

    A、该系统中管理终端只能是智能手机 B、该信息系统中的用户是指入住的客户 C、为提高开发效率,无需进行网络测试 D、为实现不联网开锁,需将客户验证信息保存到智能终端
  • 7. 某加密算法程序段如下所示:

    def jiami(x):

    if "A"<=x<="Z":

      y=chr(ord(x)+32)

    elif "0"<=x<="9":

      y=str((int(x)+1)%10)

    else:

      y=x

    return y

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

    miwen=""

    for x in mingwen:

      miwen=miwen+jiami(x)

      print("密文为:",miwen)

    输入“Abc@789”并运行程序,输出结果是(    )

    A、abc8910 B、abc@890 C、ABC678 D、aBC@789
  • 8. 某平台的个性化广告推荐工作原理是基于用户注册时填写的信息及使用平台服务产生的行为数据等信息,推测用户可能感兴趣的内容。关于上述事例,下列说法不正确的是(    )
    A、用户使用平台服务产生的行为数据属于静态数据 B、海量的平台用户注册数据可以采用分布式系统进行管理 C、平台推测用户可能感兴趣的内容不需要分析用户行为数据间的因果关系 D、用户信息填写不完整可能会导致平台收集的数据存在数据缺失问题
  • 9. 有如下Python程序段:

    a=[]

    b=[1,5,4,1,5]

    c={1:3,2:4,3:5,4:1,5:2}

    for i in b:

      if i not in a:

        a.append(c[i])

    print(a)

    运行该程序段后,列表a的值是(    )

    A、[1,5,4] B、[3,2,1] C、[3,2,1,2] D、[3,2,1,3]
  • 10. 某队列的数据结构如图所示,head和tail分别为队列的头、尾指针。现对该队列进行以下操作:①队首元素出队输出②队首元素出队再入队,重复①②操作直到队列为空。若队列数据元素为“LUCKY”,则输出顺序是(    )

    A、LYUKC B、LCYUK C、LCYKU D、LUCKY
  • 11. 用栈的数据结构编写进制转换中的“除二取余法”的程序段如下:

    st=[-1]*100

    top=-1

    n=int(input("请输入一个十进制数:"))

    while n>0:

      

    while top!=-1:

      print(st[top],end="")

    top-=1

    方框处的代码由以下四部分组成:

    ①n=n//2 ②top+=1 ③x=n%2 ④st[top]=x

    下列选项中,代码顺序正确的是(    )

    A、③④②① B、③①②④ C、①②③④ D、①③④②
  • 12. 如图a为一棵二叉树,其数组实现示意图(部分)如图b所示

    下列说法正确的是(    )

    A、该二叉树的前序遍历为ABCDEFG B、该二叉树的高度为3 C、该二叉树是完全二叉树 D、节点G存储在数组下标为11的位置

二、非选择题(本大题共4小题,6+6+7+7,共26分)

  • 13. 小明收集了本市新冠疫苗接种点的相关信息,存储在“ymjz.xlsx”文件中,如图a所示,编写Python程序对数据进行处理。

    图a

    (1)、实现相关功能的程序如下,请在划线处填入合适的代码:

    import pandas as pd

    import matplotlib.pyplot as plt

    df=pd.read_excel("ymjz.xlsx")

    #输出功能:输出接种台数大于2的接种单位名称

    df1=df[ ]

    print(df1.单位)

    #统计功能:统计各区县的医务人员数量

    g=df.groupby("区县",as_index=False)["医务人员数"]

    df2=

    print(df2)

    #分析功能:分析本市各类别(常规、方舱、医疗临时点、校企临时点、其他)接种单位的数量情况并制作图表呈现

    g=df.groupby("类别",as_index=False)

    df3=g.count()

    df3=

    plt.   (df3.类别,df3.单位)

    plt.show()

    (2)、为得到图b所示的图表,程序代码中加框处填入的代码组合可能是              

    图b

    A、甲 丙 B、甲 丁 C、乙 丙 D、乙 丁
  • 14. 小明基于Flask Web框架编写了“最喜欢诗人评选”的程序,“评选结果”页面如图a所示,“参加评选”页面如图b所示。评选规则:当推选的诗人已经存在时,将其热度值增加1;否则添加该诗人的记录,并将其热度值设为1。

    图a

    图b

    采用SQLite3设计数据库data.db,其中info表包括两个字段:

    段名

    数据类刑

    poet

    text

    heat

    integer

    (1)、根据题意,数据库“data.db”的“info”表中“poet”字段用于存放 (单选,填字母:A .诗人的姓名 / B .诗人的热度值)。
    (2)、实现上述功能的Python程序部分代码如下,请选择▲处的代码 (单选,填字母:A .CREATE TABLE info / B .INSERT INTO info / C .SELECT * FROM info)。

    @app.route('/')

    def view( ):

    #按热度值降序查询info表中记录,并渲染“view.htm”网页模板显示结果,代码略

    @app.route('  ①   ', methods=['GET','POST'])

    def selectpoet():

    if request.method=='POST':

    x=request.form['xm'] #获取图b所示文本框中输入的内容

    conn=sqlite3.connect('data.db')

    cur=conn.cursor()

    cur.execute("  ▲   where poet='%s'" %x) #查询当前诗人记录

    data=cur.fetchall()

    if data:        #当data非空时,则表示所推选的诗人已经存在,将其热度值增1 y=data[0][1]+1

      cur.execute("update info set heat=%d where poet='%s'" %(y,x))

    else:

      cur.execute("insert into info(poet,heat) values('%s',%d)" %(    ②    ))

      conn.commit( )

      cur.close( )

      conn.close( )

    return '评选成功!'

    else:

      return render_template('select.htm')

    if __name__=='__main__':

      app.run()

    (3)、请在划线处填入合适的代码。

  • 15. 小明对入栈、出栈规则研究发现,若有n个数字1,2,3,……,n按由小到大的顺序入栈,则出栈序列必须遵循下述原则:当数字x出栈后,则在x后出栈的小于x的所有数字必定以降序排列,比x大的数字可以夹杂在该降序序列中。现编写Python程序,按上述原则验证一个随机产生的出栈序列是否可能,程序运行界面如图所示。

    (1)、根据题意,若有7个数字入栈,则出栈序列“3→2→5→4→7→1→6”是 (单选,填字母:A .可能 / B .不可能)
    (2)、实现上述功能的Python程序代码如下,程序中加框处代码有错,请改正。

    import random

    n=int(input('请输入入栈元素的个数:'))

    data=[i+1 for i in range(n)]

    random.shuffle(data)     #将序列的所有元素随机排序

    s=''

    for i in range(n):

      s+=str(data[i])+'→'

      print('随机产生的出栈序列为:'+ )      #去除最后多余的'→'

      flag=True; i=0

    while i<n-1 and flag:

         ①   

      for j in range(i+1,n):

        if data[j]<data[i]:

          if data[j]<x:

            x=data[j]

          else:

               ②   

        break

        i+=1

    if flag:

      print('该出栈序列是可能的!')

    else:

      print('该出栈序列是不可能的!')

    (3)、请在划线处填入合适代码。

  • 16. 某餐厅辅助配餐程序提供给用户基于预算的点菜功能,该程序主要由“菜单显示”及“订单管理”两大基本模块组成,具体如下:

    ◆菜单显示功能:输出菜价小于等于预算经费余额且在售的菜品;

    ◆订单管理功能:包括输出订单中的菜品信息,订单菜品的删除和添加等。

    (1)、菜品数据相对稳定,为了便于查找菜品,采用(   )结构较为合理,订单数据涉及频繁的增加或删除,采用(   )结构较为合理。

    上述可填的内容为:(单选,填字母A .数组、链表/B .链表、数组)

    (2)、餐厅菜品数据表如下所示,每道菜由4个数据项组成,第一项为菜品编号,第二项为菜品名称,第三项的菜品单价(以“分”为单位,该数据项为0.表示菜品已下架),第四项为当月销量。实现菜单显示和输出订单菜品信息的程序如下,餐厅菜单保存在menu中,格式为:menu=[[0,"太湖三宝",18800,535], [1,"湖羊肉",11800,446],…]。

    编号

    菜品名称

    菜品价格(单位:分)

    当月销量

    0

    太湖三宝

    18800

    535

    1

    湖羊肉

    11800

    446

    n-1

    白果芦笋

    0

    2

    程序运行结果如图所示,请在划线处填入合适的代码。

    #读取餐馆全部菜品数据保存到menu中,数据类型及格式见题干描述,代码略。

    sal=int(input("☆ 请输入你的消费预算(单位:分):"))

    print("☆ 可供选择的菜品:")

    for i in range(len(menu)):

      if  and menu[i][2]<=sal:

        print(' ',menu[i])

        n=input("☆ 请输入预选择的菜品编号,以逗号分隔:").split(',')

        x=len(n)

        lis=[[int(n[i]),i+1] for i in range(x)]

        lis[x-1][1]=-1

        p=0

        while p!=-1:

          bh=lis[p][0]

      if menu[bh][2]<=sal:

       

        y=p

      else:

        lis[y][1]=lis[p][1]

        p=lis[p][1]

        p=0;s=''

    while p!=-1:

      s+=menu[lis[p][0]][1]+' '

     

      print('☆ 点单成功的菜品:'+s)

    print("☆ 剩余金额:"+str(sal))