浙江省嘉兴市2023年9月高三信息技术模拟检测卷

试卷更新日期:2023-10-25 类型:高考模拟

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

  • 1. 下列关于数据、信息和知识的说法,正确的是(   )
    A、数据即数字 B、人类在搜索引擎的帮助下就可以拥有海量的知识 C、人们在利用数据的同时, 自身的行为不会产生数据 D、人们接收同样的信息后,建构的知识也是有区别的
  • 2. 考生入场时,经安检门时对手机等电子设备进行检查并截留,监考教师用金属探测仪对学生再次进行检 查,身份识别仪采集身份证与人脸信息进行验证,无误后方可入场考试。上述描述中,体现人工智能技术的是(   )
    A、识别仪对考生进行人脸识别 B、监考教师用金属探测仪进行检查 C、安检门处对手机等电子设备的检测和截留 D、身份识别仪读卡处读取身份证信息
  • 3. 阅读下列材料,回答问题。

    智慧家居报警系统由报警主机和各种探测器组成。探测器包括门磁、窗磁、煤气探测器、烟感探测器、红外探头等。若有特定情况便会触发相应的探测器,家庭报警主机会立即触发警铃,并将相关数据传送至小区管理中心,同时小区管理中心的报警主机将会记录下这些信息,并发送到用户指定的电话,以备查阅。

    (1)、下列关于该系统的组成及应用说法正确的是(   )
    A、该系统运行不需要软件支持 B、该系统的用户是指各家庭成员 C、该系统可以不借助通信网络独立运行 D、该系统具备数据采集、处理和查询等功能
    (2)、下列关于该系统安全和防护说法正确的是(   )
    A、登录系统时的身份验证可提升系统安全性 B、该系统只是在有人非法入侵时会发出警报 C、该系统安装防火墙后,不存在信息泄露风险 D、用户登录认证最适合采用 USB Key 认证技术
    (3)、关于该系统的硬件作用,下列说法不正确的是(   )
    A、红外探头主要是防止非法入侵 B、烟感探测器采用了人工智能技术 C、该系统中家庭报警主机承担控制器的功能 D、煤气探测器安装在厨房,可以通过无线网络进行通信
  • 4. 下列关于网络组成与构建的说法中,正确的是(   )
    A、智能家居设备一般通过有线方式联网 B、常见的网络互联设备主要包括调制解调器、路由器和交换机等 C、不同网络之间一般采用 HTTP 协议互联 D、计算机网络分为局域网、广域网与广播电视网
  • 5. 某算法的流程图如所示,关于该算法下列说法正确的是(   )
    A、执行这部分流程后,变量 i 的值为 7 B、k 的值为 1*2*3*4*5*6*7 的结果 C、该流程图是双重循环结构 D、将“i≤x/2 ”改成“i<x" ,输出 k 的值不会变化
  • 6. 下列 Python 表达式运算结果为 True 的是(   )
    A、3**2<8 and 2%5>1 B、25//4>4 and 3/2<1 C、not 7<8 or 9>6+2 D、not(2**3<9 or 6%4<2)
  • 7. 有如下 Python 程序段:

    s = "A-b2c " ; ch = ""

    list=[4 , 3 , 1 , 5 ,2]

    for i in range(1en( s)):

        if "A " <= s [i] <= "Z " :

            ch = ch + chr (ord(s [i]) + list[i])

        elif "a " <= s [i] <= "z " :

            ch = ch + chr (ord(s [i]) - list[i])

        else:

            ch= s [i]+ch

    print(ch)

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

    A、2-Eaa B、2-ECE C、 E-c2e D、 E-a2b 
  • 8. 下面有关数据结构的说法不正确的是(   )
    A、在程序设计中,数据结构设计时主要考虑对象之间逻辑关系的实现 B、链表结构适用于初始规模确定但在处理过程中频繁进行插入、删除操作的数据 C、数组结构中采用下标访问数据,访问效率要高于链表结构 D、大多数软件中都有“撤销 ”功能,实现此功能应采用队列结构
  • 9. 长度为5的循环队列que,que[0]至que[4]的值依次为'a' ,'b' ,'c' ,'d','e',执行如下程序段后,输出的最后一个字符为(   )

    n= 5

    head=0

    tail=4

    que=['a' , 'b' ,'c' ,'d' ,'e' ]

    while head!=tail:

        if head%4==0:

            print (que[head])

        else:

            tail=(tail+1)%n

            que[tail]=que[head]

        head= (head+1)%n

    print (que[head])

    A、b B、c C、d D、e
  • 10. 待入栈的序列 a 有多种出栈序列, 以下函数用于判断序列 b 是否是 a 的出栈序列,代码如下:

    def judge(a, b):

        n=len(a) ;st=[- 1]*n

        top-= 1; i=j=0

        while i<n:

            top+= 1

               ①    

            i+= 1

            while top> - 1 and      ②     :  

                top-= 1

                j+= 1

            return top==- 1

    from random import shuffle

    a=[1,2,3,4, 5]

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

    shuffle (b)                  #将序列 b 的元素随机排序

    if judge(a, b):

        print (b,'是' ,a,' 的出栈序列')

    else:

        print (b,'不是' ,a,' 的出栈序列')

    程序运行结果如图所示。划线处应填写的语句是(   )

    A、①st[top]=a[i]               ②st [top]==b[j] B、①st[top]=a[i]                ②st[- 1]==b[j] C、①st [top]=b[i]              ②st[top]=a[j] D、①st[top]=b[i]              ②st[- 1]= =a[j]

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

  • 11. 小李设计了一个会员管理系统,用户通过浏览器在相应页面可进行会员注册、在线充值、线上查询消费记录等操作。该系统服务器端程序采用FlaskWeb框架编写,框架结构如图a所示。

    其中会员注册子页面如图b所示。存储会员信息的users表中共3个字段,依次保存序号、用户名和密码,如图c所示。会员注册时需满足以下条件:①用户名不重复;②密码长度大于5。服务器端部分代码如下。

    from flask import Flask , render_template , request

    import sqlite3

    def check(name ,pwd):

        conn= sqlite3 .connect( " account .db ")

        cur=conn .cursor()

        cur . execute( " select * from users where name= ’%s ’"%name)

        val=cur .fetchall()

        flag=True

        if len(val)==0 and            :

            sql= "insert into users(name , password) values(' %s' , '%s ') "%(name , pwd)

            cur .execute(sql)

            conn .commit()

        else:

            flag=False

        cur .close()

        conn .close()

        return flag

    app=Flask(name_)

    @app .route( "/reg ")

    def reg() :

        name=request . args .get( "xm ")

        pwd=request .args .get( "psd ")

        if                         :

            return "注册成功! "

        else:

            return "请重新注册! "

    #其它代码略

    if _name_== "_main_ " :

    app .run (host= " 192 . 168 . 1 . 10 " , port= 80 , debug=True)

    (1)、在搭建“会员管理系统 ”的前期准备过程中,选定系统物理配置的过程属于(单选,填字母: A .需求分析 /    B .概要设计 / C .详细设计)。
    (2)、该系统网络应用软件的实现架构是 (单选,填字母:A .B/S 架构 /    B .C/S 架构)。
    (3)、分析程序可知,该系统中存储会员用户名和密码数据的数据库文件名为
    (4)、分析程序,①处应填写的代码为  ,②处应填写的代码为
    (5)、下列关于该信息系统的描述正确的是       (多选,填字母)。
    A、服务器采用 GET 方式接收用户名和密码数据 B、程序代码中 debug=True 语句的作用是打开调试功能,在实际的网站应用环境中,也可以打开该 功能,方便调试程序。 C、注册新会员时,用户名为 admin03 ,密码为 123abc ,提交数据到 Web 服务器的 URL 为 http://192.168.1.10/check?xm=admin03&psd=123abc D、对 users 表中的密码进行加密,可以提高该信息系统的安全性
  • 12. 某地高中的技术选考数据,保存在“jsxk.xls”文件中,如图a所示。

    图 a

    图 b

    请回答下列问题:

    (1)、统计各学校技术选考人数占本校总人数的比例,找出占比最高的前 5 所学校并绘制柱形图,如图 b 所示。部分 Python程序如下,请在划线处填写合适的代码。

    import pandas as pd

    import matplotlib.pyplot as plt

    #图表支持中文字体显示,代码略

    df= pd.read_excel("jsxk.xls",dtype={'学校代码':'string'})           #学校代码列为字符串

    df1 = df.groupby("  ", as_index=False).count()        #按学校统计人数

    df1 = df1.rename(columns={'姓名':'学生总数'})#重命名列

    df1['技术比例'] = round(/df1['学生总数']* 100,2)

    df1 = df1.sort_values('技术比例',ascending=False).head(5)

    plt.title('技术选考比例前 5 的学校')

    plt.bar( )

    plt.show()

    (2)、在本问题的解决中,为了探究函数 groupby() ,某同学编写了自定义函数zdygroupby() ,其功能为统 计各校技术选考总人数,并以字典的形式返回。函数代码如下,请在划线处填写合适的代码。(注:代码中 lst 为二维列表,列表中每个元素包含3个数据项,格式如[['201901','顾筱扬',NaN],['201901','  俞凯睿', 1.0],['201901',' 陈丹祺', 1.0] … …])

    def zdygroupby(1st):

        dic = {}

        for row in lst:

            if row[2] == 1:

                if  :

                    dic[row[0]]=1

                else:

                    dic[row[0]]+= 1

       

  • 13. 最短路径问题。以 m*n 个边长为 1 的正方形组成的矩形,各顶点按行优先从 0 开始编号,如图 a 所示为 3*2 的矩形及顶点编号。从顶点 x(起点)经由各正方形的边移动到顶点 y(终点)有多种移动 路径,编程求解所有的最短路径。

    图 a

    图 b

    (1)、分析问题,将矩形转换为计算机可处理的数据。可采用列表存储矩形中各顶点的相邻关系,如图 b所示。

    编写函数init,根据横向和纵向的正方形数量,返回所有顶点及其所有的相邻顶点数据。完善程序,在划线处填入合适的代码。

    def init(m,n):

        tot=(m+1)*(n+1)    #顶点总数

        lst=[[] for i in range(tot)]

        for i in range(tot):

            if i>m:

                lst[i].append(i-m- 1)

            if i<(m+1)*n:

                lst[i].append(i+m+1)

            if i%(m+1) != 0:

                lst[i].append(i- 1)

            if i%(m+1) != m:

               

        return lst

    (2)、分析问题,查找所有从起点到终点的最短路径。例如:查找从起点1到终点10的所有最短路径,可先查找终点10的所有相邻顶点(6,9,11),然后再逐个查找顶点6、9、11的相邻顶点,直到查找到起点1,获得所有最短路径,如图c所示,共有3条长度为3的最短路径,分别为1→2→6→10,1→5→6→10,1→5→9→10。若从起点4到终点11,共有 (填数字)条最短路径。

    图 c

    (3)、分析问题,存储查询到的路径。可采用链表结构保存路径数据,例如:查找从起点1到终点10的所有最短路径,首先将终点10的数据[10,0,-1]保存在path[0]中,然后将其相邻顶点6、9、11的数据保存到path中,path[i][0]保存顶点的编号,path[i][1]保存当前顶点到终点的距离,path[i][2]保存下一顶点在path中的位置,其值为-1表示当前顶点为终点。

    编写函数print_path,输出所有的最短路径。完善程序,在划线处填入合适的代码。

    def print_path(x,path,length):    #为起点编号,length为Path中有效元素个数。

        cnt=0

        for i in range(length):

            if path[i][0] == x:

                cnt+= 1

            s="最短路径"+str(cnt)+":"

            v=path[i]

            while  :

                s=s+str(v[0])+","

                v=path[v[2]]

            s=s+str(v[0])+" 。"

            print(s)

    (4)、实现上述功能的 Python程序如下,运行结果如图 d 所示。请在划线处填入合适的代码。

    m=3           #横向正方形数量

    n=2              #纵向正方形数量

    mtx=init(m,n)

    x=int(input("请输入起点:"))

    y=int(input("请输入终点:"))

    path=[[] for i in range(30)]

    passed=[False]*len(mtx)    #保存顶点是否已途经

    dis=0

    head=0

    tail=0

    path[tail]=[y,0,- 1]

    tail+= 1

    passed[y]=True

    while not found:

        dis+= 1

        pass_dis=[False]*len(mtx)

        tmp=tail

        for i in range(head,tail):

            v=path[i]

            for d in mtx[v[0]]:

                if not passed[d]:

                    path[tail]=

                    tail+= 1

                    pass_dis[d]=True

                if d == x:

                    found=True

            head=tmp

        for i in range(len(mtx)):    #标记已途经的顶点

            if  :

                passed[i]=True

    #输出结果

    print_path(x,path,tail)