資源簡介 絕密★考試結(jié)束前2025年 1月浙江省普通高校招生選考科目考試技 術(shù)姓名: 準(zhǔn)考證號(hào):考生須知:1.答題前,請(qǐng)務(wù)必將自己的姓名、準(zhǔn)考證號(hào)用黑色字跡的簽字筆或鋼筆分別填寫在試題卷和答題紙規(guī)定的位置上。2.答題時(shí),請(qǐng)按照答題紙上“注意事項(xiàng)”的要求,在答題紙相應(yīng)的位置上規(guī)范作答,在本試題卷上的作答一律無效。3.非選擇題的答案必須使用黑色字跡的簽字筆或鋼筆寫在答題紙上相應(yīng)區(qū)域內(nèi),作圖時(shí)可先使用 2B鉛筆,確定后必須用黑色字跡的簽字筆或鋼筆描黑。第一部分 信息技術(shù)完美解析(共 50 分)一、選擇題(本大題共 12 小題,每小題 2 分,共 24 分。每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,不選、多選、錯(cuò)選均不得分)閱讀下列材料,回答第 1 至 2 題:某市舉行科普現(xiàn)場(chǎng)宣傳活動(dòng),包括科學(xué)實(shí)驗(yàn)秀、科技故事分享等內(nèi)容。該活動(dòng)還通過視頻直播、網(wǎng)站、報(bào)紙等媒介進(jìn)行傳播。市民可參加線下活動(dòng),也可注冊(cè)后參加線上活動(dòng)。1.下列關(guān)于該活動(dòng)中數(shù)據(jù)和信息的說法,正確的是A.同一活動(dòng)內(nèi)容的數(shù)據(jù)在不同的媒介上表現(xiàn)形式相同B.活動(dòng)內(nèi)容中圖像和文本的數(shù)字化方法是完全一致的C.活動(dòng)內(nèi)容通過多種媒介傳播有助于信息的共享D.同一活動(dòng)信息的價(jià)值不會(huì)隨著時(shí)間的推移而變化【答案】C【解析一】本題考查數(shù)據(jù)和信息的相關(guān)知識(shí)。A. 錯(cuò)誤,該活動(dòng)直播時(shí)以視頻的方式表現(xiàn),在網(wǎng)站上可以以視頻、圖像、文字等方式表現(xiàn),在報(bào)紙上以文字、圖像等方式表現(xiàn),可見在不同媒介上表現(xiàn)形式不一定相同;B. 錯(cuò)誤,活動(dòng)內(nèi)容中的圖像數(shù)字化,需要經(jīng)過采樣、量化、編碼的環(huán)節(jié),文本的數(shù)字化,遵循 ASCII或 GB2312或 unicode的編碼規(guī)則;C. 正確,信息的共享需要多種媒介的傳播;D. 錯(cuò)誤,信息反映的是事物某一特定時(shí)間內(nèi)的狀態(tài),它會(huì)隨著時(shí)間的推移而變化。【解析二】本題考查數(shù)據(jù)、信息的相關(guān)知識(shí)。A.錯(cuò)誤,例如數(shù)據(jù)在視頻直播中的表現(xiàn)形式為視頻;在網(wǎng)站中表現(xiàn)形式可能為視頻、圖像、文字等;在報(bào)紙的表現(xiàn)形式為文字、圖片等;B.錯(cuò)誤,活動(dòng)中的圖像的數(shù)字化是將模擬圖像轉(zhuǎn)換為數(shù)字圖像;文本的數(shù)字化方法是將紙質(zhì)文檔或手寫轉(zhuǎn)換為計(jì)算機(jī)可識(shí)別的字符格式。C.正確。D.錯(cuò)誤,信息具有時(shí)效性,隨著時(shí)間的推移,信息的價(jià)值會(huì)發(fā)生變化。技術(shù)(選考)試題 第 1 頁(共 15 頁)2.關(guān)于信息安全與信息社會(huì)責(zé)任,下列行為合適的是A.視頻直播時(shí)接受社會(huì)監(jiān)督 B.觀眾將科學(xué)實(shí)驗(yàn)秀制作成視頻銷售C.使用他人信息注冊(cè)參加線上活動(dòng) D.將注冊(cè)信息發(fā)到活動(dòng)用戶群里【答案】A【解析一】本題考查信息安全和信息社會(huì)責(zé)任的相關(guān)知識(shí)。A. 正確,直播行為必須接受社會(huì)的監(jiān)督;B. 錯(cuò)誤,觀眾不擁有這些科學(xué)實(shí)驗(yàn)的版權(quán),不能隨意制成視頻盈利;C. 錯(cuò)誤,侵犯了他人的個(gè)人信息安全;D. 錯(cuò)誤,侵犯了注冊(cè)用戶的個(gè)人隱私。【解析二】本題考查信息安全與信息社會(huì)責(zé)任的相關(guān)知識(shí)。選項(xiàng) B、C、D中,泄露了他人的個(gè)人信息,違反了使用信息傳播時(shí)的行為規(guī)范。閱讀下列材料,回答第 3至 6題:某連鎖餐廳的智能監(jiān)管系統(tǒng)實(shí)現(xiàn)從食材驗(yàn)收區(qū)到加工區(qū)全程監(jiān)管。在食材驗(yàn)收區(qū),智能驗(yàn)收秤采集并保存食材的品種、重量等數(shù)據(jù),同時(shí)將數(shù)據(jù)發(fā)送到服務(wù)器;在食材加工區(qū),AI抓拍設(shè)備自動(dòng)識(shí)別員工的違規(guī)行為,并通過音箱發(fā)出語音提示,如“請(qǐng)穿工作服”,同時(shí)將抓拍數(shù)據(jù)發(fā)送到服務(wù)器。管理員可通過安裝有監(jiān)管系統(tǒng) APP的移動(dòng)終端查看各連鎖餐廳的數(shù)據(jù)。3.下列關(guān)于該信息系統(tǒng)功能的說法,不.正.確.的是A.系統(tǒng)的數(shù)據(jù)收集和輸入功能由智能驗(yàn)收秤實(shí)現(xiàn)B.語音提示功能可采用語音合成技術(shù)實(shí)現(xiàn)C.監(jiān)管系統(tǒng) APP 可與服務(wù)器進(jìn)行雙向數(shù)據(jù)傳輸D.識(shí)別員工違規(guī)行為的功能屬于人工智能技術(shù)的應(yīng)用【答案】A【解析一】本題考查信息系統(tǒng)功能和人工智能的相關(guān)知識(shí)。A. 錯(cuò)誤,系統(tǒng)的數(shù)據(jù)收集和輸入由智能驗(yàn)收秤、AI抓拍設(shè)備等實(shí)現(xiàn);B. 正確,實(shí)現(xiàn)語音提示功能的關(guān)鍵技術(shù)之一就是語音合成技術(shù);C. 正確,監(jiān)管系統(tǒng) APP將數(shù)據(jù)發(fā)送給服務(wù)器,服務(wù)器將各連鎖餐廳數(shù)據(jù)發(fā)送給 APP,體現(xiàn)了數(shù)據(jù)的雙向傳遞;D. 正確,要識(shí)別員工的違規(guī)行為是人工智能技術(shù)的應(yīng)用。【解析二】本題考查信息系統(tǒng)功能、人工智能相關(guān)的知識(shí)。選項(xiàng) A不正確,系統(tǒng)的數(shù)據(jù)收集和輸入功能不僅由智能驗(yàn)收秤實(shí)現(xiàn),在食材驗(yàn)收區(qū),智能驗(yàn)收秤實(shí)現(xiàn)數(shù)據(jù)的收集和輸入功能,但在食材加工區(qū),AI抓拍設(shè)備實(shí)現(xiàn)的數(shù)據(jù)的收集和輸入。4.某地區(qū)有 100家連鎖餐廳,每家餐廳安裝有 5臺(tái) AI抓拍設(shè)備。若使用二進(jìn)制對(duì)這些設(shè)備進(jìn)行編碼,二進(jìn)制的前幾位表示餐廳號(hào),其余位表示設(shè)備號(hào),則所需的二進(jìn)制位數(shù)最少是A.10 B.9 C.8 D.7【答案】A【解析一】技術(shù)(選考)試題 第 2 頁(共 15 頁)本題考查編碼知識(shí)的應(yīng)用的相關(guān)知識(shí)。100家連鎖餐廳用二進(jìn)制編碼需要 7個(gè)位,27>100,每家餐廳需要安裝 5個(gè) AI抓拍設(shè)備,則需要 3個(gè)二進(jìn)制位對(duì)每家抓拍設(shè)備進(jìn)行編碼,共至少需要 7+3個(gè)位,故選 A。【解析二】本題考查的進(jìn)制編碼的相關(guān)知識(shí)。題干中“二進(jìn)制碼的前幾位表示餐廳號(hào),其余位表示設(shè)備號(hào)”的內(nèi)容,說明餐廳號(hào)的編碼與設(shè)備號(hào)的編碼是分開的,100家連鎖餐廳的餐廳號(hào)需 7 位二進(jìn)制進(jìn)行編碼(26<100<27);5臺(tái) AI抓拍設(shè)備的設(shè)備號(hào)需 3位二進(jìn)制編碼(22<5<23)。因此所需的二進(jìn)制位數(shù)最少是 10位,故而答案選 A。5.下列關(guān)于該信息系統(tǒng)中硬件的說法,正確的是A.系統(tǒng)的硬件不包括管理員使用的移動(dòng)終端B.系統(tǒng)中的傳感器都用于獲取圖像數(shù)據(jù)C.智能驗(yàn)收秤的組成部件一定有存儲(chǔ)器D.AI抓拍設(shè)備和服務(wù)器一定通過有線方式直接相連【答案】C【解析一】本題考查信息系統(tǒng)中硬件的相關(guān)知識(shí)。A. 錯(cuò)誤,信息系統(tǒng)的硬件包括計(jì)算機(jī)硬件、移動(dòng)終端硬件和通信網(wǎng)絡(luò)設(shè)備,因此管理員使用的移動(dòng)終端也屬于信息系統(tǒng)的硬件;B. 錯(cuò)誤,智能驗(yàn)收秤采集的食材的重量數(shù)據(jù)不屬于圖像數(shù)據(jù);C. 正確;智能驗(yàn)收秤屬于移動(dòng)終端,它的硬件組成包括存儲(chǔ)器;D. 錯(cuò)誤,AI抓拍設(shè)備和服務(wù)器可以通過有線、無線、藍(lán)牙等方式連接。【解析二】本題考查信息系統(tǒng)中硬件的相關(guān)知識(shí)。A.錯(cuò)誤,系統(tǒng)的硬件包括管理員使用的移動(dòng)終端。B.錯(cuò)誤,智能驗(yàn)收秤中的傳感器可獲取物品的重量數(shù)據(jù),不是僅用于獲取圖像數(shù)據(jù)。C.正確,智能驗(yàn)收秤能采集并保存食材的品種、重量等數(shù)據(jù),故而其組成部件一定有存儲(chǔ)器。D.錯(cuò)誤,AI抓拍設(shè)備和服務(wù)器之間可能還有無線路由器,無線路由器與 AI抓拍設(shè)備可通過無線進(jìn)行連接。6.下列關(guān)于該信息系統(tǒng)中軟件的說法不.正.確.的是A.監(jiān)管系統(tǒng) APP屬于應(yīng)用軟件B.軟件要隨著系統(tǒng)需求的變化而不斷完善C.AI抓拍設(shè)備需要在軟件的支持下工作D.系統(tǒng)中,服務(wù)器和移動(dòng)終端需要使用相同的操作系統(tǒng)【答案】D【解析一】本題考查信息系統(tǒng)相關(guān)知識(shí)。服務(wù)器和移動(dòng)終端不需要使用相同的操作系統(tǒng),D錯(cuò)誤。【解析二】本題考查信息系統(tǒng)的組成部分中“軟件”的概念與作用。D選項(xiàng)服務(wù)器與移動(dòng)終端屬于不同的終端,雖然都是操作系統(tǒng),但是對(duì)于不同類型的終端需要使用專門的操作系統(tǒng)。技術(shù)(選考)試題 第 3 頁(共 15 頁)7.某校組織學(xué)生進(jìn)行陽光月跑活動(dòng),30天內(nèi)總里程滿 50km達(dá)標(biāo)。每天組織一次跑步,平均速度(S)達(dá)到 6km/h 時(shí)方可計(jì)入總里程(T),每天的跑步里程(K)若超過 4km 按 4km計(jì)入,否則按實(shí)計(jì)入。判斷某學(xué)生是否達(dá)標(biāo)的部分流程圖如第 7題圖所示,表達(dá)式為①T←T+K ②T≥50 ③i≤n ④K←4則(1)~(4)處表達(dá)式序 B.③④①②C.②①④③ D.②④①③【答案】B【解析一】本題考查流程圖及程序的綜合分析能力。依題意:“每天的跑步里程(K)若超過 4km 按 4km 計(jì)入,否則按實(shí)進(jìn)入”,可知(2)處填 k=4,選④,(3)處累加里程,填 T←T+K,選①,答案在 B和 D中選擇。當(dāng) T≥50時(shí)應(yīng)輸出“達(dá)標(biāo)”而不是進(jìn)入循環(huán),故(1)第 7題圖處循環(huán)條件為:i≤n,(4)處填 T≥50 ,選 B。【解析二】本次考查流程圖的算法描述。先考慮(2)和(3):變量 K表示當(dāng)天跑步的里程,K≤4為 False 即 K>4,此時(shí)采取“超過 4km按 4km 計(jì)入”,因此(2)處的答案為④K 4。同時(shí),變量 T 存儲(chǔ)累計(jì)里程,無論 K是否更新,T都需要累加當(dāng)天里程,因此(3)處答案為①T T+K;然后考慮(4):(4)處“Y”分支時(shí)直接輸出“達(dá)標(biāo)”,根據(jù)題干對(duì)于“達(dá)標(biāo)”的描述是“總里程滿 50km”,因此(4)處的答案為②T≥50 。最后(1)處的答案僅剩③,即答案為 B。8.有后綴表達(dá)式“1 3 + 2 * 3 +2 *”,現(xiàn)利用棧計(jì)算該表達(dá)式:從左向右掃描,遇到數(shù)字時(shí),數(shù)字入棧;遇到運(yùn)算符時(shí),兩個(gè)元素出棧,用運(yùn)算符計(jì)算,所得結(jié)果入棧,如此反復(fù)操作,直到掃描結(jié)束,棧頂元素是A.21 B.22 C.23 D.24【答案】B【解析一】本題考查棧的相關(guān)操作。依題意可得表達(dá)式為:((1+3)*2+3)*2=22,選 B。【解析二】本題考查后綴表達(dá)式。將后綴表達(dá)式“1 3 + 2 * 3 + 2 *”轉(zhuǎn)換為中綴表達(dá)式后為“((1+3)*2+3)*2”,計(jì)算結(jié)果為22,即答案 B。9.某二叉樹如第 9題圖所示,若其中的一個(gè)葉子節(jié)點(diǎn)增加右子樹(僅包含節(jié)點(diǎn) N),則新二叉樹的中序遍歷結(jié)果不.可.能.是A.CNBDAE B.CBDNAEC.CBDAEN D.NCBDAE第 9題圖【答案】D【解析一】本題考查二叉樹相關(guān)知識(shí)。中序遍歷是左-根-右,若某個(gè)葉子節(jié)點(diǎn)僅添加右子樹,則 N在 C左側(cè)不可能,選 D。技術(shù)(選考)試題 第 4 頁(共 15 頁)【解析二】本題考查二叉樹的中序遍歷。根據(jù)題意,給葉節(jié)點(diǎn)增加右子樹節(jié)點(diǎn)“N”,本題中共有 3個(gè)葉節(jié)點(diǎn),因此可能有 3種答案,當(dāng)節(jié)點(diǎn)“C”增加右子樹后,中序遍歷為“CNBDAE”,即選項(xiàng) A;給節(jié)點(diǎn)“D”增加右子樹后,中序遍歷為“CBDNAE”,即選項(xiàng)B;當(dāng)節(jié)點(diǎn)“E”增加右子樹后,中序遍歷為“CBDAEN”,即選項(xiàng) C;因此答案為 D。10.數(shù)組元素 a[0]~a[n-1]已按升序排列,現(xiàn)要將 a[pos](0≤pos≤n-1)的值加 1,并保持?jǐn)?shù)組的有序性不變,實(shí)現(xiàn)該功能的程序段如下,方框中應(yīng)填入的正確代碼為t = a[pos]+1I = poswhile :a[i] = a[i+1]i += 1a[i] = tA.i < n-1 B.i < n-1 and t > a[i+1]C.i < n-1 and a[i] > a[i+1] D.i <= n-1 or t > a[i]【答案】B【解析一】本題考查數(shù)組的插入排序知識(shí)。根據(jù)代碼可知,由于代碼中出現(xiàn)了 a[i+1] 的表達(dá)式,因此循環(huán)變量 i的取值范圍不能等于 n-1,否則會(huì)產(chǎn)生下標(biāo)越界的錯(cuò)誤,因此排除選項(xiàng) D。另外還需要保持?jǐn)?shù)據(jù)的升序,因此還需要附加其他條件,故可排除選項(xiàng) A。根據(jù)代碼可知,待排序的數(shù)事先已經(jīng)被暫時(shí)存放到變量 t中,因此移動(dòng)數(shù)組元素?cái)?shù)據(jù)時(shí)需要比較的是t和其后面的元素 a[i+1],只有當(dāng) t>a[i+1]時(shí),才需要改變?cè)刂g的前后順序,因此可以排除選項(xiàng) C。綜上,本題選項(xiàng) B符合題意。【解析二】本題考查順序查找和插入排序。代碼先將 a[pos] + 1的值存入變量 t,即要將 t插入到正確的位置以確保數(shù)組仍然有序。因原數(shù)組元素已升序排列,所以從 pos位置開始向后順序查找正確位置,并在查找的同時(shí)進(jìn)行數(shù)組元素的前移操作,以便空出 t應(yīng)該在的位置。整個(gè) while循環(huán)即使實(shí)現(xiàn)上述功能,循環(huán)條件應(yīng)為:確保語句 a[i] = a[i + 1]不能超出數(shù)組范圍(即 i+1<=n-1 或 ia[i + 1]),故選 B。11.對(duì)于任意非空字符串 s,甲、乙程序段輸出結(jié)果相同,則乙程序段加框處的正確代碼為def f(s,t): r = ""if t >= len(s)-2: n = len(s)return s[t] for i in range(0,n,2):return f(s,t+2) + s[t]print(f(s,0)) print(r)甲程序段 乙程序段A.r = s[n-i]+r B.r = r+s[n-i-1]C.r = r+s[i] D.r = s[i]+r【答案】D【解析一】技術(shù)(選考)試題 第 5 頁(共 15 頁)本題考查遞歸函數(shù)和字符串處理知識(shí)。根據(jù)甲程序段代碼可知,該程序段是典型的利用自定義函數(shù)實(shí)現(xiàn)的遞歸算法,假設(shè)非空 s="ABCDEF",其調(diào)用過程如下:f(s,0)→f(s,2)+s[0]→f(s,4)+s[2]+s[0]→s[4]+s[2]+s[0]→"ECA",其本質(zhì)是將 s中的偶數(shù)位置的字符取出,然后逆序連接輸出。觀察乙程序段和選項(xiàng),能實(shí)現(xiàn)上述同樣功能的只有選項(xiàng) D。【解析二】本題考查遞歸和遞推。甲程序段是一個(gè)遞歸函數(shù),其邏輯是:如果 t >= len(s) - 2,返回字符串 s 的第 t 個(gè)字符,否則遞歸調(diào)用 f(s, t + 2),并將結(jié)果與 s[t] 拼接。因此函數(shù) f(s, 0) 的作用是從字符串 s 的第 0 個(gè)字符開始,每隔一個(gè)取一個(gè)字符(偶數(shù)索引),并將這些字符逆序拼接成結(jié)果字符串。乙程序段則是采用循環(huán)遞推的方式,索引從 0 開始遍歷字符串,且每次步進(jìn) 2(跳過一個(gè)字符),再拼接成結(jié)果字符串。因索引必須是偶數(shù)且逆序拼接結(jié)果字符串,而 n奇偶性不確定,故選 D。12.列表 c長度為 100,如第 12題圖所示,其中 c[10]~c[89]各元素的值均為 10以內(nèi)的隨機(jī)正整數(shù)。執(zhí)行如下程序段,輸出的最后一行是i 0 1 2 3 4 5 6 7 8 9 …… 90 91 92 93 94 95 96 97 98 99c[i] 1 1 1 1 2 3 2 3 2 3 …… 2 3 2 2 2 2 1 1 1 1第 12題圖qa = [0,0,0,0,0]qb = [0,0,0,0,0]h,t = 0,4temp = 0for k in range(100):qa[t] = c[k]qb[t] = temp+qa[t]-qa[h]print(qb[h], qb[t])temp = qb[t]t = (t+1) % 5h = (h+1) % 5A.5 4 B.8 4 C.9 5 D.9 9【答案】B【解析一】本題考查循環(huán)隊(duì)列知識(shí)。根據(jù)代碼可知,qa和 qb分別是兩個(gè)各有 5個(gè)元素的數(shù)組(初始元素均為 0)。由代碼“t=(t+1)%5”和“h=(h+1)%5”可知,h和 t分別是循環(huán)隊(duì)列的頭尾指針。代碼“qa[t]=c[k]”的作用是將數(shù)組 c中的元素按順序依次從循環(huán)隊(duì)列 qa 的尾部 t入隊(duì)。此題最為關(guān)鍵的是:循環(huán)隊(duì)列 qb中的元素依次記錄 qa中元素的累加,即進(jìn)入隊(duì)列 qa中的元素值減去從隊(duì)頭 h出隊(duì)的元素值。由于循環(huán)隊(duì)列中實(shí)際的元素只有 4個(gè),根據(jù)之前的分析前面的依次入隊(duì)又出隊(duì),且 qb中元素又涉及 qa 中元素的累加,由于同時(shí)有 2個(gè)循環(huán)隊(duì)列 qa和 qb,因此我們只需考查列表 c中的最后 8個(gè)元素即可,即“2,2,2,2,1,1,1,1”,經(jīng)過模擬可知最終的結(jié)果 qa=[1,1,2,1,1],qb=[5,4,8,7,6],此時(shí)的 h=2,t=1,因此輸出的最后一行是 qb[h]=8,qb[t]=4,故選項(xiàng) B正確。【解析二】本題考查循環(huán)列表和算法綜合。此題難點(diǎn)之一在于數(shù)據(jù)量大且具有不確定性,靠純模擬感覺有點(diǎn)無從下手。逐行分析,基本能理解每行代碼的單獨(dú)作用,但代碼整體算法和邏輯不容易理解。其實(shí)列表 qa、qb元素個(gè)數(shù)確定(5 個(gè)),且其索引 h、t是在 0 到 4之間循環(huán)(構(gòu)成環(huán)),所以 qa 和 qb 只會(huì)存儲(chǔ)最近 5 個(gè)處理過的值。再結(jié)合題干描述大部分值是隨機(jī)整數(shù)且四個(gè)選項(xiàng)均是固定值,可以確定前面大部分的數(shù)據(jù)處理并技術(shù)(選考)試題 第 6 頁(共 15 頁)不會(huì)影響到最后的輸出結(jié)果。故而可以僅從 k=90開始模擬,此時(shí) h、t值剛好為 0、4,假設(shè) qa中元素的值為任意,模擬下來即可得到正確選項(xiàng) B。其實(shí)代碼中 qb[t] = temp + qa[t] - qa[h],即加上后一項(xiàng)的值并減去第一項(xiàng)的值,而 qa[t] = c[k],所以 qb列表存儲(chǔ)的是 c列表中連續(xù)四項(xiàng)元素值的和,對(duì)應(yīng)關(guān)系由 t或 h決定。例如 k=98時(shí),h和 t分別為 3和 2(h為頭 t是尾),則 qb[t]=5(即 c[95]~c[98]之和),qb[h]=9(即 c[91]~c[94]之和)。這段代碼實(shí)現(xiàn)了一個(gè)滑動(dòng)窗口的累加計(jì)算,每次循環(huán)更新窗口內(nèi)的一個(gè)元素,并計(jì)算新的累加值,打印的結(jié)果展示了窗口內(nèi)累加值的變化情況。假設(shè)中間隨機(jī)數(shù)全是 1或 5,給出最后十次循環(huán)各個(gè)變量的值,幫助大家理解。二、非選擇題(本大題共 3小題,其中第 13小題 7分,第 14小題 10分,第 15小題 9分,共 26分)13.根據(jù)機(jī)器的負(fù)載率對(duì)工廠的 6臺(tái)機(jī)器(編號(hào) 0~5)進(jìn)行監(jiān)控和調(diào)度。調(diào)度規(guī)則是:每隔 1小時(shí)采集 1次各臺(tái)機(jī)器的負(fù)載率(負(fù)載率用百分制表示,例如,負(fù)載率 95%表示為 95,機(jī)器休息時(shí)的負(fù)載率為 0),負(fù)載率超過 90的機(jī)器都調(diào)度休息;如果所有機(jī)器負(fù)載率都不超過 90,則負(fù)載率最高的機(jī)器休息,若多臺(tái)機(jī)器負(fù)載率同為最高,則編號(hào)最小的機(jī)器休息。休息的機(jī)器在休息 1小時(shí)后再次工作。請(qǐng)回答下列問題:(1)若某次采集到 0~5號(hào)機(jī)器的負(fù)載率依次為 75、85、88、0、88、87,當(dāng)前處于休息狀態(tài)的機(jī)器編號(hào)是 3,接下來休息的機(jī)器編號(hào)是 ▲ 。(2)實(shí)現(xiàn)上述功能的部分 Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。n = 6a = [0] * n #列表 a長度為 n,各元素值均為 0#啟動(dòng) 0~4號(hào)機(jī)器工作,5號(hào)機(jī)器休息,代碼略While True:#延時(shí) 1小時(shí),再采集各機(jī)器負(fù)載率存入 a,a[i]存放 i號(hào)機(jī)器的負(fù)載率,代碼略t = 0cnt=0for i in range(n):if ① :#調(diào)度 i號(hào)機(jī)器休息,代碼略cnt += 1if a[i] > a[t]:②elif a[i] == 0:#調(diào)度 i號(hào)機(jī)器工作,代碼略if ③ :#調(diào)度 t號(hào)機(jī)器休息,代碼略技術(shù)(選考)試題 第 7 頁(共 15 頁)【答案】(1)2 (1分)(2)①a[i] > 90 (2分)②t = i (2分)③cnt == 0 或 a[t]<90 (2分)【解析一】本題涉及以下相關(guān)知識(shí)點(diǎn):1.條件判斷與邏輯處理;2.循環(huán)與遍歷;3.變量與狀態(tài)管理;4.模擬與算法設(shè)計(jì)。本題主要考查學(xué)生的邏輯思維能力、編程基礎(chǔ)、問題分析與解決能力以及代碼閱讀與填空能力。學(xué)生需要理解題目描述的調(diào)度規(guī)則,并將其轉(zhuǎn)化為程序邏輯,同時(shí)能夠處理多種情況和邊界條件。題目還要求學(xué)生具備一定的代碼閱讀能力,能夠根據(jù)上下文推斷出缺失的代碼。(1)機(jī)器負(fù)載均不超過 90,負(fù)載最大的是 2號(hào)、4號(hào),都是 88。按題目要求此時(shí)編號(hào)小的機(jī)器休息,編號(hào)為 2的機(jī)器休息。(2)① 按要求,負(fù)載率只要超過 90的機(jī)器都調(diào)度休息,所以這里的條件:a[i] > 90;②根據(jù)后面的代碼,這里是查找負(fù)載最大的機(jī)器,將編號(hào)保存在變量 t中:t = i;③ 變量 cnt用于統(tǒng)計(jì)當(dāng)前有多少臺(tái)機(jī)器的負(fù)載率超過了 90,只有當(dāng) cnt為 0時(shí),編號(hào)為 t號(hào)的機(jī)器休息。所以這里的條件是:cnt == 0【解析二】本題考查 Python的相關(guān)知識(shí)。(1)0-5號(hào)機(jī)器的負(fù)載率為“75、85、88、0、88、87”,休息狀態(tài)的機(jī)器編號(hào)是 3。根據(jù)題意“如果所有機(jī)器負(fù)載率都不超過 90,則負(fù)載率最高的機(jī)器休息”,當(dāng)前負(fù)載率最高的機(jī)器是 88,分別是 2 號(hào)和 4 號(hào)機(jī)器,再根據(jù)題意“若多臺(tái)機(jī)器負(fù)載率同為最高,則編號(hào)最小的機(jī)器休息”可知,接下來休息的機(jī)器是 2號(hào)機(jī)器,故答案是:2。(2)第 1小空,根據(jù)注釋語句“調(diào)度 i號(hào)機(jī)器休息,代碼略”結(jié)合題意“負(fù)載率超過 90的機(jī)器都調(diào)度休息”可知該處判斷的是負(fù)載率超過 90的機(jī)器,而 i遍歷的是機(jī)器的臺(tái)數(shù),那么只要判斷當(dāng)前機(jī)器負(fù)載率是否超過90即可,故可推出答案:a[i]>90;第 2小空,結(jié)合第 3小空的注釋語句“調(diào)度 t號(hào)機(jī)器休息,代碼略”可推出要求出 t號(hào)機(jī)器,那么求 t的語句只能產(chǎn)生在第 2 小空了,第 1小空和第 3 小空都是條件判斷語句。而題意中第二類機(jī)器休息的條件則是“如果所有機(jī)器負(fù)載率都不超過 90,則負(fù)載率最高的機(jī)器休息”,所以第一個(gè) if語句和第二個(gè) if語句是并列的兩個(gè) if,第一個(gè) if先判斷負(fù)載率是否超過 90,然后沒有超過 90則再利用第二個(gè) if語句找出負(fù)載率最高的機(jī)器,故可得第 2小空的答案為:t=i,找負(fù)載率最高的機(jī)器索引也就是編號(hào)。elif語句則是判斷當(dāng)前機(jī)器是否已在休息,因?yàn)橐粋€(gè)小時(shí)后該號(hào)機(jī)器要開始工作了。第 3 小空,是遍歷完一輪機(jī)器后,找到負(fù)載率最高的機(jī)器,但如果多臺(tái)機(jī)器負(fù)載率同為最高,則編號(hào)最小的機(jī)器休息,但這個(gè)要求在第二 if語句 a[i]>a[t]的時(shí)候已經(jīng)是完成找最小編號(hào)機(jī)器的要求了,此處要考慮的是“如果所有機(jī)器負(fù)載率都不超過 90,則負(fù)載率最高的機(jī)器休息”,所以要添加的條件是所有機(jī)器是否超過 90,可以用 cnt來作為判斷的依據(jù),如果有超過 90的則 cnt+1,那么只要 cnt==0說明是所有機(jī)器負(fù)載率都不超過 90這個(gè)前提條件,所以第 3小空的答案為:cnt==014.某研究小組搭建了室外溫度檢測(cè)系統(tǒng),在 4所學(xué)校各設(shè)置了 1個(gè)監(jiān)測(cè)點(diǎn)。智能終端連接傳感器,每隔 3小時(shí)采集 1次溫度數(shù)據(jù)通過網(wǎng)絡(luò)將溫度數(shù)據(jù)傳輸?shù)椒?wù)器。服務(wù)器根據(jù)數(shù)據(jù)判斷出異常情況時(shí),通過智能終端控制執(zhí)行器發(fā)出預(yù)警信號(hào)。請(qǐng)回答下列問題:(1)在搭建該監(jiān)測(cè)系統(tǒng)時(shí),溫度傳感器與智能終端的配備總數(shù)量合理的是 ▲ (單選,填字母:A.4個(gè)溫度傳感器和 4個(gè)智能終端 / B.4個(gè)溫度傳感器和 1個(gè)智能終端)。(2)系統(tǒng)數(shù)據(jù)采集的時(shí)間間隔為 3小時(shí),可用于控制采集時(shí)間的設(shè)備是 ▲ (單選,填字母:A.傳感器 / B.智能終端)。(3)編寫智能終端程序時(shí),不.需.要.知道 ▲ (多選,填字母)。(注:全部選對(duì)的得 2分,選對(duì)但不全的得 1分,不選或有錯(cuò)的得 0分)技術(shù)(選考)試題 第 8 頁(共 15 頁)A.與傳感器連接的智能終端引腳 B.服務(wù)器的存儲(chǔ)容量C.服務(wù)器的地址及端口 D.數(shù)據(jù)庫的文件名(4)當(dāng)服務(wù)器判定有異常情況后,除可通過智能終端控制蜂鳴器發(fā)出預(yù)警聲音之外,請(qǐng)寫出其他兩種預(yù)警的具體方式。(5)將系統(tǒng)中某年的數(shù)據(jù)導(dǎo)出到文件 data.xlsx中,部分?jǐn)?shù)據(jù)如第 14題圖 a所示。其中“預(yù)報(bào)溫度”列是指學(xué)校所在地的天氣預(yù)報(bào)溫度數(shù)據(jù),“差值”列是指實(shí)測(cè)溫度與預(yù)報(bào)溫度相減的絕對(duì)值。現(xiàn)要由高到低輸出 3月份各監(jiān)測(cè)點(diǎn)差值的平均值(如圖 b所示),再用差值平均值最高的監(jiān)測(cè)點(diǎn)的 3月份實(shí)測(cè)溫度數(shù)據(jù)繪制線形圖(如圖 c所示)。第 14題圖 a 第 14題圖 b 第 14題圖 c實(shí)現(xiàn)上述功能的部分 Python程序如下,請(qǐng)選擇合適的代碼填入劃線處(填字母)。import pandas as pdimport matplotlib.pyplot as pltdf=pd.read_excel("data.xlsx")df1 = ①df2 = ②df2 = ③#依次輸出 df2中各監(jiān)測(cè)點(diǎn)編號(hào)及其差值的平均值,如圖 b所示,代碼略#將 df2中首行的監(jiān)測(cè)點(diǎn)編號(hào)存入 uid,代碼略df2 = ④#創(chuàng)建 x列表,長度為 248,元素依次為 0~247,表示 3月份采集時(shí)間點(diǎn)的序號(hào),代碼略plt.plot(x,df2['實(shí)測(cè)溫度 ']) #繪制線形圖#設(shè)置繪圖參數(shù),并顯示如圖 c所示的線形圖,代碼略①②③④處可選代碼有:A.df.groupby("月",as_index=False).差值.mean() #分組求平均B.df[df["監(jiān)測(cè)點(diǎn)"]==uid] #篩選C.df[df["月"]==3]D.df1.sort_values("差值",ascending=False) #降序排序E.df1.groupby("監(jiān)測(cè)點(diǎn)",as_index=False).差值.mean()F.df1[df1["監(jiān)測(cè)點(diǎn)"]==uid]G.df2.sort_values("差值",ascending=False)【答案】(1)A (1分)(2)B (1分)(3)BD (2分)(4)服務(wù)器發(fā)送預(yù)警郵件;向終端發(fā)出預(yù)警信息;通過智能終端控制發(fā)光二極管閃爍;或其他等價(jià)答案。 (2分)(5)①C ②E ③G ④F ( 4分)【解析一】技術(shù)(選考)試題 第 9 頁(共 15 頁)本題主要考查信息系統(tǒng)及利用 pandas數(shù)據(jù)分析。(1)4個(gè)監(jiān)測(cè)點(diǎn)分別設(shè)置在 4所學(xué)校,所以配備總數(shù)量合理的是 4個(gè)溫度傳感器和 4個(gè),確定答案為 A;(2)傳感器一般是負(fù)責(zé)采集數(shù)據(jù),而采集時(shí)間的控制,一般在智能終端程序代碼中進(jìn)行設(shè)計(jì),確定答案為B;(3)選項(xiàng) A,在智能終端程序中獲取傳感器采集到的數(shù)據(jù)時(shí)需要知道傳感器連接的智能終端引腳;選項(xiàng) B,數(shù)據(jù)存儲(chǔ)是在服務(wù)器端完成,在智能終端程序中如果不知道服務(wù)器的存儲(chǔ)容量不影響程序編寫;選項(xiàng) C,智能終端需要將采集到的數(shù)據(jù)上傳至服務(wù)器,所以需要知道服務(wù)器的地址及端口;選項(xiàng) D,數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中的功能,是在服務(wù)器端代碼中實(shí)現(xiàn),所以不需要完成數(shù)據(jù)庫的文件名,確定答案為 BD;(4)服務(wù)器端通過手機(jī)發(fā)送短信;服務(wù)器端通過手機(jī)或電話方式向管理人員發(fā)出預(yù)警;服務(wù)器端向管理人員發(fā)出預(yù)警郵件通知;或其他等價(jià)答案。(5)題干中要求“由高到低輸出 3月份各監(jiān)測(cè)點(diǎn)差值的平均值”,所以首先對(duì) df中篩選出月為 3的數(shù)據(jù),確定①處為 C;然后按"監(jiān)測(cè)點(diǎn)"分組,“差值”求平均值確定②處選 E,然后“差值”降序所以③處選 G;題干中要求“差值平均值最高的監(jiān)測(cè)點(diǎn)的 3月份實(shí)測(cè)溫度數(shù)據(jù)繪制線形圖”,且代碼注釋中已經(jīng)明確“將 df2中首行的監(jiān)測(cè)點(diǎn)編號(hào)存入 uid”,即篩選出 df1監(jiān)測(cè)點(diǎn)值為 uid的數(shù)據(jù),所以④處選 F。【解析二】(1)在 4個(gè)學(xué)校分別設(shè)置 1個(gè)監(jiān)測(cè)點(diǎn),智能終端和傳感器都沒辦法共用,所以是需要 4個(gè)智能終端和 4個(gè)傳感器。所以答案為 A。(2)必修二《信息系統(tǒng)與社會(huì)》課本 P135頁中智能終端程序如下圖:從上圖最后一行代碼“sleep(1000*5)”可知,采集時(shí)間的間隔是由智能終端控制的。所以答案為 B。(3)從上圖第二行代碼可知,獲取傳感器數(shù)據(jù)時(shí),需要知道傳感器連接的端口號(hào)(pin0),故 A不選;從上圖第三行代碼可知,使用 GET方法上傳數(shù)據(jù)給服務(wù)器時(shí),必然要知道服務(wù)器的 IP和端口號(hào),故 C不選;B選項(xiàng)服務(wù)器容量跟智能終端上傳數(shù)據(jù)無關(guān);D選項(xiàng)數(shù)據(jù)庫文件名,是在服務(wù)器連接數(shù)據(jù)庫時(shí)需要用到,與智能終端無關(guān)。所以答案為 BD。(4)當(dāng)服務(wù)器判定異常時(shí),其他預(yù)警方法:一是服務(wù)器端向指定手機(jī)發(fā)送短信,或者撥打指定手機(jī)(電話);二是服務(wù)器端向指定郵箱發(fā)送郵件;三是增加合理的執(zhí)行器(蜂鳴器除外),啟動(dòng)該執(zhí)行器。(5)題目要求“由高到低輸出 3月份各監(jiān)測(cè)點(diǎn)差值的平均值”。所以第一步先以列“月”為條件,篩選出 3月份的數(shù)據(jù);第二步對(duì)篩選后的數(shù)據(jù)以“監(jiān)測(cè)點(diǎn)”分組,求出“差值”列的平均值;第三步按照“差值”列降序排序(從高到低)。所以①處答案為 C(df[df[“月”] == 3]),②處答案為 E(df1.groupby(“監(jiān)測(cè)點(diǎn)”,as_index = False).差值,mean()),③處答案為 G(df2.sort_values(“差值”,ascending = False))。參照題目,最后還要實(shí)現(xiàn)“用差值平均值最高的監(jiān)測(cè)點(diǎn)的 3月份實(shí)測(cè)溫度數(shù)據(jù)繪制線形圖”。從該處上一行注釋可知,差值平均值最高的監(jiān)測(cè)點(diǎn)名稱存入了 uid,而 3 月份的數(shù)據(jù)在第一步完成篩選的 df1。所以④處答案為 F(df1[df1[“監(jiān)測(cè)點(diǎn)”] == uid])。15.某市舉行體育賽事活動(dòng),n所學(xué)校的選手已完成預(yù)賽,現(xiàn)計(jì)劃根據(jù)預(yù)賽的成績挑選 s名選手參加市決賽。成績位列所在學(xué)校前 w名次的選手直接入選,剩余名額按成績由高到低依次挑選,成績相同的選手一并技術(shù)(選考)試題 第 10 頁(共 15 頁)入選,選中的選手?jǐn)?shù)一旦達(dá)到或超過 s名,挑選結(jié)束。現(xiàn)給定所有選手預(yù)賽的成績數(shù)據(jù)表,每位選手的數(shù)據(jù)包含學(xué)校編號(hào)(0~n-1)、選手編號(hào)、成績,成績數(shù)據(jù)表已按成績由高到低排列。編寫程序,計(jì)算各選手的校內(nèi)名次,再按上述規(guī)則挑選決賽選手,按成績數(shù)據(jù)表中的順序輸出選手編號(hào),同時(shí)提供查詢功能。選手校內(nèi)名次的計(jì)算方法是:若選手所在學(xué)校有 m人成績高于該選手,則該選手的名次為 m+1。在第 15題圖所示的樣例中, n、s、w分別為 3、8、2,根據(jù)圖中前 3 行數(shù)據(jù)計(jì)算出了每位選手的校內(nèi)名次,進(jìn)而選出實(shí)際入選的 9名選手。學(xué)校編號(hào) 0 2 2 0 0 2 2 0 1 1 1 1選手編號(hào) 0002 2027 2002 0072 0182 2071 2128 0012 1081 1002 1008 1208成績 198 185 183 182 182 177 177 176 175 163 161 161校內(nèi)名次 1 1 2 2 2 3 3 4 1 2 3 3是否入選 True True True True True True True False True True False False第 15題圖請(qǐng)回答下列問題:(1)對(duì)于第 15題圖所示前 4行數(shù)據(jù),若 s、w分別為 5和 1,則 0號(hào)學(xué)校入選人數(shù)是 ▲ 。(2)定義如下 search(data,sid,score)函數(shù),data列表每個(gè)元素的前 5個(gè)數(shù)據(jù)項(xiàng)依次為學(xué)校編號(hào)、選手編號(hào)、成績、校內(nèi)名次、是否入選,列表已按成績由高到低排列。函數(shù)功能是查找選手編號(hào)為 sid、成績?yōu)?score的元素,返回其下標(biāo),若未找到則返回-1。def search(data,sid, score):left,right = 0, len(data)-1f = -1while left <= right:mid = (left+right)//2if score == data[mid][2]:f = midleft = mid+1elif score < data[mid][2]:left = mid+1else:right = mid-lif f == -1:return -1for i in range( f, len(data) ):if data[i][2] != score:return -1elif data[i][1] == sid:return i①調(diào)用 search函數(shù),若 data列表長度為 12,data[0][2],data[1][2],…,data[11][2]的值依次為:198,185,183,182,182,177,177,176,175,163,161,161,score值為 177,則 while 語句中循環(huán)體的執(zhí)行次數(shù)是 ▲ 。②程序中加框處代碼有錯(cuò),請(qǐng)改正。(3)實(shí)現(xiàn)根據(jù)選手成績(成績不超過 200)計(jì)算校內(nèi)名次,以及挑選決賽選手功能的 Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。def proc(data,n,s,w):技術(shù)(選考)試題 第 11 頁(共 15 頁)#創(chuàng)建 r列表,共 n個(gè)元素,每個(gè)元素的值均為[0,0,201],代碼略heads = [-1,-1]tails = [-1,-1]cnt = 0for i in range(len(data)):①r[k][1] += 1if data[i][2] < r[k][2]:r[k][2] = data[i][2]②data[i][3] = r[k][0]data[i].append(-1) #為 data[i]追加一個(gè)元素-1v = 1if data[i][3] <= w:data[i][4] = Truecnt += 1v = 0if heads[v] == -1:heads[v] = ielse:data[tails[v]][5] = itails[v] = ip,q = heads[0],heads[1]res = [] #res列表用于存放入選決賽的選手編號(hào),順序與 data列表保持一致while cnt < s and q != -1:tmp = data[q][2]while q != -1 and data[q][2] == tmp:③ :res.append(data[p][1])p = data[p][5]res.append(data[q][1])data[q][4] = Truecnt +=1q = data[q][5]while p !=-1:res.append(data[p][1])p = data[p][5]return res'''讀取 n、s、w;讀取選手成績數(shù)據(jù)表存入 data 列表,每個(gè)元素包含學(xué)校編號(hào)、選手編號(hào)、成績、校內(nèi)名次(初值為 0)、是否入選(初值為 False)5個(gè)數(shù)據(jù)項(xiàng),代碼略res = proc(data,n,s,w)#輸出 res列表中的入選選手編號(hào),代碼略#讀取待查詢的選手編號(hào)與成績,調(diào)用 search函數(shù),根據(jù)返回值輸出查詢結(jié)果,代碼略技術(shù)(選考)試題 第 12 頁(共 15 頁)【答案】(1)3 (1分)(2) ① 4 (1分)(3) ② f,-1,-1 或 right,-1,-1 或 left-1,-1,-1 (2分)(3) ① k = data[i][0] (1分)②r[k][0]=r[k][1] (2分)③while p!=-1 and p【解析一】(1)按照題干描述算法,每個(gè)學(xué)校先定最高分?jǐn)?shù)的第1人,第4名是2號(hào)學(xué)校的183,則第5名是0號(hào)學(xué)校的182,而182有兩位選手,則0號(hào)學(xué)校一共3人。(2)根據(jù)算法確定,整體算法根據(jù)對(duì)分查找進(jìn)行,當(dāng)查找到相應(yīng)的score數(shù)據(jù)時(shí)繼續(xù)在小的半段數(shù)據(jù)中查找,同時(shí)標(biāo)記索引位置,因此案例的12個(gè)數(shù)據(jù)在程序的循環(huán)體中最多執(zhí)行4次,該部分查找到數(shù)據(jù)中最后一個(gè)等于score的索引位置。因此第②小題查找范圍只能在0到f的區(qū)間范圍內(nèi)查找,因此答案可以是(f,-1,-1)。(3)根據(jù)程序中已經(jīng)給出的相應(yīng)變量和語句,可以分析出,數(shù)組r中的每個(gè)子列表[0,0,201],分別是當(dāng)前選手的校內(nèi)排名、統(tǒng)計(jì)到當(dāng)前選手為止該學(xué)校的總?cè)藬?shù)以及該學(xué)校目前的最低成績,因此根據(jù)r[k][1]+=1可判定第①空需要確定當(dāng)前選手所屬的學(xué)校編號(hào),因此答案為k=data[i][0];而第②空的判定條件在更新當(dāng)前選手所屬學(xué)校的最低成績,同時(shí)結(jié)合下一行的表達(dá)式data[i][3]=r[k][0],可以確定是在給當(dāng)前選手排名,并且是在自己學(xué)校的校內(nèi)排名。根據(jù)題干中的描述,所有數(shù)據(jù)已經(jīng)按照降序排好,則排名時(shí)要根據(jù)該選手是當(dāng)前學(xué)校的第幾人以及同分情況,若所有選手分?jǐn)?shù)都不同,則排名數(shù)據(jù)和人數(shù)數(shù)據(jù)一致,但若出現(xiàn)同分情況,則在發(fā)現(xiàn)分?jǐn)?shù)不一致時(shí),才需要將排名數(shù)據(jù)更新成人數(shù)數(shù)據(jù),因此第②空答案為r[k][0]=r[k][1];根據(jù)后續(xù)代碼的描述可以發(fā)現(xiàn),head[0]是直接入選的鏈表表頭,head[1]是剩余選手的表頭,tail中存儲(chǔ)的是相應(yīng)鏈表的表尾,根據(jù)第(2)小題的程序結(jié)果res中應(yīng)該存儲(chǔ)進(jìn)入決賽選手?jǐn)?shù)據(jù),并且順序與data列表保持一致,因此在遍歷過程中如果pq,則將剩余選手的數(shù)據(jù)加入res中。【解析二】本題考查基本數(shù)據(jù)結(jié)構(gòu)包括數(shù)組、鏈隊(duì),考查的基本算法涉及對(duì)分查找、順序查找、最值問題等。(1)根據(jù)題意可得,當(dāng)s,w分別為5,1時(shí),每個(gè)學(xué)校先選取成績最高的一名學(xué)生入選決賽,編號(hào)分別是”0002”、“2027”、“1081”,剩余的名額按照成績由高到低分別是“2002”,“0072”, “0182”,所以0號(hào)學(xué)校入選3人次。(2)自定義函數(shù)search功能是查找選手編號(hào)為sid、成績?yōu)閟core的元素,考查的算法主要為對(duì)分和順序查找。對(duì)分查找用來查找data中成績?yōu)閟core的元素位置。當(dāng)出現(xiàn)多個(gè)同分?jǐn)?shù)據(jù)時(shí),f返回的是最右邊的元素位置。找到后,從索引為f的節(jié)點(diǎn)開始查找對(duì)應(yīng)選手編號(hào)是否為sid,若找到,返回對(duì)應(yīng)節(jié)點(diǎn)的索引,否則繼續(xù)往前(左)查找,直到將同分段的所有元素查找完畢為止。當(dāng)數(shù)據(jù)為198,185,183,182,182,177,177,176,175,163,161,161,score值為177時(shí),對(duì)應(yīng)的查找二叉樹如下,查找次數(shù)為4次。結(jié)合上述分析,當(dāng)score=177,f=6,即返回最后一個(gè)177元素的位置,然后從f開始往前查找選手編號(hào)sid,所以加框處代碼改為f,-1,-1(3)自定義函數(shù)proc主要功能是根據(jù)選手成績(成績不超過200)計(jì)算校內(nèi)名次,以及挑選決賽選手。分析代碼中的核心變量:k表示當(dāng)前選手的學(xué)校編號(hào),r[k][0]表示當(dāng)前選手成績?cè)诒拘K袇①愡x手中的排名,r[k][1]表示data[0]到data[i]中編號(hào)為k的學(xué)校人數(shù)。r[k][2]表示data[0]到data[i]中當(dāng)前學(xué)校的所有選手成績的最小值。技術(shù)(選考)試題 第 13 頁(共 15 頁)cnt為計(jì)數(shù)變量,統(tǒng)計(jì)進(jìn)入決賽選手的數(shù)量v表示鏈隊(duì)編號(hào),0表示本校前w名選手組成鏈隊(duì)0,1表示其他選手組成鏈隊(duì)1。head[0]、tail[0]表示鏈隊(duì)0的隊(duì)首和隊(duì)尾位置;head[1]、tail[1]表示鏈隊(duì)1的隊(duì)首和隊(duì)尾位置。具體代碼解析如下:def proc(data,n,s,w):heads =[-1,-1]tails =[-1,-1]cnt=0for i in range(len(data)): #遍歷列表 datak = data[i][0] #獲取當(dāng)前選手的對(duì)應(yīng)的學(xué)校編號(hào)r[k][1]+=1 #統(tǒng)計(jì) data[0]到 data[i]中編號(hào)為 k的學(xué)校人數(shù)if data[i][2]< r[k][2]: #當(dāng)前選手成績小于其學(xué)校之前選手成績的最小值r[k][2]= data[i][2] #更新當(dāng)前學(xué)科成績最小值r[k][0]=r[k][1] #當(dāng)前選手成績比之前出現(xiàn)的本校的所有參賽選手小,所以該選手的排名就是data[0]到 data[i]中,當(dāng)前學(xué)校參賽選手的總?cè)藬?shù)。data[i][3]=r[k][0] #更新當(dāng)前選手排名data[i].append(-1) #為 data[i]添加指針域,默認(rèn)-1v=1 #鏈隊(duì)編號(hào),默認(rèn)為 1if data[i][3]<= w: #判斷當(dāng)前選手是否是本校的前 w名,若是data[i][4]= True #標(biāo)記變量,表明當(dāng)前選手入選到?jīng)Q賽cnt +=1 #進(jìn)入決賽的選手?jǐn)?shù)量+1v=0 #修改鏈隊(duì)編號(hào),將當(dāng)前選手添加到鏈隊(duì) 0的尾部,否則加到鏈隊(duì) 1尾部。if heads[v]== -1: #若當(dāng)前鏈隊(duì)為空,當(dāng)前元素即為鏈隊(duì) v的頭節(jié)點(diǎn)heads[v]= i #修改頭指針,指向當(dāng)前節(jié)點(diǎn)位置else:data[tails[v]][5]=i #否則,修改原鏈隊(duì)尾結(jié)點(diǎn)的指針域,指向當(dāng)前節(jié)點(diǎn)位置tails[v]=i #修改尾指針,指向當(dāng)前節(jié)點(diǎn)位置因?yàn)?data中的數(shù)據(jù)是根據(jù)成績降序排列的,所以兩個(gè)鏈隊(duì)的節(jié)點(diǎn)也是按照成績降序排列。p,q=heads[0],heads[1] #p指向鏈隊(duì) 0的隊(duì)首,q指鏈隊(duì) 1的隊(duì)首。res=[] #res列表用于存放入選決賽的選手編號(hào),順序與 data列表保持一致while cnt選手成績降序排列,所以選擇鏈隊(duì) 1前 s-cnt個(gè)選手,并判斷臨界的選手出現(xiàn)成績相同,相同則一并入選。tmp= data[q][2] #tmp讀取 q節(jié)點(diǎn)對(duì)應(yīng)的選手成績while q!=-1 and data[q][2]==tmp: #如 tmp與后續(xù)節(jié)點(diǎn)的選手成績相同,則一并入選。while p!=-1 and pres. append(data[p][1])p= data[p][5] #p指向下一個(gè)節(jié)點(diǎn)res. append(data[q][1]) #當(dāng) p>q或 p==-1,將 q 節(jié)點(diǎn)的選手編號(hào)添加到 res,確保 res中數(shù) 據(jù)的順序與 data列表保持一致data[q][4]= True #標(biāo)記當(dāng)前選手已入選cnt +=1 #入選人數(shù)+1q = data[q][5] #q指向下一個(gè)節(jié)點(diǎn)while p!=-1: #將鏈隊(duì) 0剩余節(jié)點(diǎn)對(duì)應(yīng)的選手編號(hào)添加到 resres. append(data[p][1])p= data[p][5]技術(shù)(選考)試題 第 14 頁(共 15 頁)return res根據(jù)題中數(shù)據(jù)模擬:當(dāng) n、s、w分別為 3、8、2,鏈隊(duì) 0和鏈隊(duì) 1,下圖只保留索引選手編號(hào)、成績:1. 當(dāng) p!=-1且 pq鏈隊(duì) 0鏈隊(duì) 1此時(shí) res=[“0002”,”2027”,”2002”,”0072”,”0182”]2. 將鏈隊(duì) 1的 q節(jié)點(diǎn)對(duì)應(yīng)的選手編號(hào)添加到 res,q后移一位,cnt加 1鏈隊(duì) 1res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”]3. 此時(shí),進(jìn)入決賽的選手已達(dá)到8人次,但是臨界的兩個(gè)選手分?jǐn)?shù)相同,所以將后續(xù)的“2128”一并入選,res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”,”2128”],cnt加1。cnt>s,循環(huán)結(jié)束。鏈隊(duì) 14. 將鏈隊(duì) 0中剩余的選手添加到 res中,res=[“0002”,”2027”,”2002”,”0072”,”0182”,”2071”,”1081”,”1002”]鏈隊(duì) 0技術(shù)(選考)試題 第 15 頁(共 15 頁) 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫