資源簡介 絕密★考試結束前2022學年第二學期浙南名校聯盟第二次聯考高三技術學科考生須知:1.本試題卷分選擇題和非選擇題兩部分,共 6頁,滿分 50分,考試時間 90分鐘。2.答題前,在答題卷指定區域填寫班級、姓名、考場號、座位號及準考證號。3.所有答案必須寫在答題卷上,寫在試卷上無效。4.考試結束后,只需上交答題卷。第一部分 信息技術一、選擇題(本大題共 12 小題,每小題 2 分,共 24 分,每小題列出的四個備選項中只有一個是符合題目要求的,不選、錯選、多選均不得分)1.下列關于數據和信息的說法,正確的是( )A.數字就是數據,是數據唯一的表現形式 B.信息會因為被別人獲取而發生損耗C.計算機中數據一般以文件的形式存儲 D.大數據給生活帶來便利的同時不會帶來社會問題【答案】C【解析】本題考查數據和信息。A錯誤,數字是數據的一種形式,數據的表現形式還有圖像、音視頻等B錯誤,信息具有共享性,在任何階段都不會發生損耗C正確。計算中數據以文件的形式存儲D錯誤,大數據具有雙面性,帶來收益的同時也帶來一些社會問題,比如失業2.下列關于人工智能的說法,不.正.確.的是( )A.人工智能是指以機器為載體,模仿、延伸和擴展人類智能B.行為主義通過模仿人類大腦中神經元之間的復雜交互來進行認知推理C.AlphaGo 從圍棋人工智能跨界到電力控制領域屬于跨領域人工智能D.人工智能技術在推動人類社會進步的同時,也可能威脅人類安全【答案】B【解析】本題考查人工智能。聯結主義通過模仿人類大腦中神經元之間的復雜交互來進行認知推理,故 B錯誤。閱讀下列材料,回答第 3至 4題校園一卡通以智能卡為信息載體,在一張小小的智能卡上實現生活消費、學籍管理、身份認證、網上交費等多種功能。校園一卡通系統使全校所有師生員工每人僅需一張校園卡,便可在學校各處出入、辦事、活動和消費;此外還可以通過銀行轉賬等方式進行自助充值,實現了“一卡在手,走遍校園”。3.關于此信息系統說法正確的是( )A.校園卡一卡通系統的用戶只是學校的師生B.學生使用校園一卡通在學校超市消費的記錄存儲在卡內C.該信息系統是由硬件、用戶、通信網絡、數據構成的人機交互系統D.家長可通過手機銀行為學生卡內充值,說明信息系統具有數據傳輸功能【答案】D高三技術學科 試題 第 1 頁 共 12 頁【解析】本題考查信息系統基礎。A錯誤,該系統的用戶不僅包括學校師生,還包括開發人員和維護人員;B錯誤,消費的記錄也屬于數據,保存在服務器的數據庫上;C錯誤,該信息系統是由硬件、軟件、用戶、通信網絡和數據構成的人機交互系統;D正確。4.校園一卡通系統的核心技術是 RFID。以下說法不.正.確.的是( )A.RFID 屬于通信技術,也屬于傳感器技術 B.RFID 兩大基本元素,其中讀寫器是發射端C.校園卡按能量供給方式分類,為無源電子標簽 D.RFID應用領域日益擴大,成為信息社會建設的一項基礎技術【答案】B【解析】本題考查傳感與控制讀寫器是接收端,電子標簽是發射端,故 B錯誤。5、以下行為符合信息安全要求的是( )A. 掃描二維碼填寫信息領取優惠券 B. 在云盤謹慎存儲個人重要資料或隱私信息C. 經常在公共場所“蹭網” D. 安裝殺毒軟件后不需要再更新【答案】B【解析】本題考查信息安全。A錯誤,要提高安全意識,不隨意掃描二維碼,防止信息泄露和保護信息安全B正確,信息具有共享性,在任何階段都不會發生損耗C錯誤,公網本身也存在安全隱患,‘蹭網’有可能造成信息泄露D錯誤,殺毒軟件帶有滯后性,需要經常更新和殺毒6、下列有關網絡相關內容的說法,不.正.確.的是( )A.計算機網絡、移動通信網絡、廣播電視網絡現已成為覆蓋面廣、影響力大的三大網絡B.網絡互聯設備,主要包括調制解調器、路由器和交換機等等C.網絡中的資源就是指網絡中的所有數據資源D.計算機網絡按照網絡的覆蓋和范圍,校園網一般可以稱之為局域網【答案】C【解析】本題考查計算機網絡的相關知識。網絡中的資源是指網絡中所有的軟件、硬件和數據資源,所以 C錯誤。7、某算法的部分流程圖如圖所示,執行這部分流程,若輸入 n的值為 20,則輸出 a、b的值分別是( )A. 12,10 B. 10,9C. 9,15 D. 9,10【答案】D【解析】第 7題圖本題考查流程圖的閱讀理解。初始值 第一次 第二次 第三次 第四次 第五次高三技術學科 試題 第 2 頁 共 12 頁a 0 3 6 9b 0 5 10n 20 17 12 9 4 18、有二叉樹的前序遍歷序列為 A-B-C-E-F-G-D,中序遍歷序列為 A-E-C-F-G-B-D,則關于該二叉樹的說法正確的是( )A. 該二叉樹根節點的度為 1 B. 該二叉樹的高度為 4C. 該二叉樹中節點 G是節點 C的左孩子 D. 該二叉樹中葉子節點的個數為 4【答案】D【解析】本題考查二叉樹的相關知識。根據二叉樹的前序遍歷和中序遍歷畫出二叉樹該二叉樹的根節點 A的度為 1,所以 A選項正確;該二叉樹的高度為 5,B選項錯誤;該二叉樹的節點 G是節點 F的右孩子,C選項錯誤;該二叉樹的葉子節點是 E、G、D,所以 D選項錯誤。9.假設隊列的空間足夠,隊首指針 head 和隊尾指針 tail 經過“出隊、入隊、出隊、出隊、入隊、入隊、出隊”這一系列操作后,head=7,tail=9。則操作前的 head和 tail的值分別為( )A.11 12 B.2 5 C.3 6 D.3 5【答案】C【解析】本題考查隊列的相關知識。根據題意經過 3次入隊后隊尾指針 tail=9,因此在 3次入隊前 tail應為 6,在經過 4次出隊后隊首指針 head=7,因此在 4次出隊前 head應為 3,正確選項是 C。10.一個手機上的趣味小游戲,有 3 個杯子里裝了一些有顏色的液體(如圖所示),現在希望通過相互倒水實現將杯子 stC 裝滿紅色液體,現編寫代碼如下:stA,stB,stC=['灰','紅','藍'],['紅','灰',''],['紅','','']tops=[2,1,0]第 10題圖①tops[2]+=1 ②tops[0]+=1 ③tops[1]+=1stC[tops[2]]=stB[tops[1]] stA[tops[0]]=stB[tops[1]] stB[tops[1]]=stA[tops[0]]tops[1]-=1 tops[1]-=1 tops[0]-=1④stA[tops[0]]=stB[tops[1]] ⑤tops[2]+=1tops[1]-=1 stC[tops[2]]=stA[tops[0]]在空白處填入哪一種方案,可以將 stC 杯子中裝滿紅色液體( )A. ③⑤①②④ B.③⑤④②① C. ③⑤④①② D.③②①⑤④【答案】B【解析】考查隊列的相關操作。分析三個杯子里的液體分布情況,要將 stC裝滿紅色液體,操作的步驟如下:1.將 stA藍色液體倒入 stB 2.將 stA紅色液體倒入 stC 3.將 stB藍色液體倒入 stA4.將 stB灰色液體倒入 stA 5.將 stB紅色液體倒入 stC高三技術學科 試題 第 3 頁 共 12 頁對應的操作順序是:④⑤①②③ 選 B具體做題時,4個選項前面相同的較多,但最后一個均不相同。而操作的最后一步是將 B棧的液體倒入 C棧,只有①是這個操作,可以快速找到正確答案。11.閱讀以下程序:def f(x):if x>5 or x<1:return '無法計算'elif x==5:return 1else:return (f(x+1)+1)*2若輸入的 x為 2,則函數返回值為( )A.22 B.10 C. 11 D.'無法計算'【答案】A【解析】考查對遞歸相關代碼的分析理解。f(2)=(f(3)+1)*2=11*2=22 選 Af(3)=(f(4)+1)*2=5*2=10f(4)=(f(5)+1)*2=2*2=4f(5)=1本題是經典題目猴子吃桃的遞歸版本,其迭代版本,變量的迭代規律是 x=(x+1)*2。12.流浪地球 2演員表 lnk是一個鏈表,如果希望對 lnk內部進行修改,分別形成男女演員的鏈表,并進行輸出(如第 12題圖所示),代碼如下:lnk=[['吳京','男',1],['劉德華','男',3],['郭凡','男',4],['朱顏曼滋','女',2],['李雪健','男',6],['王智','女',8],['佟麗婭','女',7],['沙溢','男',5],['寧理','男',-1]]p=q=headA=0 #headA為男演員鏈表頭指針r=headB=3 #headB為女演員鏈表頭指針while p!=-1:if lnk[p][1]=='男':q=pp=lnk[p][2] 第 12題圖elif headB!=p:______________________________lnk[q][2]=lnk[p][2]______________________________else:lnk[q][2]=lnk[p][2]p=lnk[p][2]# 使用 headA,headB分別作為男性演員、女性演員鏈表頭指針,遍歷輸出 lnk,代碼略請選擇合適的代碼填空,完成要求( )①p=lnk[p][2] ②lnk[r][2]=-1 ③lnk[r][2]=p ④r=lnk[r][2]A.③④ ①② B.④③ ①② C.③④ ②① D.③① ④②高三技術學科 試題 第 4 頁 共 12 頁【答案】A【解析】考查鏈表操作的相關代碼。本題是要將 1個單向鏈表,根據數據域的內容(男、女)分成男、女 2個獨立的單向鏈表。具體算法:遍歷原鏈表,將找到的女演員節點依次鏈接形成一個單獨的鏈表,同時將女演員節點從原鏈表刪除。操作完成后,原鏈表就是一個只有男演員的單向鏈表。分析分支語句的相應條件,要補充完善部分代碼的分支滿足的條件是:鏈表指針 p所指向的節點,數據域內容為女且不是女演員鏈表的頭節點。分析 q、r,鏈表指針 q指向 p的前驅節點,節點數據為男演員。鏈表指針 r指向女演員鏈表的尾節點。操作原則:為了防止斷鏈,將節點從原鏈表刪除前,先要鏈接到女演員鏈表尾節點。根據以上分析,可以依次確定:代碼③,修改 r節點的指針域,指向 p節點。一定是給出的代碼中最先執行的。排除選項 B;p指針后移的代碼①必定在已有的代碼:lnk[q][2]=lnk[p][2](將 p指向的節點從原鏈表刪除)之后。排除選項 D;r指針向后移動代碼必定在②之前,執行④操作后,r、p指向同一節點;由于 r、p指向同一節點,必須先①后②。正確選項 A。鏈表代碼,其實并不唯一。本題順序也可以是③①④②。二、非選擇題(本大題共 4 小題,其中第 13 小題 8 分,第 14 題 9 分,第 15 題 9分,共 26 分)13.某“圖書借閱管理系統”服務器端程序采用 Flask Web 框架編寫,服務器的 IP 地址為 192.168.1.10,端口號為5000。該系統網站的頁面規劃如下所示:訪問地址 功能說明/ 主頁/login 子頁面,身份驗證/borrow 子頁面,圖書借閱(1)將系統分成若干個模塊,每個模塊完成特定的功能,這屬于搭建信息系統前期準備中的________階段(單選,填字母): A. 需求分析 B. 開發模式的選擇 C. 概要設計 D.詳細設計(2)從瀏覽器訪問該系統主頁面,需要輸入的 URL是___________________。(3)實現上述功能的服務器端部分代碼如下。請在劃線處填入合適的代碼。from flask import Flask, render_ template, request, redirectimport sqlite3app=Flask(__name__)@app.route("/")def index():return render_template(“login.html”)@app.route(" ① ",methods=["GET","POST"])def login():user=request.form.get("user")password=request.form.get("psd")if ② :return render_template("ok.html",name=user)else:return "用戶名或密碼錯誤!"def check(name,psd):db= sqlite3.connect("login.db")cur=db.cursor()cur.execute("select * from users")data=cur.fetchall()cur.close()db.close()flag=False高三技術學科 試題 第 5 頁 共 12 頁for rec in data: #存儲用戶信息的 users 表中共 3個字段,依次為序號、用戶名和密碼,圖 aif ③ :flag=Truebreakreturn flag@app.route("/borrow")def borrow(): 第 13題圖 a#代碼略if __name__=="__main__":app.run()【答案】(1)C (1分)(2)http://192.168.1.10:5000 (1分)(3) ① /login (2分)② check(user,password) (2分)③ rec[1]==name and rec[2]==psd (2分)【解析】本題考查網絡搭建及 flask相關知識。(1)概要設計包括模塊結構設計,系統物理配置和數據庫管理系統選擇。因此模塊設計屬于概要設計,選 C(2)題干可知,“服務器的 IP地址為 192.168.1.10,端口號為 5000”,故訪問時的主頁 URL為:http://192.168.1.10:5000(3)觀察代碼,①空處理身份驗證問題,由表格可知,身份驗證子頁面訪問路徑為:/login,故填:/login②處條件判斷用戶名及密碼是否填寫正確,自定義函數 check第 1個參數 name應為用戶名,第 2個參數為密碼,代入實參,填:check(user,password)③通過數據庫查詢語句查到的結果賦值給 data,data是一種二維元組,格式如[(1,”visit”,”111”),(2,”admin”,”123”)],訪問的方法與二維列表相同。結合圖 a,循環遍歷每個元素,姓名和密碼索引為 1,2,填:rec[1]==name and rec[2]==psd14.學校氣象站的小江同學收集了本地 2022年全年的天氣數據,數據按日期順序存儲在“tqsj.xlsx”文件中,部分數據如第 14題圖 a所示。第 14題圖 a為分析全年各月份天氣情況,編寫 Python 程序,請回答下列問題:(1)計算 2022 年每天的溫差(最高氣溫℃-最低氣溫℃),找出最大溫差,如有相同溫差,輸出所有符合要求的日期,輸出結果如第 14題圖 b所示。程序代碼如下,請在劃線①②處填入相應的代碼。第 14題圖 bimport pandas as pd高三技術學科 試題 第 6 頁 共 12 頁df=pd.read_excel("tqsj.xlsx")df["溫差"]= ①df_wch=df.sort_values("溫差",ascending=False,ignore_index=True)max=df_wch.at[0,"溫差"]rq=[]for i in df_wch.index:if df_wch.at[i,"溫差"]==max:rq.append( ② )print("最大溫差:",max,"℃")print("日期:",rq)(2)統計各月平均溫差并繪制線形圖,部分 Python程序如下,請在劃線處填入合適的代碼。avewch =[0]*12mdays =[31,28,31,30,31,30,31,31,30,31,30,31] #2022 年每月天數begin=0for m in range(12):total=0for d in range(begin, ③ ):total+=df.at[d,"溫差"]avewch[m]= ④begin+=mdays[m]x=[i+1 for i in range(12)]y=avewchplt.plot(x,y,label="平均溫差")#設置繪圖參數,顯示如第 14 題圖 c所示,代碼略第 14題圖 c(3)由第 14題圖 c可知,2022年平均溫差最大的是______月。【答案】(1)①df["最高氣溫℃"]-df["最低氣溫℃"] (2分)②df_wch.at[i,"日期"] 或 df_wch["日期"][i] (2分)(2)③begin+mdays[m] (2分)④total/mdays[m] (2分)高三技術學科 試題 第 7 頁 共 12 頁(3)8 (1分)【解析】該題主要考查使用 Python及 pandas模塊分析數據及數據可視化。(1) ①計算最大溫差,溫差=最高氣溫℃ - 最低氣溫℃ ,即 df["最高氣溫℃"]-df["最低氣溫℃"] ;②查找溫差等于最大溫差 max的數據,并將對應日期添加到列表 rq中,df_wch.at[i,"日期"]或 df_wch["日期"][i] ;(2) ③每月數據結束位置與該月天數相關,第 m月份起始數據位置為 begin,則結束數據對應位置為起始位置加上 m月的天數,即為 begin+mdays[m];④ m月平均溫差為總計溫差 total除以當月天數,確定答案為 total/mdays[m];(3)由第 14題圖 c可分析出 8月份的平均溫差最大,確定答案為 8 。15.甲乙丙 3位同學合作完成一個流浪地球模型,該模型需要使用多個零部件,每個零部件所需要加工的時間不一,三位同學同時開始加工,當某位同學完成一個零件的加工時,就會對下一個零件進行加工(每.個.零.件.同.時.間.內.只.能.由.一.位.同.學.加.工.),如此往復,直到所有的零件完成加工。(1)按題干所述,若有 9個零件需要加工, 他們的所需的加.工.順.序.及.加.工.時.間.為 [8,6,6,9,10,5,4,7,8],則完成所有零件加工的時長為______________分鐘。(2)一個零件的加工包含劃線、鋸割和銼削 3個步驟(一.個.零.部.件.必.須.依.次.進.行.劃.線.、.鋸.割.和.銼.削.;.每.個.步.驟.一.旦.開.始.就.不.會.中.斷.直.至.完.成.,.步.驟.之.間.可.以.有.中.斷.),零部件[1,2,5]代表需要劃線 1分鐘,鋸割 2分鐘,銼削 5分鐘,總耗時 8分鐘——即小題(1)的第一個零部件。現提供所有零部件的具體劃線、鋸割和銼削所需的時間:[[1,2,5],[2,1,3],[1,2,3],[1,5,3],[1,2,7],[1,1,3],[1,1,2],[2,1,4],[1,2,5]]甲乙丙覺得如果將銼削時間短的零部件安排在靠后加工,對于減少加工時間有所幫助。對上述數據進行排序,以下符合排序要求的代碼為__________(多選,選錯不給分,漏選給 1分,全選對 2分):A. def sort(d): B. def sort(d):for i in range(1,len(d)): for i in range(1,len(d)):for j in range(0,len(d)-i): for j in range(i-1,len(d)-1,-1):if d[j+1][2]>d[j][2]: if d[j+1][2]>d[j][2]:d[j],d[j+1]=d[j+1],d[j] d[j],d[j+1]=d[j+1],d[j]return d return dC. def sort(d): D. def sort(d):for i in range(1,len(d)): for i in range(1,len(d)):for j in range(len(d)-1,i-1,-1): for j in range(1,len(d)-i):if d[j-1][2]d[j-1],d[j]=d[j],d[j-1] d[j-1],d[j]=d[j],d[j-1]return d return d(3)根據小題(2)的描述,計算加工總時間,請在劃線處填上合適的代碼。sj=[[1,2,5],[2,1,3],[1,2,3],[1,5,3],[1,2,7],[1,1,3],[1,1,2],[2,1,4],[1,2,5]]sj=sort(sj)n=len(sj)flag=[0]*ntotaltime=0m=3 #甲乙丙 3位同學heads,tails=[0]*m,[0]*mque=[[0 for i in range(n*3)] for j in range(m)] #生成二維數組i=0for j in range(m):que[j][tails[j]]=sj[i][0]高三技術學科 試題 第 8 頁 共 12 頁tails[j]+=1flag[j]+=1______①_______while sum(flag)<3*n: #sum函數可以求出 flag列表中所有數字之和tmin=que[0][heads[0]]for j in range(1,m):if que[j][heads[j]]tmin=que[j][heads[j]]for j in range(m):que[j][heads[j]]-=tminif que[j][heads[j]]==0 and _______②_______:_______________③____________tails[j]+=1heads[j]+=1flag[i]+=1i=(i+1)%ntotaltime+=tmintmax=max([que[i][heads[i]] for i in range(m)])totaltime+=tmaxprint('加工時長為:',totaltime)【答案】(1)24 (1 分)(2)AC (2 分)(3) ①i+=1 或 i=(i+1)%n (2 分)②sum(flag)<3*n 或 sum(flag)<=3*n-1 (2 分)③que[j][tails[j]]=sj[i][flag[i]] 或 que[j][tails[j]]=sj[i][sum(flag)//n] (2 分)【解析一】本題考查隊列和冒泡排序。(1)根據題意,每位同學完成當前整個零件的加工后再開始下一個零件的加工,過程如下:甲 8 5 4 7乙 6 9 8丙 6 10甲乙丙三位同學分別需要加工 24,23,16 分鐘,則完成所有零件加工的時長為 24 分鐘。(2)本小題通過冒泡排序實現對銼削時間的升序排序,循環 len(d)-1 輪,每輪循環 len(d)-i 次,B 選項內循環次數為 i-len(d),不正確;D 選項內循環次數為 len(d)-i-1,不正確。(3)根據題目描述,每個零件同時間內只能由一位同學加工,同一零件的不同步驟可以由不同同學完成。為節省加工時間,甲乙丙選擇銼削時間短的零部件靠后加工的策略,結合程序(a 處代碼 i=(i+1)%n 表明 i 在 0~8 之間循環)推斷最終的算法思想是對零部件的銼削時間進行升序排序后,先統一完成零部件的劃線,再完成零部件的鋸割,最后完成零部件的銼削。sj=[[1,2,5],[2,1,3],[1,2,3], 對零部件的銼削時間進行升序排序[1,5,3],[1,2,7],[1,1,3],[1,1,2],[2,1,4],[1,2,5]]sj=sort(sj)n=len(sj) flag 用于記錄每個零件加工的進度,即第 j+1 個零件flag=[0]*n 的第 flag[j]個步驟已進入加工隊列totaltime=0 totaltime 用于記錄加工總時間高三技術學科 試題 第 9 頁 共 12 頁m=3 #甲乙丙 3 位同學heads,tails=[0]*m,[0]*m que 為包含 m 個元素的二維數組,que[j]為一個隊列,que=[[0 for i in range(n*3)] for j in range(m)] 記錄第 j+1 位同學所加工的零件相關信息(某一步驟的時長)heads 和 tails 記錄 que 中的隊首和隊尾信息,heads[j]為 que[j]的隊首元素,tails[j]為 que[j]的隊尾元素i=0 sj[i][0]為第 i+1 個零件的劃線時間for j in range(m): 該for循環讓銼削時間最長的三個零件的劃線時間入que[j][tails[j]]=sj[i][0] 隊,對應的,flag 記錄已進入加工隊列的步驟數量tails[j]+=1 這里 i 的初值為 0,一零件入隊加工后應使下一零件flag[j]+=1 入隊,則①空處填寫 i+=1,也可以參照后續 a 處代碼i+=1 #① 填寫 i=(i+1)%nwhile sum(flag)<3*n: 當 sum(flag)<3*n 條件成立時,表明仍有零件未開始加工tmin=que[0][heads[0]] 通過順序查找算法查找當前加工零件中最先完成的for j in range(1,m): 一個步驟if que[j][heads[j]]tmin=que[j][heads[j]]for j in range(m): tmin 時間后,que[j][heads[j]]減掉 tmin,可知que[j][heads[j]]-=tmin que[j][heads[j]]記錄每位同學當前加工零件仍需要花費的時間if que[j][heads[j]]==0 and sum(flag)<3*n: #② 如 果 一 位 同 學 當 前 加 工 零 件 已 經 完 成 , 即que[j][tails[j]]=sj[i][flag[i]] #③ que[j][heads[j]]==0 時,需要將當前零件步驟出隊,tails[j]+=1 選取下一個零件步驟入隊。heads[j]+=1 此時需要保證仍有零件未開始加工,可知第二個條件flag[i]+=1 為 sum(flag)<3*n。由于本程序采取了先劃線、再鋸i=(i+1)%n #a 割、最后銼削的算法思想,只要當前零件的三個步驟未全部開始加工,也可以實現程序效果,即flag[i]<3。處代碼為元素入隊,sj[i]為當前開始加工的零件,flag[i]為當前開始加工的零件已完成步驟的數量,則 sj[i][flag[i]]可得當前開始加工的零件后續步驟所花費的時間,即入隊元素。本空應填寫que[j][tails[j]]=sj[i][flag[i]]totaltime+=tmin tmin 累加至總時間tmax=max([que[i][heads[i]] for i in range(m)]) while 循環在最后一個零件的步驟入隊后結束,因此totaltime+=tmax m 個隊列中存在未完成的零件,所需時長分別為 m 個print('加工時長為:',totaltime) 隊列中的隊首元素 que[i][heads[i]]的值。取最大值,即為還需要加工的時長。【解析二】本題考查算法的綜合應用,涉及排序算法,二維數組、隊列等數據結構。(1) 根據題干描述,甲乙丙三人同時對零件加工,完成一個零件后就會對下一個零件加工,當 9 個零件的加工順序和加工時間依次為[8,6,6,9,10,5,4,7,8]時,甲、乙、丙三人依次分配的零件如下圖:甲 乙 丙高三技術學科 試題 第 10 頁 共 12 頁第 1 個 8 6 6第 2 個 5 9 10第 3 個 4 7 8總時間 17 22 24所以,完成所有零件的加工總時長為 24 分鐘。(2) 本小題考查冒泡排序,涉及多鍵比較。A選項是從前往后冒泡,C 選項是從后往前冒泡,A、C正確。B 選項,從代碼邏輯(內循環)看,想從后往前冒泡,但第一趟并未將 d[j][2]中的最大值排到最左側,錯誤。D 選項,索引為 len(d)-1 的數據并未參與排序,錯誤。(3) 解析:由題,sj=sort(sj)二維列表 sj 按照銼削時間降序排序,flag 數組代表 n 個零件當前已完成的工序數,totaltime 為累計加工總時長。heads,tails=[0]*m,[0]*m,que=[[0 for i in range(n*3)] for j in range(m)]可知,此處利用數組構建了 m 個隊列,第 i 個隊列的隊首指針為 heads[i],隊尾指針為 tails[i]。核心代碼分析:i=0 #由下文 i=(i+1)%n 可知 i 為零件在 flag 數組中的索引號for j in range(m): #該段程序分別給對應 m 個隊列放入了一個零件作為初始值que[j][tails[j]]=sj[i][0] #初始放入劃線工序的時間tails[j]+=1 #隊尾指針后移flag[j]+=1 #第 j 個零件的第 1 道工序, flag 數組初值為 0______①_______ #此處 i 和 j 的值保持相同,因此①處填 i=i+1while 循環的循環條件 sum(flag)<3*n 代表 所有 n 個零件的 3個工序尚未完成。#此段程序意在尋找當前正在完成的工序最早結束的隊列,即比較得到隊首元素的最小值While sum(flag)<3*n:tmin=que[0][heads[0]]for j in range(1,m):if que[j][heads[j]]tmin=que[j][heads[j]]#此段程序依次完成工序,注意時間節點 tmin 是當前 m 個隊列中最早完成工序的結束時間for j in range(m):que[j][heads[j]]-=tmin #m 個隊列隊首的工序完成 tmin 時間if que[j][heads[j]]==0 and ____②_____:#若剩余時間為 0,該工序完成。#②處需同步判斷是否所有零件的工序是否都完成了,因此②處 sum(flag)<3*n。_______________③____________#當前工序完成,下一零件的工序入隊#因此 ③處填 que[j][tails[j]]=sj[i][flag[i]]tails[j]+=1heads[j]+=1 #已完成的工序出隊flag[i]+=1 #該工序進入下一階段i=(i+1)%n #i 指向下一個待加工的零件totaltime+=tmin根據算法邏輯,上述 while 循環體結束后,que 隊列中還剩余 m個非 0 數據,此時只需要找到 m 個隊列中的最大值tmax,并將其累加到 totaltime,即為完成所有零件額加工總時長。高三技術學科 試題 第 11 頁 共 12 頁高三技術學科 試題 第 12 頁 共 12 頁 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫