相关试卷
-
1、对线性表进行二分查找时,要求线性表必须( )A、以顺序方式存储 B、以顺序方式存储,且数据元素有序 C、以链接方式存储 D、以链接方式存储,且数据元素有序
-
2、现有18枚硬币,18枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻。有一台用来比较两组硬币重量的仪器,使用递归及分治法设计一个算法,找出那枚伪造的硬币。阅读下列程序代码。
def check3(a,right,left):
b=(left-right+1)//3
if right==left:
index=right+1
return index
elif right+1==left:
if a[right] < a[left]:
index=right+1
return index
else:
index=left+1
return index
else:
if sum(a[right:right+b]) == sum(a[right+b:right+2*b]):
return check3(a,right+2*b,left)
elif sum(a[right:right+b]) > sum(a[right+b:right+2*b]):
return check3(a,right+b,right+2*b-1)
else:
return check3(a,right,right+b-1)
a = [1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1]
index1=0
right0 = 0
index1= check3(a,right0,len(a))
print("你要找的假币在第",index1,"个位置")
input("运行完毕,请按回车键退出...")
假设列表a中,0表示伪造的硬币,下列说法正确的是( )
A、此程序递归部分为三分法递归查找伪造的硬币 B、sum(a[right:right+b])==sum(a[right+b:right+2*b])表示第二组的重量与第三组重量相同 C、此程序递归部分为二分法递归查找伪造的硬币 D、以上都不对 -
3、计算机在0~1000中随机产生一个数,试试看你要多少次才能猜中,阅读下列程序.
import random
num=random.randint(1, ① )
mynum=int(input('请输入mynum='))
n=1
while not( ② ):
n= n+1
if mynum<num:
print("输入的数小了")
elif mynum>num:
print("输入的数大了")
print("输入不正确,请再次输入")
mynum=int(input('请输入mynum='))
print("你猜对了!","一共用了",n,"次")
input("运行完毕,请按回车键退出...")
下列说法正确的是( )
A、①填写999 B、①填写1000 C、①填写1001,②填写mynum== num D、②填写mynum!= num -
4、汉诺塔游戏中,如果有n个木盘,第n个木盘是最大的木盘,用递归的方法求解,将n个木盘从A杆移动到C杆,需要借助中间的B杆。只要超过一个木盘,在移动过程中,总会存在起始杆、过渡杆及目标杆的问题。因此,定义函数时,用到了4个参数: hanoi(n,s,m,t), n表示需要移动的盘子数量,s表示盘子的起始杆,m表示中间过渡杆,t表示目标杆,如图所示。
阅读下列程序。
def hanno(n,s,m,t):
if n==1:
print(s,'-->',t)
else:
hanno(n-1,s,t,m)
print(s,'-->',t)
hanno(n-1,m,s,t)
#主程序
n=int(input('请输入汉诺塔的层数:'))
hanno(n,'A','B','C')
input("运行完毕,请按回车键退出...")
下列说法错误的是( )
A、此递归没有终止结束条件 B、print(s,'-->',t)表示A杆上当前最后木盘移动到C杆上 C、hanno(n-1,s,t,m)表示A杆有n个盘子现将前n-1个盘子从A杆移动到B杆上 D、hanno(n-1,m,s,t)表示将B杆上的n-1个盘子移动到C杆上 -
5、阅读如图所示的绘制x5+x4+x-3=0图像的程序代码。
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-1,2,0.01)
y=x**5+x**4+x-3
plt.plot(x,y)
plt.title('x^5+x^4+x-3')
plt.xlabel('X')
plt.ylabel('Y')
plt.show( )
下列选择错误的是( )
A、arange(-1,2,0.01)表示在-1,2之间,每隔0.01取一个点 B、plt.plot(x,y) 表示绘制图像 C、plt.xlabel('X')、plt.ylabel('Y')表示绘制X、Y轴 D、plt.show()显示图像 -
6、阅读下列用辗转相除法求解两个正整数的最大公约数的程序代码。num1=int(input('请输入第一个正整数:'))
num2=int(input('请输入第二个正整数:'))
m=max(num1,num2)
n=min(num1,num2)
r= ①
while r!=0:
m= ②
n= ③
r= ①
print('这两个数的最大公约数为:',n)
input("运行完毕,请按回车键退出...")
下列选择错误的是( )
A、①填写m % n B、这几个选择都不对 C、③填写r D、②填写n -
7、阅读下列用python解一元二次方程的程序代码。
import ①
a=float(input("请输入方程系数a(!=0):"))
b=float(input("请输入方程系数b:"))
c=float(input("请输入方程系数c:"))
d=b*b-4*a*c
if d>0:
x1=(-b+ ② )/(2*a)
x2=(-b- ② )/(2*a)
print("方程有两个不同的解",x1,x2)
elif ③ :
x1=-b/(2*a)
print("方程有两个相同的解",x1)
else:
print("方程无解")
下列选择错误的是( )
A、①填写math B、②填写math.sqrt(d) C、③填写d==0 D、以上都不对 -
8、在一千多年前的《孙子算经》中,有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?” 。即一个数除以3余2,除以5余3,除以7余2,求这个数。阅读下列程序代码。
i=0
while (①):
i=i+1
print(i)
在①处填写表达式,下列选择正桷的是( )
A、i%3!=2 and i%5!=3 and i%7!=2 B、i%3!=2 or i%5!=3 or i%7!=2 C、i%3==2 or i%5==3 or i%7==2 D、以上都不对 -
9、学校历届校友的海量数据存储在校网络中心服务器中(共10000条,无重复数据),某管理员因为误操作删除了一位校友的ID号(8位整数)信息,恰好在备份数据库中保存了一份所有人员ID号的文件(无重复数据,无序)。参考流程图阅读下列快速找出被误删的ID号程序代码
关于异或,下列选择错误的是( )
A、target=target^int(line)是异或运算 B、异或应用于逻辑运算,其运算法则为:0^0=0,1^0=1,0^1=1,1^1=0 C、0异或任何数=任何数,1异或任何数=任何数取反,任何数异或自己=把自己置0 D、以上都不对 -
10、用递归求n!,当n=1时,f(1)=1,否则f(n)=f(n-1)*n,当n=3时,递归调用顺序正确的是( )A、f(1)、f(2)、f(3) B、f(2)、f(3)、f(1) C、f(3)、f(2)、f(1) D、以上都不对
-
11、上台阶:每一步只能迈上1个或2个台阶,上完n级台阶,一共有多少种走法,下面说法正确的是( )A、用递归算法,递归关系式为f(n)=f(n-1)+2 B、用递归算法,递归关系式为f(n)=f(n-1)+f(n-2) C、用递归算法,递归关系式为f(n)=f(n+1)+f(n+2) D、用递归算法,递归关系式为f(n)=f(n-1)*2
-
12、递归也可用“分”“治”“合”三个字概括。下列说法错误的是( )A、分:将原问题分解成k个子问题 B、治:对这k个子问题分别求解,如果子问题的规模仍然不够小,则将其再分解为k个子问题,如此进行下去,直到问题足够小时,就很容易求出子问题的解 C、合:将求出的小规模问题的解合并为一个更大规模问题的解自下而上涿步求出原问题的解 D、整个递归不需要终止条件,自动返回运算结果
-
13、关于“递归”,下列说法不正确的是( )A、可以利用“递归”进行具有自相似性无限重复事物的定义 B、可以利用“递归”进行具有自重复性无限重复动作的执行,即“递归计算”或“递归执行” C、可以利用“递归”进行具有自相似性无限重复规则的算法的构造 D、递归算法的关键只要给出递归关系式即可求出问题的解
-
14、下列程序是用二分法从给定的有序数中查找并打印指定数的位置的代码。
def search(x,nums):
low = 0
heigh = len(nums)-1
while low <=heigh:
mid = ①
if x == nums[mid]:
return mid
elif x > nums[mid]:
low = ②
else:
heigh = ③
return -1
nums =[2,4,8,9,10,20,30,77,88,100]
num = int(input("请输入你要查找的数:"))
print("你要找的数在数组从0开始的第",search(num,nums),"个位置")
下列说法正确的是( )
A、①的位置为(low+heigh)//2,②的位置为mid-1,③的位置为mid+1 B、①的位置为(low+heigh)//2,②的位置为mid+1,③的位置为mid-1 C、①的位置为(low+heigh)/2,②的位置为mid-1,③的位置为mid+1 D、①的位置为(low+heigh)/2, ②的位置为mid+1,③的位置为mid-1 -
15、二分查找又叫折半查找,该方法主要将数列有序排列,采用跳跃式的方式查找数据。二分搜索算法是利用( )实现的算法A、分治法 B、动态规划 C、贪心法 D、回溯法
-
16、设有n位选手参加羽毛球循环赛,循环赛共进行n-1次,每位选手要与其他n-1位选手比赛一场,且每位选手每天比赛一场,不能轮空。实现循环赛日程表利用的算法是( )A、分治法 B、动态规划 C、贪心法 D、回溯法
-
17、“大事化小、小事化了”体现出的问题求解的思想是( )A、递推法 B、穷举法 C、分治法 D、归纳法
-
18、分治的设计思想,是将一个难以直接解决的大问题,分割成一些较小的同类问题,各个击破,最终达到解决问题的目的。分治法所能解决的问题所具有的特征,以下说法错误的是( )A、该问题可以分解为若于个规模较小的相同的子问题 B、该问题的规模足够大 C、该问题的规模缩小到一定的程度就可以很容易地解决 D、将各个子问题的解可以合并为原问题的解
-
19、斐波那契在《计算之书》中提出了一个有趣的兔子问题:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。迭代法也称辗转法,阅读下列程序代码。
def fib(n):
#迭代求Fibonacci数列
f2=f1=1
for i in range(①,n+1):
②
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为:',fib(n))
input("运行完毕,请按回车键退出...")
下列说法错误的是( )
A、确定迭代变量, 程序中的的f1、f2 B、建立迭代关系式,②处应填写:f1,f2=f2,f1+f2 C、对迭代过程进行控制,①处应填写range(3,n+1)枚举从第三个月开始 D、f1,f2=f2,f1+f2不可以用temp=f1+f2,f1=f2,f2=temp代替 -
20、matplotlib模块是Python中最出色的绘图库,功能很完善。调用 matplotlib.pyplot时,坐标系可以根据数值范围自动生成。阅读下列程序代码。
import numpy as np #加载numpy模块并取名为np
import matplotlib.pyplot as plt
x=np.arange(0,2*np.pi,0.01)
y=np.sin(x)
plt.plot(x,y)
plt.title('sin(x)')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
下列选择错误的是( )
A、import matplotlib.pyplot as plt ,加载matplotlib.pyplot并取名为plt B、x=np.arange(0,2*np.pi,0.01)为x轴区间 C、plt.plot(x,y),显示x轴、y轴 D、plt.show()显示图像