資源簡介 2023-2024學年高二上學期浙教版(2019)選修一2.1 數組一、選擇題1.棧和隊列的順序存儲結構通常使用哪種數據結構( )A.鏈表 B.數組 C.樹 D.圖2.下列數據中,不屬于列表的是( )A.{10,15,20,25} B.[10,1.5,20,2.5]C.[10,15,20,25] D.[a,"b",20,25]3.鏈表和數組在存儲空間上的主要區別是什么( )A.鏈表需要連續的內存空間,數組則不需要 B.數組需要連續的內存空間,鏈表則不需要C.兩者都需要連續的內存空間 D.兩者都不需要連續的內存空間4.下列關于數據結構的說法,不正確的是( )A.數組、鏈表、隊列和棧都是常見的線性表數據結構B.數組的存儲空間是連續的,鏈表的存儲空間可以是不連續的C.每個鏈表必定有一個頭指針,同一鏈表中每個節點的結構均相同D.對數組進行操作時,若某數組元素被刪除,數組占用的存儲空間會變小5.給數組a賦值如下表,運行i=2 : i=i*i之后,讀取a(i)的值為A.7.9B.8.4C.7.6D.7.86.一維數組a(下標從0開始)中元素值依次為11--100之間的奇數,則數組元素a[k]的值是( )A.2*k+10 B.2*k+11 C.2*k+12 D.2*k+137.數組是一種采用哪種存儲結構的數據結構( )A.順序存儲結構 B.非順序存儲結構 C.索引存儲結構 D.散列存儲結構8.一個數組的第一個元素的存儲位置為1000(表示在第1000個字節處),每個元素所占空間大小為8個字節,則第5個元素的位置是( )A.1000 B.1040 C.1032 D.12569.語句Dim a&(1 To 20),b#(2,-1 To 1)定義兩個數組,其類型分別為: ( )A.二維單精度實型數組和二雙精度型數組B.二維長整型數組和二維單精度實型數組C.一維單精度實型數組和二維整型數組D.一維長整型數組和二維雙精度型數組10.在一個長度為n的數組中的第i個元素(1<=i<=n)之前插入一個新元素時,需向后移動的元素個數為( )A.i B.n-i C.n-i+1 D.n-i-111.定義數組 a(1 to 5,5)后,下列哪一個數組元素不存在( )。A.a(1,1)B.a(1,5)C.a(0,1)D.a(5,5)12.下列關于數組的描述,正確的是( )A.數組的大小是固定的,但可以有不同類型的數組元素B.數組的大小是可變的,但所有數組元素的類型必須相同C.數組的大小是固定的,所有數組元素的類型必須相同D.數組的大小是可變的,可以有不同類型的數組元素13.二維數組a的大小為n行m列,若a的存儲方式為行優先存儲,存儲a中每個元素所需的存儲空間為x,數組元素a[0][0]的存儲位置為s,則數組元素a[i][j]的存儲位置為( )A.s+(i*n+j)*x B.s+(i*m+j)*x C.s+(i+j*n)*x D.s+(i+j*m)*x14.鏈表相比于數組,在哪種情況下表現得更為高效( )A.需要頻繁查找元素 B.需要隨機訪問元素C.需要頻繁在中間插入和刪除元素 D.需要存儲大量靜態數據15.數組是一種怎樣的數據結構( )A.體現數據的線性關系 B.只能存儲相同類型的數據C.不能直接通過下標訪問元素 D.不適合用于順序遍歷數據二、填空題16.數組 d 的初始值如表所示,則 d(d(3))+d(4)的值 ( )。17.運行以下VB程序,結果是 。18.在數據結構中, 是一種允許按照索引隨機訪問元素的數據結構,它提供了快速的數據訪問能力。19.數組的特性包括: 、 、 。三、操作題20.某校舉行校園乒乓球循環賽,有n(假設n=2**k)名學生報名參加比賽,要求:①每名選手都與其他n-1名選手比賽一次;②每人每天只能賽一次;③比賽共進行n-1天,要求每天沒有選手輪空。以n=8(即k=3)為例,可以根據問題要求,制定出如圖a所示的一種循環比賽表: 圖a從八名選手的循環比賽表中可以看出,這是一個具有對稱性的方陣,可以把方陣一分為四來看:①左上角的4×4的方陣就是前四名選手的循環比賽表,而右上角的4×4的方陣就是后四名選手的循環比賽表,它們在本質上是一樣的,都是4名選手的循環比賽表,所不同的只是選手編號不同而已,將左上角方陣中的所有元素依次加上4就能得到右上角的方陣。②下方的兩個方陣同樣具有對稱性。右下角的方陣應與左上角的方陣相同,左下角的方陣應與右上角的方陣相同。可見,八名選手的循環比賽表可以由四名選手的循環比賽表根據對稱性生成,四名選手的循環比賽表可以由兩名選手的循環比賽表根據對稱性生成。那么,具有n名選手的情況可依此類推。八名選手的對稱性生成過程如圖b所示。 圖b 圖c(1)在有n(假設n恰好等于2**k)名選手參賽的循環比賽表中,將左上角方陣中的所有元素依次加上 (用k表示)就能得到右上角的方陣。(2)實現上述功能的部分python程序代碼如下,請在劃線處填入合適的代碼。#導入參賽選手名單,并將名單存入列表nlist中,nlist=["張*","李*",…],代碼略import mathn=len(nlist)#假設參賽人數n恰好為2的k次方def create_table(n): a=[[1 for i in range(n)] for j in range(n)] k=0;half=1 while k< math.log(n,2):#函數math.log(n,2)的功能為求以2為底n的對數 for i in range(half):#構造右上方方陣 for j in range(half): a[i][j+half]=① for i in range(half): #對稱交換構造下半部分方陣 for j in range(half): ② a[i+half][j+half]=a[i][j] ③ k+=1 return adef print_table(a,n): print("循環賽對戰表:",end="\n") s=" " for i in range(1,n): s=s+"第"+str(i)+"天" print(s) for x in a: for y in x: print(④ ,end=" ") print()print_table(create_table(n),n)#生成如圖c所示的循環賽對戰表21.某物流公司受委托對客戶下單的大件貨品進行打包發貨。現有三種貨品A、B、C,每件貨品的打包時間均為半小時。下午12:00開始每隔1時接受一次訂單,并非每次都有新訂單產生。公司安排的打包工作時間為12:00—18:00,假設當日訂單在工作時間內就能完成。公司有甲、乙、丙三位師傅對貨品進行打包,貨品按照甲、乙、丙的順序分配給各師傅處理,每位師傅一次打包一件貨品。打包規則:若下單時間相同,優先級越高(數字越小,優先級越高)的貨品,先全部打包完成;若不同,則下單時間更早的貨品先處理完成。訂單輸入格式示例:7A2B、4B10A(說明:4B10A指訂單中有4件B類貨品,10件A類貨品)。請編寫程序,輸出某天下午甲、乙、丙的貨品打包順序和打包報酬,甲的輸出示例:3A5B1C,200元。貨品 優先級 打包報酬(元/件) 下單時間 貨品及數量A 1 30 12:00 2B7AB 2 20 14:00 7BC 3 10 15:00 6B5C 表1 表2(1)若某天貨品下單信息如表2所示,則甲的打包順序為3A5B1C,乙的打包報酬為 元(2)定義如下convert(data)函數,參數data為一個訂單,包括貨品和數量,函數功能將訂單轉換成貨品名稱序列,如訂單2B1A1C轉換成ABBC。請在劃線處填上合適的代碼。def convert(data): num,q=0,"" qsort=["","",""] for i in range(len(data)): if data[i]>="0" and data[i]<"9": num= else: for j in range(num): q+=data[i] qsort[ord(data[i])-ord("A")]=q num,q=0,"" s=qsort[0]+qsort[1]+qsort[2] return s(3)實現該功能的Python主程序如下,請在劃線處填入合適的代碼。goods=[30,20,10]m=(18-12)*2 #12:00-18:00之間每半個小時為一個時間結點b=[ ]for i in range(m): b.append("") #append()用于在列表的末尾添加一個元素a=[["12:00","2B7A"]["14:00","7B"],["15:00","6B3C"]]for i in range(len(a)): que=convert(① ) x=(int(a[i][0][0:2])-12)*2#將時間轉換為對應的結點 while len(b[x])==3: x=x+1 while len(que)>0: t=3-len(b[x]) if len(que) t=len(que) b[x]=② if t==len(que): que="" else: que=que[t:] x+=1s1,salary="",0for i in range(m): #甲處理順序和打包報酬輸出 if b[i]!="": s1+=b[i][0] salary+=③#將s1中形如“ABBCC”的格式,轉換成“1A2B2C”的格式,代碼略print("甲處理順序和打包報酬:",s1,str(salary)+"元")#乙、丙處理順序和打包報酬輸出略四、簡答題22.描述什么是數組以及數組在編程中的作用。參考答案:1.B2.A3.B4.D5.B6.B7.A8.C9.D10.C11.C12.C13.B14.C15.A16.2017.218.數組19. 數組元素的數據類型相同 通過數組名和下標對數組元素的值進行訪問 存儲空間固定不變20. 2**(k-1) 或 2k-1 a[i][j]+half a[i+half][j]=a[i][j+half] half*=2 或 half= half*2 nlist[y-1]21. 180 num*10+int(data[i]) a[i][1] b[x]+que[0:t] goods[ord(b[i][0])-ord("A")] 或 goods[ord(b[i][0])-65]22.數組是一種基本的數據結構,用于存儲一系列相同類型的元素。在編程中,數組可以方便地進行批量數據處理,提供快速的數據訪問和更新。 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫