浙江省湖州市三贤联盟2021-2022学年高二上学期信息技术期中试卷

试卷更新日期:2022-03-07 类型:期中考试

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

  • 1. 下列有关数据和信息的说法,正确的是(    )
    A、数据只有收集后才存在 B、数据可以是一串数字,经过解释后具有一定的意义,这个意义就是信息 C、数据也是可以被捏造的,捏造出来的数据无法承载任何信息 D、相同的数据得到的信息一定是相同的
  • 2. 为了保障数据的安全,下列做法正确的是(    )

    ①定期备份数据库  ②安装磁盘阵列系统  ③安装防火墙系统  ④对数据进行加密 ⑤安装杀毒软件

    A、①②④ B、①②③ C、①②③④ D、①②③④⑤
  • 3. 下列有关n进制数 120 的说法,正确的是(    )
    A、该数转换成十进制后一定是偶数 B、该数转换成十进制后可能小于10 C、该n进制至少包含3个数码 D、该n进制数去掉最低位的“0”后,其对应的十进制值扩大n倍
  • 4. 输入法是一种重要的数据收集方式,通过对某用户常用词组的分析可以大致得到该用户的 基本信息,下列说法不正确的是(    )
    A、采用语音输入或者手写输入就可以避免个人信息通过这种方式被收集 B、只要计算机不联网,就无法通过这种方式泄露个人信息 C、在法律允许范围内该种方式直观的体现了人人都是数据的生产者 D、通过联网更新后,越来越多新的词组可以被记忆以达到快速录入的目的,从而提高录入速度
  • 5. 为了保障数据传输过程中数据的安全,人们往往采用多种方式来隐藏数据或者伪装数据。其中一种常用的办法就是把数据插入到一幅图像中,通过把真实数据以二进制的形式插入到图像中,这样即使被截获,表面看起来就是一幅图像。下列几组数据中最有可能存在隐藏数据的是(    )
    A、 B、 C、 D、
  • 6. 在抗击疫情的战斗中,大数据技术充分发挥了其数据量大、速度快、类型多等优势,特别是在对密切接触者的判断和查找中发挥了巨大的作用,下列发现密切接触者的场景中没有体现大数据技术应用的是(    )
    A、利用手机基站获取的定位信息 B、利用购票、乘车信息获取的出行信息 C、利用药店纸质登记的个人联系信息 D、利用人脸识别获取的商店进出信息
  • 7. 某算法用伪代码描述如下:

    输入两个互不相等的正整数A和B

    10:If A<B then

    C←A,A←B,B←C)

    输出A和B

    Else

    返回到标号10的行继续执行

    下列有关上述算的法说法,正确的是(    )

    A、该算法违反了算法有穷性原则 B、该算法实现了找出A和B中的最大值 A C、该算法属于分支结构 D、该算法无法使用流程图来描述
  • 8. 会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算,而浮点数在精度和运算所消耗的时间上有所欠缺,为了解决这个问题,一般采用BCD码来应对高精确度的计算。BCD码种类很多,其中压缩的8421BCD码是最简单的编码方式,采用4位二进制数表示1位十进制数,根据每个位置上的权值8、4、2、1来表示十进制数(如十进制数8用压缩8421BCD码表示为1000BCD),如果对十进制数123采用压缩的8421BCD码进行编码的结果是(       )
    A、000100100011BCD B、100100011BCD C、1111011BCD D、01111011BCD
  • 9. 以下流程图表示的算法是将十进制整数n(n≥0)转换成二进制形式空白处填写正确的是(       )

    A、①n<>0? ②s=‘0’   ③s=‘’   ④n=0? B、①n<>0? ②s=‘’   ③s=‘0’   ④n<>0? C、①n=0?       ②s=‘0’   ③s=‘’   ④n=0? D、①n=0?       ②s=‘’   ③s=‘0’   ④n<>0?
  • 10. 有如下程序段:

    def f(a,b):

    if a>b:

    return a-b return a+b

    x1=int(input("请输入第一个数"))

    x2=int(input("请输入第二个数"))

    print(f(f(x1,x2),f(x2,x1)))

    当键盘输入12和13后,程序输出的结果是(    )

    A、重复调用出错 B、50 C、24 D、26
  • 11. 查找素数能够很好的体现出计算机解决某些数学问题的速度优势,除了计算机性能以外,设计更加简单的算法也能够提高计算机解决某些问题的速度。某种素数算法就是通过“开关”的思想,例如求100以内的所有素数,采用列表来表示[1,1,1,1,……,1,1,1],列表的索引值表示0-99中的每个数,1表示“开”即为素数(先假设都为素数),从2(0和1不是素数)开始,因为索引2号对应的值为1,则2是素数,再将后面能够被2整除的索引对应的值都改为0,依次类推……以下程序就是采用这种思路编写的输出1000以内的所有素数的程序:

    lst1=[]     #存放每个数的开关

    lst2=[]     #存放找到的素数

    lst1=[1]*1000    #初始化开关列表

    for i in range(2,1000):

    if lst1[i]==1:

    lst2.append(i)

                         

    lst1[j]=0

    print(lst2)    #输出所有 1000 以内的素数

    上述程序横线处的合适代码为(    )

    A、if lst1[j]%i==0: B、if lst1[i]%i==0: C、for j in range(i,1000,i): D、for j in range(i+1,1000,i):
  • 12. 有如下程序段:

    import random #导入随机数模块

    n=random.randint(0,100) #产生0-100之间的随机整数,包含0和100

    m=n; k=0; s=''

    while n!=1:

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

            if n % i==0 :

                k=i n=n//k
                s=s+str(k)+'*'

            break

    print(m,'=',s[0:len(s)-1])

    上述程序执行后,输出结果不可能的是(    )

    A、67=67 B、34=2*17 C、54=2*3*3*3 D、20=2*3*4

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

  • 13. 信息的加密一直是一种保障信息安全的手段,其中最简单的一种加密方法就是采用密钥加密。 如下是对小写字母利用密钥加密的基本算法:

    ①输入密钥a(0<a<26的正整数)

    ②设置i的初值为0,s1的初值为空串

    ③获取待加密字符串s的第i个字母c

    ④按字母表顺序用字母c后面第a个字母代替字母c;如果字母c后面第a个字母超出了“z”,则返回“a”后再按次序后移(说明:字母“z”后移2位应该变为“b”)

    ⑤将加密完成的字母c连接到s1中

    ⑥i增加1

    ⑦如果i的值小于等于待加密字符串s的长度-1,则返回第③步,否则输出密文字符串s1

    (1)、如果密钥为3,那么采用该算法对字符串‘axz’加密后的密文应该是;同样,采用该算法获得密文为‘happy’,密钥为5,则加密前的原文是
    (2)、如果要将此算法改为对应的解密算法,仅需改动第步(仅1个步骤,不考虑原算法其它步骤中“加密”字样的修改),改为:
  • 14. 技术学科一共包含2门学科——信息技术和通用技术,这就需要我们关注学科的平衡,而衡量某位学生学科平衡的重要指标就是学科吻合度,我们采用信息技术与通用技术的得分差来判断(分差每3分为一级:分差0 到3分(不含3分),表示“0级偏差”;分差3到6分(不含6分),表示“1级偏差”,分差6到9分(不含9分),表示“2级偏差”……分差最高为50分,最后一级分差48到50(含50分),表示“16级偏差”),计算每位学生的吻合度偏差值。根据题意,请回答下列问题:

    (1)、为了后续程序处理,我们需要把数据读入到程序中,每个学生一条记录,用python存储学生测试得分数据下列可行的是(以前两条记录为例)          
    A、students=[[0901,50,32],[ 0902,50,45],……] B、students={'0901':['50', '32'], '0902':['50', '45'],……} C、students={0901:['50', '32'], 0902:['50', ' 45'],……} D、students=[['0901', '50', '32'],['0902', '50', '45'],……]
    (2)、编写函数f(xx,ty)实现传入信息得分和通用得分,返回吻合度级别(返回示例:'1 级偏差')
    (3)、完成程序填空:

    students={'0901':[50,82],'0902':[50,95],……}    #(以前两条记录为例)

    for i in students.keys():

    xx=

    ty=

    print(i,':',f(xx,ty))

  • 15. 图像的存储和处理在计算机内部的是采用二进制的形式,一幅图像常常由分辨率、颜色深度的方式来存储,Python的PIL模块能够直接读取图像中每个像素点的颜色信息,一般采用 RGB(红:0~255,绿:0~255,蓝:0~255)的方式表示颜色。现有一幅红字白底图像1.bmp,基本信息如下:

    1 bmp

    1 bmp属性截图

    #程序段 1:

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt

    img=np.array(Image.open('1.bmp').convert("L"))

    rows,cols=img.shape#获取图像的行数和列数

    for i in range(rows):

    for j in range(cols):

    if img[i,j]>128:

    img[i,j]=0 #设置为黑色

    else:

    img[i,j]=1 #设置为白色

    plt.figure("1.bmp")

    plt.imshow(img,cmap="gray") #以灰度模式显示

    plt.axis("off")

    plt.show()

    说明:以上程序段1实现将1.bmp 以黑底白字显示

    请根据以上信息回答下列问题:

    (1)、程序段1运行过程中,变量j的值范围是
    (2)、程序段2调试时出现“IndexError: index 128 is out of bounds for axis 1 with size 128”的提示,则上述程序出现这个错误的语句是

    A. rows,cols=img.shape                        B. for i in range(rows)

    C. img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]       D. plt.imshow(img,cmap="gray")

    应该修改为:

    (3)、将第(2)题表述的错误修改正确后,程序段2运行后图片呈现的内容:

    #程序段 2:

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt img=np.array(Image.open('1.bmp').convert("L"))

    rows,cols=img.shape

    for i in range(rows):

    for j in range(cols//2):

    img[i,j],img[i,cols-j]=img[i,cols-j],img[i,j]

    plt.figure("hh")

    plt.imshow(img,cmap="gray")

    plt.axis("off")

    plt.show()

  • 16. 超市收银系统一般由收银机、条码称及数据服务器组成,收银机通过扫描条形码来录入购物信 息, 打印购物小票进行结算。超市的商品一般分为两种类型:计件商品和计重商品,商品的条形码信息中还需要包含商品类别识别码,用于识别商品类型。某次购物条码图和清单如下:

    (1)、根据以上条码图和购物小票信息,如果客户购买了 1kg 仔排,条码秤打印出来的条码编码是
    (2)、购物结算清单中的下列信息来自数据服务器的是(多选题)      
    A、商品名称 B、商品单价 C、会员积分 D、商品重量 E、商品总金额
    (3)、

    以上是解决这个问题而设计的一种算法,该算法中①处该填写 , 该算法中②处填写

    A.  ty!=‘01’    B. ty==‘01’    C. ty!=01    D. ty==01

    (4)、根据此算法,编写如下代码实现收银机功能(用输入字符串;‘end’模拟“结算”按钮,用键盘输入条形编码模拟扫描输入,把购物清单输出到文本文件list txt模拟打印购物清单):

    sp={}      #商品信息字典

    #此处代码功能从数据服务器中获取商品信息字典 sp,sp 的结构为{'商品货号':'商品名称,商品单价'}

    alljg=0.0 #保存结算总金额

    sn=input('请输入商品条形码:')

    #######################################################

    #完成购物清单文本文件头处理 f=open('list.txt', 'r+')     #打开文本文件

    list.txt f.truncate()     #清空文本文件内容

    f.write('货号\t\t 商品名称\t 数量\t 单价\t 金额\n')

    ########################################################

    while    ▲    

    ty=sn[0:2]    #获取商品类型

    hn=sn[2:7]    #获取商品货号

    if  hn in sp:

    mc=sp[hn].split(', ')[0] #获取商品名称

    dj=float(sp[hn].split(', ')[1])    #获取商品单价 if

    ty!= '01':

    sl=1.0

    jg=dj

    else:

    sl=float(sn[12:14]+'. '+sn[14:17])

         ▲   

    print('{:<10s}{:<20s}{:^10.3f}*{:^10.2f}={:^10.2f}'.format(hn, mc, sl, dj, jg))

    #按格式输出内容,主要目的保持输出的内容上下按类别对齐

    f.write(hn + '\t\t' + mc + '\t' + str(sl) + '*\t' + str(dj) + '=\t' + str(jg) + '\n')

    #往文本文件中写入购物记录信息

    alljg+=jg

    else:

    print('商品货号有误,请核对后重新输入')

       ▲   

    print('小计:{:.2f}'.format(alljg))

    f.write('---------------------------------------\n') #文本文件输出分割线

    f.write('小计:'+str(alljg))     #往文本文件中写入总计信息

    f.close#关闭 list.txt 文件

    横线处代码应填