中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2023年6月浙江省普通高校招生選考科目考試 信息技術 真題(PDF版,含解析)

資源下載
  1. 二一教育資源

2023年6月浙江省普通高校招生選考科目考試 信息技術 真題(PDF版,含解析)

資源簡介

絕密★考試結束前
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.ECFDAB
C.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,d
C.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 a
else:
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,5
while head < tail:
if head % 3 == 0:
print(q[head])
else:
q[tail] = q[head]
tail += 1
head += 1
A.t B.n C.i D.r
【答案】D
【解析】
本題考查單向順序隊列的基本操作(數組實現)。根據隊列基本操作可知程序段的功能是:當隊列 q 非空
時(空隊列為 head == tail),根據頭指針的索引位置(head % 3 == 0),分別執行“出隊”操作或者“出隊
并入隊”操作,再結合題意,本題求解的是最后一個出隊元素。用表格法模擬該隊列頭、尾指針和“出隊”
操作的變化,如下表:
head tail 隊列 q 出隊字符
0 5 p,r,i,n,t p
3 7 n,t,r,i n
6 9 i,t,r i
9 11 t,r t
12 13 r r
綜上所述,故選 D。
12.已排序的列表 a有 n個整型元素,現要查找出現次數最多的值并輸出。若出現次數最多的值有多個,則
輸出最前面的一個。實現該功能的程序段如下,方框中應填入的正確代碼為
c,m,v =1,1,0
for 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+=1
if c>m: if c>m: else: else:
m=c m=c if c>m: if c>m:
v=i v=i m=c m=c
else: else: v=i-1 v=i-1
c=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 = n
lst = [0]*n # 貨位狀態,0表示對應的貨位為空
while True: 第 13題圖
# 讀取本次已操作的數據:箱子類型、操作類型、貨位編號起始值,存入 t、d和 s,代碼略
if t = = 'A':
w = 2
① :
w=1
else: # t不是'A'或'B'時退出循環
break
if d = = 'P': # d為 P時表示放置,否則表示搬離

else:
cnt1 + = w
lst[s]=1-lst[s]
if t = = 'A':
lst[s+1] = 1-lst[s+1]
技術(選考)試題 第 6 頁(共 14 頁)
i, cnt2 = 0,0
while i < n-1:
if lst[i] = = 0 and lst[i+1] = = 0:

cnt2 + = 1
i + = 1
print("當前空貨位數: ' ,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+=1
i+=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題圖 b
import pandas as pd
import matplotlib.pyplot as plt
dft = 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[ '監測值'] < 100
C.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=0
j = len(lst)-1
while i<= j:
if lst[i][2]== 'T':
i+=1
else:
if lst[j][2] == 'T':
技術(選考)試題 第 10 頁(共 14 頁)
lst[i]=lst[j]
i + = 1
j - = 1
return i
若 lst列表依次存儲第 15題圖 b所示的依賴關系,如 lst[0]為[0,5,'T'],調用 erase(Ist)的數,則語句
“lst[i] =lst[j]”的執行次數為 。
(3)實現上述功能的部分 Python程序如下,請在劃線處填入合適的代碼。
def proc(n, lst,task):
pr=[0]*n
w=[0]* n # w[i]存放任務 1最晚必須開始的時間
m=erase(lst)
for i in ① :
task[lst[i][1]][1] =lst[i][0]
pr[lst[i][0]] =1
c=[]
days= 0 # days存放工程最快完成所需的天數
for i in range(n):
if pr[i]==0:
k = i
s = 0
while k!= -1:
c.append(k)
s += task[k][0]

if s > days:
days=s
for i in range(n-1,-1,-1):
k =c[i]
if task[k][1] == -1:
w[k] = days-task[k][0]+1
else:

# 輸出 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 T
1 2 T
j
4 1 T
1 2 T i
2 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 頁)

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 苍溪县| 西藏| 绥中县| 洛浦县| 安图县| 水城县| 新野县| 南华县| 桃江县| 瓮安县| 汉中市| 新化县| 大安市| 桐柏县| 衡阳县| 新营市| 若羌县| 兴和县| 海安县| 沈阳市| 双辽市| 民权县| 宁国市| 饶河县| 恭城| 北海市| 巴楚县| 临安市| 宜昌市| 临潭县| 渝中区| 邵阳县| 弥勒县| 镇原县| 诸暨市| 嘉义县| 兴山县| 澎湖县| 乐陵市| 马公市| 石城县|