2021年3月青少年软件编程Python等级考试(四级)试卷
剩余时间 --:--:--
单选题 共 25 题
1.

 不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括?( )

2.

下列哪个不是Python第三方库的pip安装方法?( )

3.

下列关于递归的描述不正确的是?(

4.

关于函数的定义语句,以下几项中正确的是?(

5.

下列哪个不是Python中的内建函数?( )

6.

下列哪个Python语句段的时间复杂度最低?(

7.

Python程序中,设已定义函数op,它有一个整型传值参数,一个字符串型传值参数。设x,y为整型变量,z为字符串型变量,则下列能调用该函数的正确语句是?( )

8.

如果需要在某函数内部调用上一层的局部变量,则可以使用(   )关键字。

9.

运行下列程序,输出结果正确的是?(

 def fun(x,y=5):
     return x*y
 a=fun(10,10)
 print(a)
10.

下列程序段的正确运行结果是?(

def fun(m,n):
     while m!=n:
         if m>n:
             m=m-n
         else:
             n=n-m
     return m
 print(fun(24,16))
11.

用匿名函数方式求两个数中较大的数,下列定义语句格式正确的是?(

12.

某程序代码设计如下,若输入整数5,则最终输出的结果为?( )

def fact(x):
     if x==1:
         s=1
     else:
         s=fact(x-1)*x
     return s
 n=int(input("请输入一个大于1的整数:"))
 print(fact(n)+fact(n-1))
13.

已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为6次,则n的值可能为?( )

14.

调用以下函数时,语句“s=s+i”被执行的次数是?( )

 def f():
     s=0
     i=1
     while i<10:
         if i%3==0 or s%2==1:
             s=s+i
         i=i+1
     print(s)
15.

 下列关于函数的描述正确的是?(

16.

 运行以下代码,正确的打印结果是?(

def f(s):
     t=0
     max=0
     for i in s:
         if i>="0" and i<="9":
             t=t+1
         else:
             if t>max:
                 max=t
             t=0
     print(max)
 list="123ab45cd6d"
 f(list)
17.

100枚金币,其中有1枚轻1克的假金币,现在要找出这枚假金币,但身边只有1个没有刻度的天秤。小明先是将金币分成50枚一堆,共两堆称重,在轻的那一堆中又分成两堆,接着在轻的25枚中分成12,12,1三堆称重,若两堆12枚的重量相同,则假币为单独剩下的那一枚,否则在轻的那一堆中继续按照之前的办法称下去,直到找到假金币。请问小明采用的办法与哪个算法有着相似之处?( )

18.

关于Turtle库的表述中,错误的是?( )

19.

运行以下代码,输出结果正确的是?(

 a=1
 b=c=[]
 def fun(a,c):
     a=2
     c.append(a)
 fun(a,c)
 print(a,b,c)
20.

关于递归与递推方法的比较,错误的观点是?(

21.

关于python函数参数的说法正确的是?( )

22.

观察程序段,以下说法错误的是?(

def fib(n):
     if n==1 or n==2:
         s=1
     else:
         s=fib(n-1)+fib(n-2)
     return s
 m=int(input("请输入m的值(m>2):"))
 print(fib(m))
23.

10个人站一列,分苹果,问第10个人分到多少个苹果,他说比前面一个人多分到2个,依次往前,都说比前面一个人多分到2个,最后问第一个人,他说分到10个苹果。用以下函数求第10个人分到的苹果数,则应补充选项为?( )

 def  apple(n):
      if n == 1:
          return 10
      else:
          return                   
 print(apple(10))
24.

运行以下代码,正确的打印结果是?(

def f():
     c=0
     for i in range(4,51,4):
         if i%6==0:
             c=c+1
     return c
 print(f())
25.

对于下列递归式子,当n=4时,F的值是?( )

 F(n)=F(n-1)+3    F(1)=2

判断题 共 10 题
1.

 def add(a, b, c=0):

     return a+b+c

 print(add(1, 2, 4))

 这段程序的运行结果为3。

2.

设计一个程序来求xn(x的几次方)的值,算法思想是:把xn转换为x*xn-1,而xn-1又可以转换为x*xn-2,如此重复下去,直到x*x0,而x0=1,从而求出了xn的值。这个程序可以用递归来实现。

3.

使用分治算法求解,子问题不能重复。

4.

下列程序段返回的值为“Hello!Python”。

 lst="Hello!Python"
 def f():
     global lst
     lst="Hello!"
     return lst
 f()
 print(lst)
5.

python函数中,局部变量不能与全局变量重名。

6.

使用python -m pip install --upgrade pip命令能够升级pip。

7.

已有函数def demo(*p):return sum(p),表达式 demo(1, 2, 3, 4) 的值为10。

8.

sum=0
 for i in range(5):
     sum=sum+i
 print(sum)

 运行以上程序,输出结果是15

9.

算法复杂度分析的目的是分析算法的效率,以求改进。

10.

下列程序段能正确打印1。

 def f(a,b):
     a=a+b
     b=a-b
     a=a-b
     return b
 print(F(1,4))
问答题 共 3 题
1.

利用分治思想,给定一个顺序表,编写一个求出其最大值的程序。  

  根据上述算法思想,补全下列代码。   

  输入输出示例:当顺序表是 [22,13,34,4,68,15,5,58,36],输出:68  

def fun_max(num=list):  
          return max(num)  
      def fun(num):  
          n =    ①      
          if n <= 2:  
              return    ②      
          l_list, r_list = num[:n//2], num[n//2:]  
          l_max, r_max =    ③      
          return fun_max(   ④   ) 
      if __name__ == "__main__":  
          alist = [22,13,34,4,68,15,5,58,36]  
          print(fun(alist))
2.

现有n个人依次围成一圈玩游戏,从第1个人开始报数,数到第m个人出局,然后从出局的下一个人开始报数,数到第m个人又出局,...,如此反复到只剩下最后一个是胜利者。设n个人的编号分别为1,2,...,n,打印出局的顺序。  

      根据上述算法思想,补全下列代码。   

      输入输出示例:当n=10,m=4,输出如下:  

      出局的人是: 4  

      出局的人是: 8  

      出局的人是: 2  

      出局的人是: 7  

      出局的人是: 3  

      出局的人是: 10  

      出局的人是: 9  

      出局的人是: 1  

      出局的人是: 6  

      最后胜利者是: 5  

def fun(n,k):  
          L = list(   ①   ) 
          if n == 1:  
              return  
          else:  
              x = 0  
              for i in    ②      
                  x =   ③   - 1 
                  print('出局的人是:',L[x])   
                  del L[x]  
                  if x < 0:  
                      x = 0  
              print('最后胜利者是:',   ④   ) 
      fun(10,4)
3.

设计一个算法,将一个正整数分解质因数。   

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

 (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出即可。

 (2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。   

根据上述算法思想,补全下列代码。   

      输入输出示例:当n=105,输出:105= 3*5*7  

                            当n=60,输出:60= 2*2*3*5

def fun(n): 
          print('%d='%n,end=' ')  
          for i in    ①   : 
              while n!=i:  
                  if n>i and   ②   :  
                      print(i,end='*')  
                         ③      
                  else:  
                      break  
              else: 
                     ④      
                  break  
      if __name__ == "__main__":  
          while True:  
              num=input("输入一个正整数:")   
              if not num.isdigit():  
                  break  
              fun(int(num))
C++ 编辑器
输入
输出