浙江省五校联盟2023-2024学年高二下学期信息技术期中考试试卷

试卷更新日期:2024-05-30 类型:期中考试

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

  • 1. 下列关于数据和信息的说法不正确的是(   )
    A、获取数据的方式有很多种,包括人工方式、传感器获取等 B、面对同样的信息,不同的人由于知识背景、经验等差异,可能形成不同的知识 C、虽然视频和文字在表现形式上不同,但它们所蕴含的信息在某些情况下可能是相同的 D、数据是信息经过存储、分析及解释后所产生的意义
  • 2. 阅读下列材料,回答第2-4题

    某景区为提升景区管理与游客体验,设计了游客管理信息系统。该系统集成了游客信息管理、网上票务预订、数据分析等功能,旨在实现游客流量监控与资源优化分配。系统收集游客的活动数据并上传至服务器,结合人工智能、大数据和云计算技术,精准分析游客行为,为景区决策提供有力支持。同时,游客利用移动终端APP与景区客服机器人互动,享受个性化服务。

    (1)、下列关于信息系统的组成和功能的说法,不正确的是(   )
    A、景区客服人员和游客均为该信息系统的用户 B、该系统具有数据输入、处理、存储和传输等功能 C、该系统的移动终端APP属于系统软件 D、该信息系统体现了“跨越时空限制,服务随时随处”的优势
    (2)、下列关于人工智能的说法,正确的是(   )
    A、符号主义认为智能特征可被符号精确地描述,从而被机器仿真 B、深度学习是符号主义的典型代表 C、强化学习是根据事先知道的最终答案进行相应调整的学习方法 D、客服机器人通过大量数据训练提升服务水平,属于行为主义在人工智能中的应用
    (3)、下列关于网络技术的说法,正确的是(   )
    A、HTTP协议负责管理被传送内容的完整性 B、不同的终端进行通信,必须连接到计算机网络 C、IP是网际协议,负责将信息从一个地方传送到另一个地方 D、系统服务器与终端必须在同一个局域网中,该系统才能正常运行
  • 3. 下列关于计算机信息编码的说法,正确的是(   )
    A、ASCII码用7位二进制编码,共128个字符,转换为十进制后编码范围是0~128 B、数字化过程只需要经过采样、编码两个过程 C、一段时长2分钟、采样频率44100Hz、量化位数8bit未压缩的立体声音频存储容量约为10MB D、数据在计算机内部是以二进制或十六进制方式进行存储和处理的
  • 4. 某算法的部分流程图如图所示,下列说法正确的是(   )
    A、若输入n的值为10,则输出k的值为6 B、若输入n的值为16,则“n≠1?”执行4次 C、若输入n的值为5,则输出k的值为2 D、该算法中只存在分支结构和循环结构
  • 5. 已知一个序列的出栈顺序为ACEGI,则该序列的入栈顺序可能是(   )
    A、CEAGI B、AGEIC C、EICAG D、IGCAE
  • 6. 下列表达式的结果为True的是(   )
    A、2024 % 1000 // 5 == 24 B、abs(int(-1.7) * 2) % 8 == 4 C、int(str(1010 + 90)[1 : 4]) // 25 == 4 D、(2 ** 2 > 2 * 2) and (not(3 ** 3 == 3 * 3))
  • 7. 有如下Python段程序:

    a = [ 6 , 12 , 9 , 20 , 8 , 11 , 4 ]

    for j in range( 1 , len( a ) ) :

        if  a[ j ] < a[ j - 1 ] :

     a[ j ] = a[ j ] + a[ j - 1 ] ;  a[ j - 1 ] = a[ j ] - a[ j - 1 ] ;  a[ j ] = a[ j ] - a[ j - 1 ]

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

    A、[ 4 , 6 , 12 , 9 , 20 , 8 , 11 ] B、[ 4 , 6 , 8 , 12 , 9 , 20 , 11 ] C、[ 6 , 9 , 12 , 8 , 11 , 4 , 20 ] D、[ 6 , 9 , 8 , 11 , 4 , 12 , 20 ]
  • 8.  有如下Python程序段:

    a = [ 5 , 4 , 2 , 1 , 3 , 6 ] ; q = [ 0 ] * 6 ; head = tail = 0

    for i in range( len( a ) ):

        if a[ i ] % 2 == 1 :

            q[ tail ] = a[ i ] ; tail = tail + 1

        elif head < tail :

            head += 1

    print( tail – head )

    执行该程序段后,输出结果为(   )

    A、0 B、1 C、2 D、3
  • 9. 有如下Python程序段:

    s = "Li20An24K04ao" ;  i = 0

    while i < len( s ) :

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

            s = s[ : i ] + s[ i + 1 : ]

        elif  "0" <= s[ i ] <= "9" :

            s = s[ : i ] + str( ( int(s[ i ]) + 8 ) % 10 ) + s[ i + 1 : ]

        else :

            s = s[ : i ] + chr( ( ord( s[ i ] ) – 95 ) % 26 + 97 ) + s[ i + 1 : ]

        i = i + 1

    执行上述程序后,s的值为(   )

    A、k08p0202co B、i08n0202cq C、i08p0202cq D、h28w22g82o
  • 10. 有如下Python程序段:

    import random

    a = [ 0 ] *5 ; i = 0 ; flag = True

    while i < 5 :

        a[ i ] = random.randint( 1 , 8 )

        if i % 2 == 1 :

            a[ i ] = a[ i ] + a[ i - 1 ]

            flag = not flag

        elif a[ i ] % 2 == 0 and flag == False:

            i -= 1

     i += 1

    执行该程序段后,列表a的值不可能的是(   )

    A、[5, 12, 1, 3, 2] B、[3, 11, 3, 10, 1] C、[4, 5, 5, 11, 7] D、[3, 4, 6, 7, 7]

二、非选择题(本大题共3小题,第13题8分,第14题8分,第15题10分,共26分)。

  • 11. 为支持公益事业,彩票中心设立了一个彩票项目。每张彩票上印有 7个各不相同的号码(号码范围从1到33)。每次开奖时,会随机生成一个由7个各不相同的号码构成的中奖号码。彩票的兑奖规则如下:“特等奖”彩票上的7个号码与中奖号码全部相同;“一等奖”有6个号码相同;“二等奖”有5个号码相同;“三等奖”有4个号码相同;“四等奖”有3个号码相同;“五等奖”有2个号码相同;“六等奖”有1个号码相同。兑奖时不考虑号码在彩票和中奖号码中出现的具体位置。例如,若中奖号码为23,31,1,14,19,17,18,而某张彩票的号码为12,8,9,23,1,16,7,则该彩票中得五等奖,因为其中有两个号码(23和1)与中奖号码相同。

    彩票中心编写一个程序,功能为:随机生成7个不重复的中奖号码,并读取文件“彩票记录.txt”(该文件存储所有已售出的彩票号码),最后根据兑奖规则输出开奖结果,运行界面示例如下:

    (1)、假设中奖号码为23,31,1,14,19,17,18,彩票为11,8,9,32,1,16,7,中奖结果为
    (2)、实现上述功能的Python程序如下,请在划线处填入合适的代码。

    import random #随机生成7个[1,33]范围内不重复的中奖号码

    flag= [ 0 ] * 34 ; data = [ 0 ] * 7

    i = 0

    while i < 7 :

     t = random.randint( 1 , 33 )

     if  not flag[ t ]:

            

     i = i + 1

    flag [ t ] = 1

    print("中奖号码:" , data)

    #读取"彩票记录.txt"文件,存储到数组sale=[[12,8,9,23,1,16,7],[11,7,10,21,2,9,31]…],代码略。

     #num[0]表示特等奖个数,num[i]表示i等奖个数

    for i in range( len ( sale ) ) :

        cnt = 0

     for j in range ( 7 ) :

     if  sale[ i ][ j ] in data:

     cnt += 1

        num[] += 1

    print("彩票开奖结果:")

    for i in range( 7 ):

     s="特等奖一等奖二等奖三等奖四等奖五等奖六等奖"

     print(s[] , "产生:" , num[ i ] , "个")

    (3)、上述加框处代码,能否修改为“num = [ 0 ] * 7”,(选填:是/否)。
  • 12. 某校为了支持学生的学习进步,特设补弱支持,每位学生可以根据自身学习情况,从语数英物化生政史地技这10门科目中,选择不超过两门科目作为自己的补弱科目,这些选择的数据已存储于"student.xlsx"文件中,部分数据如1图所示:

    1图

    2图

    (1)、首先,需要对数据进行整理,筛选出那些补弱科目数不符合学校规定(超出两门)的学生记录,以便通知他们重新选择补弱科目,Python程序如下:

    import pandas as pd

    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif'] = ['KaiTi','SimHei','FangSong'] #设置中文字体

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

    df_err = df[    ▲    ]

    请在▲处填入合适的代码

    (2)、数据整理并修正后,分析各班各科目的选择人数,以及各科目选择人数占总人数比例。

    km = ["语文","数学","英语","物理","化学","生物","政治","历史","地理","技术"]

    df1 = df . groupby( "班级" ) . 

    print( df1 ) #2图所示

    #删除“姓名”和“科目数”列

    df2 = df1 . drop(["姓名","科目数"] , axis = 1)

    g = df2 . sum() #g为Series对象

    #统计各科目的人数占总人数的比例

    for k in km:

     per = / len( df ) * 100

    print(k , "比例为:" , round(per,2) , "%") 

    x = 

    y = g . values

    plt.bar( x , y ) #3图所示

    plt.title("各科补弱比例对比") 

    plt.show()

  • 13. 在计算机的操作系统中,经常需要给应用程序“分配内存”和“释放内存”。若有大小为1024B的内存,如1图所示:

    使用列表["+",5]表示申请连续5B的内存,使用列表[2,2]表示回收位置2开始连续2B的内存。若指令集表示为:order=[["+",5],[2,2],["+",8],[8,3]]。随着指令集被执行,1024B连续的内存块会被分割成若干个占用内存空闲内存。为方便起见,“占用内存”用1表示,“空闲内存”用0表示,故执行上述指令集后,内存占用情况如2图所示:

    若将空闲块用链表组织起来,就可以快速查找空闲块和删除空闲块。把连续的空闲块定义为一个节点,每个节点由[空闲块起点, 空闲块长度, 下一个空闲块位置]三部分内容构成。根据2图内存占用情况,创建的空闲块链表如3图所示:

    (1)、根据2图所示的内存占用情况,执行指令[4,4]后(连续空闲块要合并),内存中“空闲块”的数量变为个。
    (2)、根据内存占用情况列表allot,创建空闲块链表代码如下:

    def linkList(allot): #linkList函数功能:根据内存占用0/1列表allot,创建空闲块链表link

     link = [ [-1,-1,-1] ] #链表包含一个空头节点

     head = tail = 0 ; n = len( allot ) ; i = 0

     while i < n :

     if allot[ i ] == 0 :

     j = i + 1

     while j<n and allot[ j ] == 0: 

     j = j + 1

     link.append( [ i , j – i , -1 ] )

     link[ tail ][ 2 ] =     ▲

     tail = len( link ) - 1

                

     else:

     i += 1

    return head , link

    请在▲处填入合适的代码

    若将加框处的代码修改为i = j,是否影响程序的执行结果(选填:是/否)。

    (3)、模拟上述内存操作的Python程序如下,请在划线处填入合适的代码。

    #通过文件读入内存分配表allot和指令集order,其代码略。

    head , link = linkList ( allot )

    for i in range( len( order ) ):

     if order[ i ][ 0 ] == " + ": #必须分配连续的空闲块,且由第一个满足空间大小的节点分配

     p = head ; q = link[ head ][ 2 ]

     while 

     p = q ; q = link[ q ][ 2 ]

     if  q == -1:

     print( "内存不足!" )

     else:

     if link[q][1] == order[i][1]: 

                    

     else:

     link[ q ][ 0 ] = link[ q ][ 0 ] + order[ i ][ 1 ]

     link[ q ][ 1 ] = link[ q ][ 1 ] - order[ i ][ 1 ]

     else:

     p = head ;  q = link[ head ][ 2 ]

     while q != -1 and link[ q ][ 0 ]<order[ i ][ 0 ]:

     p = q ; q = link[ q ][ 2 ]

     if link[ p ][ 0 ] + link[ p ][ 1 ] == order[ i ][ 0 ]: #前面节点合并

     link[ p ][ 1 ] = link[ p ][ 1 ] + order[ i ][ 1 ]

     else:

     link.append([ order[ i ][ 0 ] , order[ i ][ 1 ] , q]) #添加节点

     link[ p ][ 2 ] = len( link ) - 1

                p = link[ p ][ 2 ]

       if q != -1 and : #后面节点合并

     link[ p ][ 1 ] = link[ p ][ 1 ] + link[ q ][ 1 ]

     link[ p ][ 2 ] = link[ q ][ 2 ]