資源簡介 絕密★考試結束前2023年 6月浙江省普通高校招生選考科目考試技術試題姓名: 準考證號:考生須知:1.考生答題前,務必將自己的姓名、準考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙上。2.選擇題的答案須用 2B鉛筆將答題紙上對應題目的答案標號涂黑,如要改動,須將原填涂處用橡皮擦凈。3.非選擇題的答案須用黑色字跡的簽字筆或鋼筆寫在答題紙上相應區域內,作圖時可先使用 2B鉛筆,確定后須用黑色字跡的簽字筆或鋼筆描黑,答案寫在本試題卷上無效。第一部分 信息技術(共 50分)一、選擇題(本大題共 12小題,每小題 2分,共 24分。每小題列出的四個備選項中只有一個是符合題目要求的,不選、多選、錯選均不得分)1.下列關于數據和信息的說法,正確的是A.在數據處理過程中不會有新的信息產生B.信息的保存和傳播可以不依附于載體C.信息的價值因人而異,但信息不會有虛假D.計算機中的數據表現形式不同,但都以二進制方式存儲【答案】D【解析】本題考查數據與信息的基本概念以及相關知識。選項 A,信息是數據經過儲存、分析及解釋后產生的意義,所以數據處理的過程中,會有新的信息產生。不會有新的信息產生,錯誤;選項 B,信息是不能獨立存在的,必須依附于一定的載體,即載體依附性。選項中的相應說法錯誤;選項 C,信息是可以加工處理的,這一特征使信息有真偽性,存在虛假信息。說法錯誤;選項 D,現代的計算機內部,數據只能以二進制的方式進行存儲和處理。正確。閱讀下列材料,回答第 2至 4題:某智慧課堂系統的部分功能是:教師進教室后刷校園一卡通實現身份認證并啟動系統,學生進教室時通過攝像頭刷臉簽到,簽到結果保存在服務器的數據庫中,系統可自動生成考勤報表。課堂教學時,教師可將教學資源發送到學生的移動終端,學生可將作業文檔上傳到系統。可以現場錄制教學視頻并保存到服務器,系統每天定時備份數據。2.下列關于該系統功能和應用的說法,不.正.確.的是A.該系統設計合理,不存在局限性B.教學視頻保存到服務器,有利于師生跨時空學習C.該系統具有數據采集、處理和存儲等功能D.數據庫可以用于存放該系統中的教師身份數據【答案】A技術(選考)試題 第 1 頁(共 14 頁)【解析】本題考查信息系統相關概念。選項 A,信息系統天然存在一定的局限性,再合理的設計也無法完全避免。說法不正確;選項 B,將教學視頻保存到服務器,方便師生跨越時空進行學習,正確;選項 C,根據材料的相關描述,智慧課堂系統,具備數據采集、處理和存儲功能,正確;選項 D,數據庫存儲教師(也可以包含學生等)身份數據,是合理的選擇,正確。3.該系統的下列應用中,體現人工智能技術的是A.將現場錄制的教學視頻保存到服務器 B.系統自動生成考勤報表C.學生進教室時通過攝像頭刷臉簽到 D.教師將教學資源發送到學生的移動終端【答案】C【解析】本題考查人工智能的基礎知識。選項 A,體現信息系統中的基本數據的存儲;選項 B,體現信息系統中的基本數據處理;選項 C,通過攝像頭刷臉簽到,這屬于人工智能中的視覺識別技術,一般利用聯結主義中的深度學習完成;選項 D,體現信息系統中的數據的傳輸。4.下列關于信息系統安全和信息社會責任的說法,正確的是A.教師刷一卡通實現身份認證,能確保系統沒有安全隱患B.系統服務器若安裝了殺毒軟件,數據文件就不會被病毒侵害C.系統每天定時備份數據,是保護數據安全的重要措施D.未經授權,可將課堂教學視頻放到電商平臺出售【答案】C【解析】本題考查信息系統安全和社會責任的相關概念和常識。選項 A,教師刷一卡通實現身份認證可以提高信息系統的安全性,但卻無法杜絕安全隱患問題;選項 B,殺毒軟件一般都是針對已知病毒,無法防范新型病毒的侵害。即便是之前出現過的計算機病毒,也不能保證 100%查殺;選項 C,定時備份數據,是保護數據安全的終于措施,正確;選項 D,未經授權將課堂教學視頻放到電商平臺出售,侵犯了知識產權。5.下列關于網絡系統的說法,不.正.確.的是A.局域網內部通信需要遵循網絡協議B.局域網內可以同時有無線通信和有線通信兩種方式C.校園網內可以搭建多個局域網D.可用作服務器的計算機無法用作客戶端【答案】D【解析】本題考查網絡相關的概念以及基礎知識。選項 A,網絡協議是計算機網絡正常工作的基礎,局域網也不例外,正確;選項 B,局域網通信方式既可以是有線也可以是無線方式,正確;選項 C,局域網是有限范圍內計算機通信網,校園網當然可以根據范圍搭建多個局域網;技術(選考)試題 第 2 頁(共 14 頁)選項 D,服務器和客戶端的稱謂只是相對 B/S 或 C/S 這些工作架構的實際作用而言的,用作服務器的計算機和普通計算機相比,并無本質不同(一般充當服務器的計算機軟硬件性能稍高)。因此充當服務器的計算機也可用作客戶端。故選項 D不正確。6.某智能手機安裝了鴻蒙操作系統,其主板集成了處理器、存儲器等芯片,下列說法正確的是A.存儲器可以存放用戶數據而不能存放應用程序B.鴻蒙操作系統是智能手機重要的應用軟件C.處理器性能是智能手機性能的唯一指標D.智能手機硬件包括輸入、處理、存儲和輸出等部分【答案】D【解析】本題考查計算機硬件、軟件與移動終端的組成相關知識。A選項存儲器的功能是存放程序和數據,因此 A選項錯誤;B選項操作系統是最重要的系統軟件而不是應用軟件,因此 B選項錯誤;C選項智能手機的性能主要由處理器、存儲器等部件的性能指標決定,因此 C選項錯誤;D選項智能手機跟計算機一樣,其硬件包括輸入、處理(運算與控制)、存儲和輸出四個部分。故答案選 D。7.對某段聲音進行數字化,量化值的范圍是 0~200,則量化位數最少是A.7 B.8 C.16 D.200【答案】B【解析】本題考查聲音量化、量化位數、進制轉換相關知識。量化指將信號的連續取值近似為有限個離散值的過程,量化值一般用二進制數表示,其二進制位數決定了量化的精度,也稱作量化位數。題干中已知量化值的十進制表示范圍是 0~200,其二進制表示范圍為00000000~11001000,因此量化位數最少為 8位。故答案選 B。8.某二叉樹的樹形結構如第 8題圖所示,其前序遍歷結果為 BDEFCA,則中序遍歷結果為A.EDCFBA B.ECFDABC.BFDEAC D.EDFCBA第 8題圖【答案】A【解析】本題考查二叉樹的遍歷相關知識。前序遍歷規則為“根左右”,已知前序遍歷結果為 BDEFCA,結合第 8題圖可知:此二叉樹第一次劃分狀態應為 B DEFC A , ,根 左 右技術(選考)試題 第 3 頁(共 14 頁)再次根據前序遍歷規則結合結構圖,對左子樹進行劃分 D E FC , ,根 左 右最后重復上述劃分過程,對 FC進行劃分 F C , 。根 左根據完整的二叉樹結構圖,得出中序遍歷為 EDCFBA。故答案選 A。9.棧 s的最大長度為 3,初始為空,經過一系列入棧、出棧操作,若元素入棧的順序是 a,b,c,d,e,f,則可能的出棧序列為A.f,e,d,c,b,a B.c,b,a,f,e,dC.c,a,b,d,e,f D.c,e,d,b,a,f【答案】B【解析】本題考查棧的入棧與出棧等相關知識。此圖作為一道驗證出棧可能性的問題,需要結合題干的限制條件來進行,題干說明棧 s的最大長度為 3,初始為空。A選項 f最先出棧,說明 a,b,c,d,e,f需要全部入棧后,f才能出棧,但這種情況下棧長度需要為 6,不符合題意,故 A選項錯誤;B選項 c最先出棧,此時 a,b,c入棧,接著 c,b,a依次出棧,此時棧 s內為空,接下來 f出棧,說明 d,e,f需要入棧,接著 f,e,d出棧,過程中棧內長度符合題意,故 B選項正確。C選項 c最先出棧,此時 a,b,c入棧,接著 c出棧,此時棧內 a,b,由于 b是棧頂元素,所以接下來出棧元素不可能是 a,故 C選項錯誤。D選項 c最先出棧,此時 a,b,c入棧,接著 c出棧,此時棧內 a,b,接下來 e出棧,需要 d,e入棧,此時棧內a,b,d,e,棧長度為 4,不符合題意,故 D答案錯誤。故答案選 B。10.定義如下函數:def f(a,s):if a>=s:return aelse:return f(a+1,s-a)執行語句 k = f(6,21)后,k的值為A.6 B.7 C.8 D.9技術(選考)試題 第 4 頁(共 14 頁)【答案】C【解析】本題考查遞歸算法及自定義函數知識。觀察自定義函數 f(a,s)可知:當參數 a≥s時(即遞歸結束條件),返回值 a;否則遞歸調用 f(a+1,s-a)。執行語句 k = f(6,21),模擬計算過程如下:第一次調用函數 f(6,21);由于未達到遞歸結束條件,第二次調用函數 f(7,15);未達到遞歸結束條件,第三次調用函數 f(8,8),滿足遞歸結束條件 a≥s,返回值為 a,得到答案8,故選 C。11.列表 q長度為 20,q[0]至 q[4]的值依次為'p',' r',' i','n',' t',執行如下程序段后,輸出的最后一個字符為head,tail= 0,5while head < tail:if head % 3 == 0:print(q[head])else:q[tail] = q[head]tail += 1head += 1A.t B.n C.i D.r【答案】D【解析】本題考查單向順序隊列的基本操作(數組實現)。根據隊列基本操作可知程序段的功能是:當隊列 q 非空時(空隊列為 head == tail),根據頭指針的索引位置(head % 3 == 0),分別執行“出隊”操作或者“出隊并入隊”操作,再結合題意,本題求解的是最后一個出隊元素。用表格法模擬該隊列頭、尾指針和“出隊”操作的變化,如下表:head tail 隊列 q 出隊字符0 5 p,r,i,n,t p3 7 n,t,r,i n6 9 i,t,r i9 11 t,r t12 13 r r綜上所述,故選 D。12.已排序的列表 a有 n個整型元素,現要查找出現次數最多的值并輸出。若出現次數最多的值有多個,則輸出最前面的一個。實現該功能的程序段如下,方框中應填入的正確代碼為c,m,v =1,1,0for i in range(1,n):。print(a[v])技術(選考)試題 第 5 頁(共 14 頁)A.if a[i]==a[i-1]: B. if a[i]==a[i-1]: C. if a[i]==a[i-1]: D. if a[i]==a[i-1]:c+=1 c+=1 c+=1 c+=1if c>m: if c>m: else: else:m=c m=c if c>m: if c>m:v=i v=i m=c m=celse: else: v=i-1 v=i-1c=1 c=1 c=1 c=1【答案】A【解析】本題考查基本算法和數據結構的應用,涉及最值求解、已排序數組的相鄰元素邏輯關系等知識。由于列表 a 為有序列表,即有“值相同的數都是相鄰的”這一邏輯關系,因此計算每個數的出現次數,可以通過檢查相鄰兩個數進行統計。觀察程序段和選項中的代碼可知:變量 v為次數最多的值在列表 a 中的索引,變量 c為當前數值的出現次數,變量 m已統計次數中的最大值。其算法思想是:若相鄰兩個數相等,則計數器 c加 1,否則應該將 c變為初值 1,首先可以排除選項 B,因為該選項中 else分支不符合邏輯。選項 CD都存在缺陷,例如最多的一組相同的數出現在列表的最后時,均不能準確統計結果。例如 a= [2, 3, 3,3, 4, 4, 4, 4, 4],此時輸出值為 3,而正確結果為 4。本題選項 A邏輯結構合理,可以完成各種情況的統計任務,故選 A。二、非選擇題(本大題共 3小題,其中第 13小題 7分,第 14小題 10分,第 15小題 9分,共 26分)13.某倉庫有一排連續相鄰的貨位,編號依次為 0~n-1,用于放置 A、B兩種類型的箱子,A型箱子占 2個相鄰貨位,B型箱子占 1個貨位。編寫程序,根據已完成的放置或搬離操作,輸出空貨位數及還可以放置 A型箱子的最多數量(不移動已放置的箱子)。請回答下列問題:(1)若 n為 10,開始時貨位全空,經過如第 13題圖所示的放置或搬離操作后,不移動已放置箱子的情況下,還可放置 A型箱子的最多數量為 個。(2)實現上述功能的部分 Python程序如下,請在劃線處填入合適的代碼。# 讀取貨位總數,存入 n,代碼略。cnt1 = nlst = [0]*n # 貨位狀態,0表示對應的貨位為空while True: 第 13題圖# 讀取本次已操作的數據:箱子類型、操作類型、貨位編號起始值,存入 t、d和 s,代碼略if t = = 'A':w = 2① :w=1else: # t不是'A'或'B'時退出循環breakif d = = 'P': # d為 P時表示放置,否則表示搬離②else:cnt1 + = wlst[s]=1-lst[s]if t = = 'A':lst[s+1] = 1-lst[s+1]技術(選考)試題 第 6 頁(共 14 頁)i, cnt2 = 0,0while i < n-1:if lst[i] = = 0 and lst[i+1] = = 0:③cnt2 + = 1i + = 1print("當前空貨位數: ' ,cnt1,',還可放置 A型箱子的最多數量: ' ,cnt2)【答案】(1) 2 或 “兩” (1分)(2) ①elif t = ='B' 或 elif t = =''B'' 或 elif t = ='''B''' 或 elif (t = ='B') (2分)②cntl - = w 或 cntl = cntl - w (2分)③i += 1 或 i = i + 1 (2分)【解析】本題考查 Python基礎應用能力。(1)10個空位放置情況如下圖所示:A型箱一個要占 2個相鄰貨位,最多可放 2個①從初始 cnt1=n可以看出,cnt1是空貨位數量。以下代碼:if d=='P': #d為 P時表示放置,否則表示搬離②else:cnt1+ =w可以看出,搬離時 cnt1+ =w,w變量為應搬離的數量,那么當 t=='B'時,搬離數量應為 1,故①處填:elif t=='B'搬離時空位加 w,則放置時空位減 w,②空填:cnt1-=w③以下代碼:while i < n-1:if lst[i]==0 and lst[i+1]==0:③cnt2+=1i+=1統計連續兩個空位的個數,統計完后指針 i要向后跳 2,故③處填:i+=1本題題意明確,設計較為巧妙,是一道不錯的學選考過渡題。14.小華要搭建書房環境監控系統,該系統能實現監測書房溫度和濕度,出現異常時發出警報。用戶通過瀏覽器查看實時監測結果和歷史數據。小華已選擇的硬件有:智能終端、溫濕度傳感器、執行器(如蜂鳴器)、服務器等,系統的硬件搭建方式是:服務器通過無線網絡連接智能終端,智能終端連接傳感器和執行器,請回答下列問題:(1)該系統中,智能終端與服務器之間的數據傳輸 (單選,填字母:A.只能由智能終端到服務器端 / B.只能由服務器端到智能終端 / C.既可以由智能終端到服務器端,也可以由服務器端到智能終技術(選考)試題 第 7 頁(共 14 頁)端)。(2)下列功能需要在智能終端程序中實現的是 (單選,填字母:A.采集溫濕度傳感器上的數據 /B.處理瀏覽器訪問請求)。(3)小華基于 Falsk Web框架編寫服務器端的程序,部分代碼如下。編寫完成后,若要通過瀏覽器獲取視圖函數 index()返回的頁面,則應訪問的 URL是 http:// 。# 導入 Falsk 框架模塊及其他相關模塊,代碼略app = Flask(__name__)@app.route('/')def index():# 從數據庫讀取溫度和濕度數據,并返回頁面,代碼略# 服務器其他功能,代碼略if __name__ == '__main__':app.run(host = '192.168.1.108', port = 5000)(4)請通過增加傳感器和執行器對該系統功能進行一項擴展,寫出增加的傳感器和執行器名稱及實現的功能。(5)小華將系統中某天 24小時的濕度數據導出,部分數據如第 14題圖 a所示(時間格式為“時:分:秒”),分析每小時的最大濕度值,線形圖如第 14題圖 b所示,部分 Python程序如下:第 14題圖 a 第 14題圖 bimport pandas as pdimport matplotlib.pyplot as pltdft = pd.read_csv('data.csv') # 讀取文件 data.csv中的數據dft.insert(0, '小時', '') # 插入列for i in dft.index:t = dft.at[i, '時間'] # 通過行標簽和列標簽選取單個值dft.at[i, '小時'] = t[0: 2]dfh = dft.groupby( , as_index = False).max() # 分組求最大值plt.plot(dfh['小時 '], dfh['監測值']) # 繪制線形圖# 設置繪圖參數,顯示如第 14題圖 b所示的線形圖,代碼略①請在程序中劃線處填入合適的代碼。②小華分析線形圖發現存在濕度值大于等于 100的噪聲數據,要刪除 dft對象中噪聲數據,下列代碼段中,能正確實現的有 (多選,填字母)。(注:全部選對的得 2分,選對但不全的得 1分,不選或有選錯的得 0分)A.dft = dft[dft[ '監測值'] < 100]B.dft = dft[ '監測值'] < 100C.n = len(dft[dft[ '監測值'] >= 100])dft = dft.sort_values('監測值') #升序排序dft = dft.tail(n) #獲取尾部數據行技術(選考)試題 第 8 頁(共 14 頁)D.for i in dft.index:if dft.at[i, '監測值'] >= 100:dft = dft.drop(i) #刪除行【答案】(1)C (1分)(2)A (1分)(3)192.168.1.108:5000/ 或 192.168.1.108:5000 (2分)(4)增加氣體傳感器、LED指示燈,采集房間空氣質量數據,并提示異常 或其他等價答案 (2分)(5) ①'小時' 或['小時'] 或 dfh['小時'] (2分)②AD (2分)【解析一】本題綜合考查了基于 Flask Web框架和智能硬件的信息系統搭建。第(1)題考察智能終端與Web服務器之間的數據傳輸。教材的信息系統搭建示例中,實現了智能終端通過IOT模塊以 GET或 POST的方式向服務器發送數據,服務器響應后,視圖函數的返回值會回傳到智能終端,典型的如 errno, resp = Obloq.get(…)。代碼中的 errno是服務器響應的錯誤代碼,resp則是視圖函數的返回值,智能終端可以根據這個返回值做出一些其他操作。答案 C。第(2)題與搭建信息系統的實踐相關,考察學生真實的搭建系統經歷。智能終端解決傳感器與執行器的操作問題,而瀏覽器的請求響應則由服務器解決,瀏覽器的請求與智能終端無直接的關系,所以此處答案為 A。第(3)題是對 URL 完善,代碼中,視圖函數 index與路由“/”綁定,因此要調用 index函數則需要訪問該路由,完整的 URL由協議+IP+端口+路由組成,必要時可以設置 GET的參數。本題中,服務器運行在指定的 IP和端口上,答案 http:// 192.168.1.108:5000/。第(4)題要求對信息系統增加拓展功能。既然是室內環境檢測,可以從溫濕度、空氣質量、光線強度等不同角度思考,如增加光線傳感器,發光二極管,當室內光線強度過低時開啟二極管等。第(5)①題考察 pandas中,DataFrame 對象的分組統計,groupby 函數對 DataFrame 對象的指定列進行分組,參數是列標題,從圖 b看,“小時”數據在橫坐標軸上,因此以列標題“小時”進行分組。第(5)②題考察數據篩選和刪除,若只處理小于 100的值,可以通過篩選的方式復制出符合條件的數據的副本(即 A選項),也可以刪除不符合條件的數據(即 D選項)。B選項篩選格式書寫錯誤,C選項升序后應該刪除尾部數據而不是獲取尾部數據。【解析二】本題將 Pandas數據處理,matplotlib 數據可視化與 Flask Web框架、智能硬件信息系統搭建結合考查。(1)智能終端通過 GET請求將傳感器采集的環境溫度發送到Web服務器,服務器則將數據傳輸狀態返回給智能終端,若數據傳輸錯誤,需要在智能終端顯示相關錯誤信息,以供設計者觀察并修正該錯誤,故智能終端與服務器之間的數據傳輸是雙向的(2)傳感器可將環境溫、濕度等模擬量轉化為數字量,帶有傳感器接口的智能終端則將這些數字量通過 IOT模塊傳輸給服務器,存儲入服務器的數據庫中,用戶通過瀏覽器訪問服務器中的網站,查詢數據庫中溫濕度數據,故此處選 A(3)從代碼中可知視圖函數 index()所在的路由為根路由(“/”),故訪問該視圖函數的 URL 為:http://192.168.1.108:5000/,地址末尾代表根路由的/可省略。(4)答案不唯一,可以從光、聲、氣、溫、濕等環境量著手答題,以下方案任選一種傳感器 執行器 實現功能光敏傳感器 電機 天亮拉開窗簾,天黑關閉窗簾氣敏傳感器 電機 有異味開窗,無異味關窗聲敏傳感器 LED燈 超過聲音閾值 LED燈亮,未超過燈滅技術(選考)試題 第 9 頁(共 14 頁)溫度傳感器 電機 開空調制冷關窗,關空調開窗透氣濕敏傳感器 電機 下雨關窗,天晴開窗(5)dft = pd.read_csv('data.csv')用于讀取文件 data.csv中的數據,此時 dft是包含 1列行索引和 3列數據(“時間”、“類型”、“監測值”)的二維 DataFrame 結構,dft.insert(0, '小時', ''),則是在原 dft數據最左側插入 1列標題為“小時”,內容為空的數據列,注意,原來“時間”列索引為 0,插入“小時”后,“時間”、“類型”、“監測值”3列依次向右移動 1列,插入后 dfh中就有 1列行索引和 4列數據列,for循環的作用是截取每行的“時間”列的小時數據并存入“小時”列中,從圖 b的橫坐標標簽“小時”可知,縱坐標表示各小時的最大濕度,故此處空格應該求以“小時”作為分組對象,并求每個小時中最大的濕度值存入 dfh中,plt.plot(dfh['小時'], dfh['監測值'])將取出分組后的 dfh中的“小時”和“監測值”兩列數據做成線形圖(5)若要刪除 DataFrame中的某行數據,通常做法是設置篩選條件留下符合條件的數據,如 A選項,dft =dft[dft['檢測值'] < 100];B選項的篩選格式書寫錯誤。C選項中先算出噪聲數據的行數 n,再對 dft進行升序排序,那么排完后所有的噪聲數據就在最后面,若把第 3行數據改成以下任意一種均正確dft=dft.head(len(dft)-n) dft=dft[:-n] dft=dft[:len(dft)-n+1]當然,此時你如果將 dft降序排序,又可以寫出很多答案D選項,則是采用枚舉算法,逐行遍歷,若監測值>=100,則將其刪除,注意此時 drop中 axis沒寫,默認是 0,表示刪除行15.某工程包含 n個任務(編號為 0-n-1),每天可以有多個任務同時進行。某些任務之間有依賴關系,如第 15題圖 a所示,任務 4依賴于任務 1,任務 1依賴于任務 2。即任務 2完成后才可以開始任務 1,任務 1完成后才可以開始任務 4。不存在一個任務依賴于多個任務,或多個任務依賴于同一個任務的情況。現已對該工程的依賴關系進行了梳理,結果如第 15題圖 b所示,標記“T”表示依賴關系需保留,標記“F”表示依賴關系需刪除。根據每個任務完成所需的天數和梳理后的依賴關系,編寫程序,首先刪除標記為“F”的依賴關系,然后計算工程最快完成所需的天數,并以工程最快完成所需的天數為期限,計算每個任務最晚必須開始的時間。第 15題圖 a 第 15題圖 b請回答下列問題:(1)若某工程有 6個任務,任務間依賴關系如第 15題圖 a所示,完成任務 0~5所需天數分別為 2,1,3,5,1,6,則工程最快完成需要 天。(2)定義如下 erase(lst)函數,參數 lst列表的每個元素表示一個依賴關系。函數的功能是刪除標記為“F”的依賴關系,返回保留的依賴關系的個數。def erase(lst):i=0j = len(lst)-1while i<= j:if lst[i][2]== 'T':i+=1else:if lst[j][2] == 'T':技術(選考)試題 第 10 頁(共 14 頁)lst[i]=lst[j]i + = 1j - = 1return i若 lst列表依次存儲第 15題圖 b所示的依賴關系,如 lst[0]為[0,5,'T'],調用 erase(Ist)的數,則語句“lst[i] =lst[j]”的執行次數為 。(3)實現上述功能的部分 Python程序如下,請在劃線處填入合適的代碼。def proc(n, lst,task):pr=[0]*nw=[0]* n # w[i]存放任務 1最晚必須開始的時間m=erase(lst)for i in ① :task[lst[i][1]][1] =lst[i][0]pr[lst[i][0]] =1c=[]days= 0 # days存放工程最快完成所需的天數for i in range(n):if pr[i]==0:k = is = 0while k!= -1:c.append(k)s += task[k][0]②if s > days:days=sfor i in range(n-1,-1,-1):k =c[i]if task[k][1] == -1:w[k] = days-task[k][0]+1else:③# 輸出 days,以及保存在 w中的每個任務最晚必須開始的時間,代碼略'''工程包含的任務數存入變量 n任務間的依賴關系存入 lst列表lst[0]包含 3項,任務 1st[i][0]依賴于任務 lst[i][1],lst[i][2]存放保留/刪除標記,任務數據存入 task列表task[i]包含 2項,task[i][0]為完成任務主所需天數,task[i][1]的初值為-1代碼略'''proc(n,lst,task)【答案】技術(選考)試題 第 11 頁(共 14 頁)(1)8 (1分)(2)1 (2分)(3) ①range(m) 或 range(0,m) 或 range(0,m,1) 或 range(m-1,-1,-1) 或 range(erase(lst))或 range(0,erase(lst)) 或 range(0,erase(lst),1) 或 range(erase(lst) -1,-1,-1) (2分)②k=task[k][1] 或其他等價答案 (2分)③w[k]=w[task[k][1]]-task[k][0] (2分)或 w[k]=w[c[i+1]]-task[k][0] 這里面可以把 k換成 c[i]【解析一】本題以多任務鏈為問題背景,考查數組的元素刪除、鏈表的遍歷、鏈表與索引數組的轉化等操作。《數據與數據結構課程標準》1.4小節提出:“通過案例分析,理解數組、鏈表等基本數據結構的概念,并能編程實現其相關操作。比較數組、鏈表的區別,明確上述兩種數據結構在存儲不同類型數據中的應用。”本題三個小題緊緊圍繞這一內容,層層遞進,步步設疑,銜接自然,全面、具體地考查了學生對數據與數據結構中的核心概念、核心素養的理解與應用能力。題意理解:(1)任務分解:n個任務,需要根據彼此的依賴關系,將其分解為多個任務鏈。以圖 a和圖 b以及第(1)小題提供的數據,可以分解為三個任務鏈:5→0;4→1→2;3。(2)計算工程最快完成所需的天數。由于“每天可以有多個任務同時進行”,三個任務鏈可以分別獨立、同時進行,最快完成工程所需的天數,取決于耗時最長的任務鏈。由于三個任務鏈:5→0;4→1→2;3,耗時分別為 8天、5天、5天,因此工程最快完成所需的天數為 8。(3)以工程最快完成所需的天數為期限,計算每個任務最晚必須開始的時間。工程最快完成所需的天數為8。例如對于任務鏈 5→0,任務 0完成需要 2天,則至少需要從倒數第 2天開始,即順數第 8-2+1=7 天開始,對于任務 5完成需要 6天,則至少需要從倒數第 2+6天開始,即順數第 8-(2+6)+1=(8-2+1)-6=7-6=1天開始。弄懂了以上數據處理方法,則本題三個小題的填空都迎刃而解。詳解如下:第(1)小題:考查題意的理解與應用,按上述分析,答案應為 8。第(2)小題:以刪除數組中其中標記為“F”的數據元素為背景,考查雙指針技巧。函數中設置了兩個指針 i,j,分別指向列表 lst的首、尾元素,先檢查 i所指元素中是否標記為“T”,若是則保留該元素不動,i后移一個位置(i = i + 1);否則 i所指元素應當刪除:①此時需檢查尾指針 j,所指元素標記若為“T”,則可以將尾元素覆蓋至首指針 i所指元素,然后 i后移一個位置(i = i + 1),②不管尾元素是否標記為“F”,j都向前移動一個位置(j = j-1)。執行函數結束時狀態如下圖所示:任務 A 任務 B 標記0 5 T1 2 Tj4 1 T1 2 T i2 3 F圖 c技術(選考)試題 第 12 頁(共 14 頁)模擬此過程,運行結束時 i為 3,j為 2。語句"lst[i] =lst[j]"只在 i=1,j=3時執行 1次,故“lst[i] =lst[j]”的執行次數為 1,erase(lst)函數返回值為 i,i變量正好代表了剩余的元素個數,即保留下來的標記為“T”的元素個數。故本空的答案為 1。第(3)小題:完成本題的關鍵是:把握輸入數據是哪些、各數據元素的含義是什么、劃分程序模塊弄清其功能。首先記好工程包含的任務數為變量 n;任務間的依賴關系儲存在 lst 列表,其中 lst[i]包含 3 項,任務 1st[i][0]依賴于任務 lst[i][1],lst[i][2]存放保留/刪除標記;任務數據存入 task 列表,task[i]包含 2項,task[i][0]為完成任務所需天數,task[i][1]的初值為-1。在函數 proc(n, lst, task)中,任務鏈的構造主要靠 task[i][1]來標記鏈表指針,任務鏈的表頭依靠標記數組 pr來進行,pr[i]為 0時表示此元素為任務鏈的頭節點,pr[i]為 1時表示此元素為中間節點或尾節點。程序模塊一即第一個 for循環任務是構造任務鏈。如圖 c所示,這一過程排除了孤立的任務,重點在于把彼此依賴關系的任務的鏈接關系構造起來。lst中已經刪除了標記為“F”的依賴關系,erase(lst)函數返回值為 i,正好代表了剩余的元素個數,所以①空應填寫 range(m)或等價表達式。程序模塊二即第二個 for循環任務是計算工程最快完成所需的天數。把所有任務鏈(包括孤立的任務)的完成時間都計算出來,取最大值。語句 if pr[i]==0是判斷是否任務鏈的頭節點,然后 while 循環開始計算各任務鏈的完成時間s,用s和 days中的較大值以更新 days。②空是鏈表遍歷的常規操作:k=task[k][1]。程序模塊三即第三個 for循環任務是計算每個任務最晚必須開始的時間。關鍵在理解模塊二中c數組的作用。按所有任務鏈(包括孤立的任務)的頭節點索引大小順序,保存各個任務鏈。模擬過程,可知 c數組中的數據依次為 2、1、4,3,5,0,可見 c數組是一個索引數組,且尾元素一定為任務鏈的尾節點。出于計算效率的考慮,可以從 c數組的末尾開始處理更方便。依照上述題意理解(3)的分析,task[k][1] ==-1 表示任務 k 一定是任務鏈的尾節點,它至少應該從倒數第 task[k][0]天開始,或者順數第days-task[k][0]+1 開始;否則 task[k][1] != -1,即任務 k 一定不是尾節點。由于 c 數組的特點,任務 k 所在任務鏈的后一個任務已經計算完成,所以第③空答案應為 w[k]=w[c[i+1]]-task[k][0]或等價表達式。【解析二】(1)分析題目,根據 6個任務之間的依賴關系將所有任務分為三組分別是【5,0】、【4,1,2】、【3】,根據題意三組任務可以同時進行,分別計算三組任務完成的時長,取最大值即為工程最快完成時間。已知第一組的兩個任務需要 8天、第二組的三個任務需要 5天、第三組一個任務需要 5天。(2)erase(lst)函數用于刪除 lst列表中標記為刪除的任務。該函數遍歷 lst列表,通過兩個指針 i和 j,分別指向列表的頭部和尾部。當 lst[i][2]為'T'時,表示該任務需要保留,指針 i向后移動一位。當 lst[i][2]不為'T'時,表示該任務需要刪除,將 lst[i]替換為 lst[j],然后指針 i向后移動一位,指針 j向前移動一位。最后返回指針 i的值,即刪除后的列表長度。語句"lst[i] =lst[j]"只在 i=1,j=3 時執行 1次。(3)自定義函數 proc(n, lst, task),用于處理任務調度。首先,創建了兩個長度為 n的列表 pr和 w,用于存放任務的狀態和最晚開始時間。然后調用 erase(lst)函數,將刪除后的列表長度存入變量 m中。for i in ① :task[lst[i][1]][1] =lst[i][0]pr[lst[i][0]] =1上述代碼段通過遍歷刪除后的列表(第①空的答案為 range(m)),更新任務的狀態和最晚開始時間。對于每個刪除后的任務 lst[i],將 lst[i][0]作為任務的編號,將 lst[i][1]作為任務的前置任務編號,將 lst[i][0]作為任務的主任務編號。并將 pr[lst[i][0]]設置為 1,表示該任務有前置任務。空列表 c,用于存放可以進行的任務序列。變量 days用于存放工程最快完成所需的天數。接下來,遍歷任務列表,對于每個任務編號 i,如果該任務的前置任務編號為 0,則將其作為起始任務,進行任務序列完成時間的計算。在計算過程中,將當前任務編號 k添加到列表 c中,累加任務的完成時間 s,并將當前任技術(選考)試題 第 13 頁(共 14 頁)務的主任務編號 task[k][1]作為下一個任務的前置任務編號 k,所以第②空的答案為 k=task[k][1]。最后,如果累加完成時間 s大于 days,則更新 days的值。接下來,通過倒序遍歷任務列表,計算每個任務的最晚開始時間。對于每個任務編號 k,如果該任務沒有后續任務(即 task[k][1]為-1),則將最晚開始時間 w[k]設置為 days-task[k][0]+1,表示該任務必須在工程最快完成時間內開始。否則,將最晚開始時間 w[k]設置為其后續任務的最晚開始時間減去當前任務完成時間,表示該任務必須在其后續任務完成前開始。所以第③空的答案為 w[k] = w[task[k][1]]-task[k][0]。技術(選考)試題 第 14 頁(共 14 頁) 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫