资源简介 数据与数据结构 综合检测题一、选择题1.下列python语句中,执行结果一定不是“10”的为( )A.x+10 B.x-10 C.x*10 D.x%102.下列Python表达式中,书写错误的是( )A.x=!Y B.9//3 C.ac D.(x**2-6)**0.53.Python表达式10**2//6%8的值为( )A.0 B.3 C.4 D.14.语句print(2**4)的输出结果是( )A.2**4 B.8 C.16 D.325.Python表达式int(-2**2-9/5)的值是( )A.2 B.3 C.-5 D.-66.在Python中,表达式100-25*4%3的值是( )A.1 B.99 C.25 D.07.有1个队列,现有元素依次为1,2,3,4。约定:P操作是指1个入队,T操作是指队列中1个元素出队后再入队,Q操作是指队列中1个元素出队。则经过PPTQTPQ系列操作后,队列中队首到队尾的元素依次为( )A.1 B.1,3 C.3,4 D.38.有以下Python程序段:import randomk=10;que=[0]*2*kque[0]=random.randint(1,20)head=0;tail=1;i=1while i a=random.randint(1,20) if a%2!=que[tail-1]%2: que[tail]=a tail=tail+1 elif a%2!=que[head]%2: que[tail]=que[head] que[tail+1]=a tail=tail+2 head=head+1 i=i+1print(que[head:tail])运行该程序段后,输出结果不可能的是( )A.[20,1,10,5,4] B.[14,17,10,3,12]C.[5,16,5,4,13,20,11] D.[13,10,5,16,19,10,20]9.有一个栈s,经过一系列入栈、出栈操作,从栈顶到栈底的元素依次为e、f、g、h,并且已知元素i已入栈并出栈,则这五个元素的入栈顺序可能为( )A.e,f,g,h,i B.f,i,g,h,e C.g,I,f,e,h D.h,i,g,f,e10.某二叉树的后序遍历为?-?-?-?-A-D,中序遍历序列为F-B-D-A-C-E,则该二叉树的前序遍历不可能为( )A.D-B-F-A-E-C B.D-B-F-A-C-E C.D-F-B-C-A-E D.D-F-B-A-C-E11.有如下Python程序段:num="1433218";k=3n=len(num);ans=""s=[""]*n;top=-1;for i in num:while k>0 and top>-1 and s[top]>i:top-=1k-=1top+=1s[top]=iif k>0:top-=kwhile top > -1:ans=s[top]+anstop-=1print(ans)执行该程序段后,输出的内容是( )A.1321 B.1322 C.3121 D.121812.有如下Python程序段:a="Python";q=[0]*6head,tail=0,0i=len(a)-1while i>=0:if i%3!=0:q[tail]=a[i]else:q[tail]=q[head]head+=1tail+=1i-=1print(q[head:tail])当执行该程序段后,输出的结果是( )A.['n','t','y','o'] B.['n','t','y'] C.['n','o','n','t','y'] D.['n','o','n','t','y','o']13.某二叉树如图所示,下列说法正确的是( )A.该二叉树是完全二叉树 B.该二叉树有4个叶子节点C.该二叉树的中序遍历结果为BDACFE D.该二叉树用一维数组表示为['A','B','C','D','E','F']14.n为自然数,当n=1时,f(1)=2,否则f(n)=f(n-1)*3。求解当n=4时,f(4)的值是( )A.6 B.12 C.36 D.5415.有如下Python程序段:key=int(input())i=0;j=len(a)-1s=""while i<=j:m=(i+j+1)//2if key==a[m]:breakif keyj=m-1else:i=m+1s+=str(a[m])+","print(s[:-1])若数组元素a的值为[6,15,18,20,25,30,35,38,41,46],输入正整数key值,执行该程序段,输出的值可能是( )A.30,20 B.30,41,38 C.25,15,6 D.25,38,4116.若对变量r的值进行0和1之间的转换运算,下列选项中无法实现此功能的是( )A.r=1-r B.r=abs(r-1)C.r=(r+1)%2 D.r=r%2+117.Python中,下列用于交换x,y 两个变量的值的语句,不正确的是( )A.x=y;y=x B.t=x;x=y;y=tC.t=x+y;x=t-x;y=t-y D.x,y=y,x18.已知某二叉树的后序遍历为GDBEHFCA,中序遍历为DGBAECHF,下列说法正确的是( )A.该二叉树中叶子节点有3个 B.该二叉树的前序遍历为ABDGCEHFC.该二叉树是一棵完全二叉树,树的高度为4 D.该二叉树中度为1的节点有2个19.Python表达式3*4**2%10的值是()A.0 B.2 C.4 D.820.有一棵二叉树,如图所示,下列说法正确的是( )A.此二叉树是完全二叉树B.此二叉树的叶子节点有3个C.此二叉树的后序遍历为F—D—B—E—C—AD.此二叉树用一维数组表示为[‘A’‘B’,‘C’,‘D’,‘E’,‘F’]二、填空题21.下面程序运行结果是( )a=10s=0if a>5: s=s+aprint(s)22.使用( )关键字来创建python自定义函数。23.已知 a = 5,那么执行语句 a += 3 之后, a 的值为 。24.print(1, 2, 3, sep=',') 的输出结果为( )25.用来接收键盘输入的函数是( ),python输出的函数是( )26.Python 标准库 math 中用来计算平方根的函数是( ),取大于等于x的最小的整数值函数是( ),求绝对值的函数是( )。27.下面程序实现从100到1000以内的水仙花数,请补全空缺内容for i in range(100,1000): a= b= (i//10)%10 c=i%10 if i== print(i)28.以下程序引入Python的math模块,使用math模块下的floor函数对命令行输入的实数进行取整n=input(“请输入一个实数:”)n2= math. floor(float(n))print(n2)该程序段划线处应填入的代码为 。29.有如下程序段:score=int(input(“请输入分数:”))if score>60:score+=20score+=10print(score)若程序运行后输入20,打印出的 score的值为 。30.在Python程序设计语言中,运行以下程序,显示的运行结果是( )a=3b=4if a+b>8: print(a)if a+b<=8: print(b)三、判断题31.在Python中,s=s+5是错误的赋值语句。( )32.数据资源是指人类社会信息活动中积累起来的以信息为核心的各类信息活动要素,但是不包括人这类因素。( )33.Python语言的表达式中,“%”是取模算术运算符。( )34.在程序语言中都规定了运算符的优先级,通常是算术运算符高于关系运算符,关系运算符高于逻辑运算符,在一个表达式中无法通过其他手段改变运算顺序。( )35.在 Python语言环境下,表达式13%2+7//2的值为4.5。 ( )四、操作题36.用Python编辑器打开“451”下的文件“计算.py”,进行以下操作并保存结果。(1)一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1,即n!=1×2×3×..×(n-1)×n。即,现计算,并输出A的值。(3)编写完成后原名保存并关闭应用软件。def jc(n): #利用递归的方法求n! if n == 0 or : return else: return n=int(input('请输入正整数n:'))if n>0: #如果n为正数,且为整数 A = #计算A的值 print('A=', A)else:print('输入的数据有误,无法计算')37.对数组a中的n个元素进行排序,生成左右交替上升的数据序列,结果如下表所示:a(1) a(2) a(3) …… a(n-2) a(n-1) a(n)27 35 39 …… 49 39 33小华由此设计一个VB程序,功能如下:单击“排序”按钮Command1,随机生成10个两位奇数,将随机生成的数据序列显示在文本框Text1中,在文本框Text2中显示完成排序后的数据序列,运行结果如图所示。Private Sub Command1_Click()Dim a(1 To 10) As IntegerRandomizeConst n = 10For i = 1 To n a(i) = ① Text1.Text = Text1.Text + Str(a(i))Next iFor i = 1 To n \ 2 For j = n - i + 1 To i + 1 Step -1 If a(j) < a(j - 1) Then t = a(j - 1) ② a(j) = t End If Next j For j = i + 1 To n - i If Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next jNext iFor i = 1 To n Text2.Text = Text2.Text + Str(a(i))Next iEnd Sub(1)代码Command1_Click()中的Click属于(单选,填字母:A.对象名/B.事件名/C.方法名/D.事件处理过程名)。(2)程序代码中,划线①处的代码可能是 (单选,填字母)。A.Int(Rnd * 88) + 11 B.Int(Rnd * 89) + 11C.Int(Rnd * 44) * 2 + 11 D.Int(Rnd * 45) * 2 + 11程序代码中,在划线②处填入合适的代码。(3)程序代码中,加框处语句有错,请改正。改正:38.AB两个篮球队进行了多场比赛,现在要统计比分并确定获胜球队。计分规则是胜场多的队伍获胜,若胜场相同,则计算累计小分(小分=本队得分-对手得分),小分多获胜,若还是相同,则算平局。小蓝同学根据上述算法编写了一个VB程序实现比赛结果统计。每场比分记录在文本框Text1中,单击“统计”按钮command1,把两队每场按AB两队比分差降序显示在列表框list1中,同时在文本框Text2输出最终结果。部分程序界面如图所示。Private sub command1_click() Dim a(1 to 20) as integer,b(1 to 20) as integer,i as integer Dim j as integer,t as integer,p as integer,k as integer,xiaofen as integer‘从文本框读取AB两队各场的比分分别存数组a、b,场次k,代码略 For i=1 to k-1For j= 1 to If then t=a(j):a(j)=a(j+1):a(j+1)=t t=b(j):b(j)=b(j+1):b(j+1)=t End ifNext jNext ip=0 : xiaofen=0For i=1 to k if a(i)>b(i) then xiaofen = xiaofen+a(i)-b(i) List1.Additem str(a(i)) + “:”+ str(b(i))Next iIf p*2>k or k=p*2 and xiaofen>0 thenText2.text = “A队获胜”Elseif then Text2.text = “B队获胜”ElseText2.text = “两队平局”End ifEnd sub(1)在程序划线处填入合适代码,使程序完整(2)加框处代码有错误,请改正。(3)若希望程序在运行时列表框list1内容清空,则应该在代码中添加语句 (单选,填字母:A.list1.additem B.list1.clear C.list1.caption )39.查找最短26个字母字符串:在文本框Text1中输入任意一串包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮command1,若无解,则在标签Label1中输出“无解!”,反之程序在标签Label1中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示:(1)确定初始右边界:从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。(2)调整子串左边界:若左边界有重复的字母则表明该子串可缩短,故左边可右移1位……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。(3)调整子串右边界:子串右边界继续右移,在新子串符合条件后,记录并进行比较。重复(2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。实现上述功能的VB程序如下,请回答下列问题。(1)对于字符串“qbwcadsgeqbdatcy”,包括字母“abcde”的最短字符串长度为 (填数字)。(2)请在画线处填入合适的代码。Const n = 300Dim i As Integer, k As Integer, length As Integer, L As IntegerDim pos As Integer, s1 As String, res As StringDim f(1 To 26)As Integer '数组f记录每个小写英文字母的出现次数Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置Private Sub Command1_Click() res = "" s1 = Text1.Text For i = 1 To Len(s1) s(i)=① Next i k = 0: pos = 1: length = n For i = 1 To 26 f(i)= 0 Next i For i = 1 To Len(s1) If f(s(i))= 0 Then k = k + 1 f(s(i))= f(s(i))+ 1 '调整右边界,直到达到26个字母 Do While② f(s(pos))= f(s(pos))- 1 If③ Then k = k - 1 If i - pos + 1 < length Then length = i - pos + 1 res = Mid(s1, pos, length) L = pos End If End If pos = pos + 1 Loop Next i If res <> "" Then Text2.Text = res Label1.Caption = "最短长度:" + Str(length)+ "开始位置:" + Str(L) Else Label1.Caption = "无解!" End If End Sub40.某著名景点在七月份收到若干旅游公司的通告,通告中包括该公司旅游的起始时间和终止时间, 如[6,10]表示该旅行团 6 号早上到,10 号早上回。疫情期间为避免人员扎堆,公司在时间段[start, ending]进行限流操作,要求在该时间段内景点每天都接待游客,且接待的旅行团越少越好。若景点收到的旅行团的数据是[3,8]、[3,6]、[8,15]、[18,25]、[14,20]、[5,10],[10,18]、[13,18]限流时间是[4,19]。工作人员对旅行团的数据做了如下处理:①将旅行团的旅行时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序。排好序的时间段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].②从前往后遍历时间段,选择“到达时间”不大于“限流开始时间”的时间段,若有多个时间段满足条件,且时间段未超出限流时间,应选择“返回时间”最大的时间段,选择的时间段是[3,8]。③缩小限流时间[8,19],重复步骤 2,选择满足条件的时间段是[8,15],缩小限流时间[15,19],重复步骤 2,选择满足条件的时间段是[14,20],结束时间已超过限流终止时间,结束。④若在遍历时间过程中出现“到达时间”大于“限流开始时间”,景点不能每天接待旅客,则没有满足条件的旅行社。小王编写 VB 程序,程序界面如下所示,单击“排序”按钮,将旅行团的时间按照“到达时间”为主要关键字,“返回时间”为次要关键字升序排序,在 Text1 和 Text2 中输入限流的起始时间和终止时间,单击“满足条件的旅行团”按钮,在列表框输出满足条件的旅行团的时间,若没有满足条件的旅行社,则在列表框输出“没有满足条件的旅行团!”回答下列问题:(1)若景点接收到的旅行社的起始时间和终止时间分别为[5,17]、[7,18]、[4,12]、[3,8]、[2,10], 限流时间是[3,15],筛选出的旅行团的时间是(2)请在横线处填入合适的代码Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As IntegerPrivate Sub Command1_Click()' 将旅行团个数存入 n,加载 n 个旅行团的起始时间、终止时间并分别放在数组 a 和数组 b 中,代码略For i = n to 2 step -1 j=1 Do while ① If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t t = b(j): b(j) = b(j + 1): b(j + 1) = t End If j=j+1LoopNext i' 输出排好序的时间段,代码略End SubPrivate Sub Command2_Click() Dim arrivetime As Integer, leavetime As Integer start = Val(Text1.Text): ending = Val(Text2.Text) For i = 1 To n arrivetime = start If a(i) <= arrivetime Then If b(i) > leavetime Then leavetime = b(i):t=i If② Then List2.AddItem Str(a(t)) & "---" & Str(b(t)) Exit For End If Else If start < arrivetime or i = 1 Then List2.Clear List2.AddItem "没有满足条件的旅行团!" Exit For End If List2.AddItem Str(a(t)) & "---" & Str(b(t))③i = i – 1 End If Next iEnd Sub参考答案:1.D2.A3.A4.C5.C6.B7.D8.D9.D10.C11.D12.A13.C14.D15.B16.D17.A18.A19.D20.C21.1022.def23.824.1,2,325. input() print()26. sqrt() ceil() fabs()27. i//100 a*a*a+b*b*b+c*c*c:或a**3+b**3+c**3:28.import math29.3030.431.错误32.错误33.正确34.错误35.错误36. n==1 1 n*jc(n-1) 3**n/jc(n)37. B D a(j - 1)=a(j) a(j) < a(j + 1)38. k-i a(j)-b(j)>a(j+1)-b(j+1) p=p+1 p*239. 7 Asc(Mid(s1, i, 1))-96或Asc(Mid(s1, i, 1))-Asc("a")+1 k = 26 f(s(pos))= 040. [2, 10], [5, 17] j=ending start= leavetime 展开更多...... 收起↑ 资源预览