资源简介 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.数组是一种基本的数据结构,用于存储一系列相同类型的元素。在编程中,数组可以方便地进行批量数据处理,提供快速的数据访问和更新。 展开更多...... 收起↑ 资源预览