江蘇省計算機二級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 |