江苏省计算机二级python样卷 |
江苏省高等学校计算机等级考试 二级Python 语言考试(样卷) (本试卷完成时间 120 分钟) 第一部分 计算机信息技术基础知识 选择题(共20 分,每题2 分) 1. 根据不同的应用需求,数字音频采用的编码方法有多种,文件格式也各不相同。下列的音频格式中,由微软公司开发的,采用未压缩方法编码的是____。 A. WAV B. MP3 C. AAC D. WMA A 解析:MP3是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3,WMA是微软制订的音频压缩文件格式,比mp3标准晚,比mp3还小,比mp3音质还好, WAV是微软公司(Microsoft)开发的一种声音文件格式, 采用未压缩编码方式。 5 2. 下列有关IP地址(IPv4)和路由器的叙述中,错误的是_____。 A. 每个IP地址使用32个字节的二进制数表示,在使用中通常写成“点分十六进制”的形式 B. IP地址分为五类,其中A类、B类和C类是三个基本类,每类有不同长度的网络号和主机号 C. IP地址空间的分配由国际组织ICANN负责,目前IP地址空间已分配完毕 D. 路由器是连接异构网络的关键设备,一台路由器会拥有(使用)多个不同的IP地址 A 解析: 每个IP地址使用32个字节的二进制数表示,在使用中通常写成“点分十进制”的形式 。 4 3. 字符集及其编码是计算机中表示、存储、处理和交换文本信息的基础,但由于历史原因,目前不同系统或应用中使用的字符编码方案并不统一。下列编码方案中,所有字符均采用等长编码(编码长度相同)的是______。 A. GB2312 B. GB18030 C. UTF-8 D. UTF-16 A 解析: GB2312编码:是我国1981年颁布的第一个国标,该标准选出6763个常用汉字和682个非汉字字符,所有字符采用2字节编码; GB18030:包含汉字23940个,与GB2312与GBK保持兼容。同时与UCS也接轨,在我国信息处理产品中强制执行,ASCII采用1字节编码,汉字采用2字节编码,其他采用4字节编码; UCS:国际标准化组织(ISO)制定了一个将全世界所有文字与符号集中进行统一编码,称为UCS,与其等同的是由微软等公司共同制定的工业标准Unicode,UCS有两种标准UTF-8和UTF-16,UTF-8采用ASCII码用1个字节编码,拉丁字母,标点符号等采用2字节编码,汉字采用3个字节编码,其他极少字符采用4字节编码,UCS-16是指ASCII和汉字都采用2字节编码,其他不常用字符采用4字节编码,在Windows中文版上现在使用UTF-16,也是Java,.NET软件开发环境等默认的编码标准。 5 4. TCP/IP模型将计算机网络分成下列4层,每一层都包含若干个协议。在TCP/IP模型中,HTTP协议工作在______。 A. 接口层 B. 互连层 C. 传输层 D. 应用层 D 解析: TCP/IP包括了100多个协议,将通信问题划分为四个层次,从高到低依次是应用层、传输层、网络互连层、网络接口与硬件层,应用层规定了运行在不同主机上的应用程序之间如何通过互连的网络进行通信,包括的协议如HTTP,SMTP,FTP,TELNET等;传输层规定了怎样进行端-端的数据传输,有TCP和UDP两个协议,TCP协议负责可靠的完成数据从发送计算机到接收计算机的传输,UDP是不可靠的数据传输协议, 例如音频和视频数据的传输;网络互连层规定了在整个互连的网络中所有计算机统一使用的编址方案和数据包格式(称为IP数据报),以及IP数据报的转发机制;网络接口与硬件层规定了怎样与各种不同的网络进行接口,并负责将IP包转换成适合在特定网络中传输的帧格式 。 4 5. 下列有关计算机网络组成、分类和工作模式等叙述中,错误的是______。 A. 按网络所覆盖的地域范围来分,人们常将计算机网络分为LAN、ATM、WLAN等类型 B. 有些广域网是一些机构或组织自行构建的专用网,有些是网络运营商构建的公用数据网 C. 网络协议是计算机网络的重要组成部分,目前互联网主要采用TCP/IP协议系列 D. 计算机网络有两种基本工作模式,即P2P工作模式和C/S工作模式 A 解析: 按网络所覆盖的地域范围来分分为局域网(LAN)、城域网(MAN)、广域网(WAN) 。 4 6. 下列有关计算机的逻辑组成和分类的叙述中,错误的是______。 A. 一台计算机中往往有多个处理器,它们各有其不同的处理任务,其中CPU是核心部件 B. 主存储器与CPU高速连接,用来存放已经启动运行的程序代码和需要处理的数据 C. 人们提及PC时,泛指台式机、笔记本电脑、智能手机和平板电脑等个人使用的计算机 D. 嵌入式计算机是内嵌在其他设备中的专用计算机,许多嵌入式计算机都把软件固化在芯片中 C 解析: 人们提及PC时,泛指台式机、笔记本电脑等个人使用的计算机 。(注: 一台计算机中往往有多个处理器,如CPU,图形处理器等) 2 7. 字符集及其编码是计算机中表示、存储、处理和交换文本信息的基础,但由于历史原因,目前不同系统或应用中使用的字符编码方案并不统一。下列编码方案中,目前在我国信息处理产品中强制贯彻执行的是____。 A. GB 2312 B. GBK C. GB 18030 D. UCS/Unicode C 解析: GB18030:包含汉字23940个,与GB2312与GBK保持兼容。同时与UCS也接轨,在我国信息处理产品中强制执行。 5 8. 在现代通信系统中,为了能有效地提高数据链路的利用率、降低通信成本,一般使用多路复用技术让多路信号同时共用一条传输线进行传输。用户通过电话线使用ADSL技术接入互联网时,ADSL技术接入方式主要是使用了______。 A. TDM B. WDM C. FDM D. CDM C 解析:时分多路复用(TDM)是各终端设备按不同时间来轮流使用同一线路来传输数据,是计算机网络传输使用的主要方式,频分多路复用(FDM)是将不同信源发出的信号调制在不同频率的载波上,波分多路复用(WDM)是在一根光纤传输不同波长的光波。码分是指每个用户分配一个地址码,各个码型互不重叠,通信各方之间不会相互干扰,且抗干拢能力强 。 4 9. 光盘是目前常见的辅助存储器。下列相关叙述中,错误的是____。 A. 光盘存储器由光盘驱动器和光盘片两部分组成,光盘的基片是铝合金材料 B. 从接口来看,目前内置DVD光驱与主机的接口主要是SATA,外置的主要是USB C. DVD光盘分为单面单层、单面双层等多种类型,目前最常用的是单面单层的盘片 D. BD光驱采用波长较短的蓝色激光在光盘上进行数据读写,因而提高了光盘存储容量 A 解析: 光盘的基片是耐热的有机玻璃 。 2 10. 在微软公司的Office软件中内置了一种程序设计语言,用户可以使用它来编写程序以扩展功能。该语言是_____。 A. VBA B. VBScript C. Java D. C# A 解析: VBA用于编写程序来扩展Office软件的功能,VBScript用于嵌入到Html文档中以扩充网页的功能,Java用于网络编程,包括编写安卓智能手机的App,Object-C语言是iPhone和iPad编程的语言, Lisp语言与PROLOG语言主要用于人工智能,Ada语言用于飞行器控制,MATLAB是一种面向向量和矩阵运算的数值计算语言。 3 第二部分 Python 程序设计 一、 选择题(共10 分,每题2 分) 1.以下哪一个是Python 合法的标识符? A._name B.1name C.stu-name D.stu.name 2.以下关于Python 的赋值说法中错误的是哪一项? A.Python 中的变量在使用前必须赋值,变量赋值后该变量才会被创建。 B.Python 支持多元赋值和多重赋值。 C.Python 赋值时大小写敏感。 D.Python 中要首先声明变量的类型后才能给该变量赋值。 3.对于序列numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],以下相关操作和对应输出正确的是哪一 项? A.>>> numbers[0: 2] [1, 2, 3] B.>>> numbers[0: -1] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] C.>>> numbers[-2:] [9, 10] D.>>> numbers[0::3] [1, 3, 5, 7, 9] 4.以下不能作为字典的key 的是哪一个选项? A.2016 B.'China' C.listA = ['Name'] D.tupleA = (123) 5.如果需要在文本文件test.txt 的中间部分添加一行字符串,以下open 语句的mode 位置 应该选择以下哪一项? A.a B.r+ C.w+ D.a+ 二、填空题(共20 分,每空2 分) 1.执行如下代码,结果分别是(1) 和 (2) 。 >>> a = [5, 1, 3, 4] >>> print sorted(a, reverse = True) Out[]:____ >>> strs = ["a", "bb", "BB", "zz"] >>> print sorted(strs) Out[]:____ 2.若输入字符串“baozi”,则程序运行结果的第一行是 (3) ,第二行是 (4),第三行是 (5) 。 names = ["yunyun","sky","baozi","xiaoxiao","agui"] numbers = [5555555,11111,123456,88888,123321] data = dict(zip(names,numbers)) while True: name = input("Please input the name:") if data.get(name): print(data[name]) break else: print('Enter the name again. ') for (name, number) in data.items(): if(number < 100000): print(name) 3.执行如下代码,结果分别是(6) 和 (7) 。 >>> import numpy as np >>> a = np.arange(1, 5) >>> np.power(a, 2).sum() Out[]:____ >>> np.add(a, np.arange(4)) Out[]:array([____]) 4.若输入131 和2,则程序的运行结果是 (8)。 def foo(num, base): if(num >= base): foo(num // base , base) print(num % base , end = ' ') numA = int(input("Enter the first number: ")) numB = int(input("Enter the second number: ")) foo(numA, numB) 5.执行如下代码,则程序运行结果的第一行是[ (9) ],第二行是 (10)。 def fun(m, n): while n: m, n = n, m % n return m arr = [24, 18, 120, 54, 36, 35, 72, 33] print(arr[::-1]) hcf = fun(arr[0],arr[2]) for i in range(len(arr)): if i > 2 and i % 2 == 0: hcf = fun(hcf, arr[i]) print(hcf) 三、操作题(共50 分) 1. 完善程序(共12 分,每空3 分) 【要求】 1. 打开T 盘中的文件myf0.py,按以下程序功能完善文件中的程序。 2. 修改后的源程序仍保存在T 盘myf0.py 文件中。 【程序功能】 定义函数countchar()统计字符串中26 个字母出现的次数(不区分大小写)。例如字符串“Hope is a good thing.”的统计结果为: [1, 0, 0, 1, 1, 0, 2, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0] 【待完善的源程序】 def countchar( (1) ): list1 = [0]*26 for i in (2) (0,len(str)): if (str[i] >= 'a' (3) str[i] <='z'): list1[ord(str[i])- (4) ] += 1 print list1 if __name__ == "__main__": str = "Hope is a good thing." str = str.lower() countchar(str) 2. 改错(共16 分,每个错4 分) 【要求】 1.打开T 盘中的文件myf1.py,按以下程序功能改正文件中程序的错误。 2.可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理 命令,但不能增加其他语句,也不能删去整条语句。 3.修改后的源程序仍保存在T 盘myf1.py 中。 【程序功能】 在已排好序的列表中插入一个数让列表仍然有序。 函数insert 的形参data 指向的是原始的有序列表,num 为待插入的新数,函数的功能是找 到列表中正确的插入位置进行插入,让新列表仍然有序。 【测试数据与运行结果】 测试数据: Enter a new number:11 屏幕输出: The new sorted list is: [11, 13, 22, 31, 48, 54, 71, 91, 94] 测试数据: Enter a new number:38 屏幕输出: The new sorted list is: [13, 22, 31, 38, 48, 54, 71, 91, 94] 测试数据: Enter a new number:a Please enter a digit! (输出) Enter a new number:123 屏幕输出: The new sorted list is: [11, 13, 22, 31, 48, 54, 71, 91, 94, 123] 【含有错误的源程序】 def insert(data, num): length = length(data) data.append(num) for i in range(length) + 1: if num < data[i]: for j in range(length,i,-1): data[j] = data[j+1] data[i] = num break if __name__ == "__main__": data = [13,22,31,48,54,71,91,94] while True: try: num = int(input("Enter a new number:")) insert(data, num) print("The new sorted list is:",data) continue except ValueError: print("Please enter a digit!") 3. 编程(共22 分) 【要求】 1.打开T 盘中的文件myf2.py,在其中输入所编写的程序,输出结果数据文件取名myf2.out。 2.数据文件的打开、使用、关闭均用Python 标准库中缓冲文件系统的文件操作函数实现。 【程序功能】 判断所给出的数字是否是素数并且按要求变化后的数字是否是默尼森数。 P 是素数且M 也是素数,并且满足等式M=2P-1,则称M 为默尼森数。 【编程要求】 1.将测试数据放到一个列表中,结果放到一个新的列表中。 2.编写函数isprime(x),函数功能为判断整数x 是否是素数,如果是则返回True,否则返回 False。 3.编写函数ismonisen(x),函数基于isprime(x)函数,函数功能为判断x 是否是默尼森数, 如果是则返回True,否则返回False。 4.调用ismonisen(x)函数,对测试数据进行判断,将测试数据中变化后的所有默尼森数保存 到一个新的列表中,并输出(中间用一个空格分隔)到屏幕及文件myf2.out 中。最后将考 生本人准考证号字符串输出到文件myf2.out 中。 【测试数据与运行结果】 测试数据: 2, 7, 11, 13, 21 屏幕输出: 3 127 8191 参考答案: 第一部分 计算机信息技术基础知识 选择题 略 第二部分 Python 程序设计 一、选择题 (1) A (2)D (3)C (4) C (5)B 二、填空题 (1)[5, 4, 3, 1] (2)['BB', 'a', 'bb', 'zz'] (3)123456 (4)sky 或xiaoxiao (5)xiaoxiao 或sky (6)30 (7)1, 3, 5, 7 (8)1 0 0 0 0 0 1 1 (9)33, 72, 35, 36, 54, 120, 18, 24 (10)12 三、操作题 1.完善程序 def countchar( str): list1 = [0]*26 for i in range(0,len(str)): if (str[i] >= 'a' and str[i] <='z'): list1[ord(str[i])- ord('a')] += 1 # ord("a")或97 也正确 print(list1) if __name__ == "__main__": str = "Hope is a good thing." str = str.lower() countchar(str) 2.改错 def insert(data, num): length = len(data) data.append(num) for i in range(length): if num < data[i]: for j in range(length,i,-1): data[j] = data[j-1] data[i] = num break if __name__ == "__main__": data = [13,22,31,48,54,71,91,94] while True: try: num = int(input("Enter a new number:")) insert(data, num) print("The new sorted list is:",data) break except ValueError: print("Please enter a digit!") 3.编程 import math def isprime(x): if x==1: return False k = int(math.sqrt(x)) for j in list(range(2,k+1)): if x % j == 0: return False return True def ismonisen(x): if isprime(x) and isprime(2**x-1): return True else: return False if __name__ == "__main__": num_list = [2, 7, 11, 13, 21] result_list = [] for num in num_list: if ismonisen(num): temp = 2 ** num - 1 print(temp, end = ' ') result_list.append(str(temp)+' ') with open("T:\\myf2.out", "w") as fp: fp.writelines(result_list) fp.write("\nMy exam number is: 0112400123 |