内容正文:
第2章 算法与程序实现
一、选择题
1.图形符号“”在流程图中表示( )
A.变量的计算与赋值 B.开始和结束
C.条件判断 D.输入和输出
2.在Python语言中对常量或变量进行运算或处理的符号称为运算符,“>”的运算符类别是( )
A.算数运算符 B.逻辑运算符 C.关系运算符 D.赋值运算符
3.已知两个字符串a="hello",b="Word",下列Python代码中能输出字符串“helloWord”的是( )
A.print("a+b") B.print("a"+"b") C.print(helloWord) D.print(a+b)
4.现代电子计算机都是采用冯•诺依曼原理,该原理的核心是( )
A.使用高级语言
B.采用高速电子元件
C.存储程序与程序控制
D.采用输入设备
5.以下Python表达式运算结果为True的是( )
A.[2] in [1,2,3] B.30//4<5 C.3>5<=7 D.1.5+2.5==4.0
6.运用Python编程处理数据时,经常会用到pandas库,其中Series是一维数据结构,下图程序运行后的结果是( )
1 import pandas
2 s=pandas.Series(["猕猴桃","水蜜桃",3,5,7])
3 print(s[2])
A.水蜜桃 B.3
C.“水蜜桃” D.“猕猴桃”“水蜜桃”
7.下列哪种算法用于解决图的最小生成树问题?( )
A.Kruskal算法 B.Prim算法 C.Dijkstra算法 D.以上都是
8.列表list1=[2,3,5,10,18,22,29],现在想要得到列表的最后一个元素29,下列选项中不能实现该功能的是( )
A.list1[6] B.list1[7] C.list1[-1] D.list1[6:7]
9.某算法部分流程图如图所示。执行这部分流程,程序可读取的输入数据依次为1,2,4,6,8,则程序结束时,输出值是( )
A.30 B.22 C.16 D.12
10.有如下Python程序段:
s="M6st-udYyn"
t=""
for i in range(len(s)):
if "a"<=s[i] and s[i]<="z":
t+=s[i]
print(t)
该程序段的功能是输出字符串s中的( )
A.小写字母个数 B.所有小写字母
C.所有数字之和 D.所有非数字字符
11.下列代码中表示为Web应用程序导入Flask框架模块的是( )
A.from f lask import Flask B.app=Flask(_ name _)
C.@app.route ('/') D._ name _=='_ main _'
12.下列代码是使用Flask Web框架编写网络应用程序,其中有错误的是( )
①from flask import Flask
②app=Flask(_ name _)
③route('/')
def index(): #代码略
④app. run()
A.① B.② C.③ D.④
二、判断题
13.使用伪代码表示算法时,可以省略一些不必要的细节。( )
14.Python os.path模块中的方法isdir()可以用来测试给定的路径是否为文件夹。( )
15.在python中,for i in range(10),i值从1变化到10,共10个循环。( )
16.在 python 中,“==”是赋值符号。( )
17.Python中的同一个变量可以被重复赋值。( )
18.自然语言表示算法时,可能会出现歧义。( )
19.Python类不支持多重继承。( )
20.创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。( )
21.表示算法的方法通常可以是流程图、伪代码和高级语言。( )
三、填空题
22.在评估程序性能时,我们通常关注 和 两个指标。
23.编写程序时,我们主要使用 来编写代码。
24.程序的基本结构包括 、 和 。
25.贪心算法在每个步骤中都选择局部最优解,以期达到全局最优解。贪心算法的两个关键要素是 和 。
26.自然语言表示算法时,通常需要使用更多的 来描述。
27.动态规划算法适用于解决具有 、最优子结构和递推关系的问题。
四、操作题
28.如果一个大于1的自然数,恰好等于它的因子之和(不含本身),如28=1+2+4+7+14,则该数被称为完全数。功能:请输出100以内所有的完全数。
打开“考生文件夹\12”文件夹中的文件“完全数.py”,请在序号处填写正确的代码,且不改变原程序的结构,并把序号删除,调试完成后保存文件。
def wanquanshu(x):
s= ①
for i in range(1,② ):
if x%i==0:
s=s+i
if ③ :
print(x)
for j in range(2,101):
wanquanshu(④ )
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.C
【详解】本题考查流程图。在流程图中,圆角矩形是开始/结束、平行四边形是输入/输出、菱形是条件判断、矩形是过程处理。故答案为C选项。
2.C
【详解】本题考查Python基础。
在Python语言中,“>”的运算符类别是关系运算符。关系运算符用于比较两个操作数的大小或关系,并返回一个布尔值(True 或 False)。故正确答案为:选项C。
3.D
【详解】本题主要考查Python输出函数。选项A,输出结果是a+b;选项B输出结果是ab;选项C会输出变量helloWord的值,如果helloWord未定义,则会报错;选项D,输出结果是helloWord,故本题选D选项。
4.C
【详解】本题主要考查计算机工作原理。现代电子计算机都是采用冯•诺依曼原理,该原理的核心是存储程序与程序控制(存储程序是指以代码的形式事先输入到计算机主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序执行结束。),故本题选C选项。
5.D
【详解】本题考查的是Python表达式。==表示相等。[2] in [1,2,3]、30//4<5、3>5<=7的值为False。1.5+2.5==4.0值为True。故本题应选D。
6.B
【详解】本题主要考查Python程序的执行。变量s索引从0开始,因此s[2]=3,故本题选B选项。
7.D
【详解】本题考查的是算法应用。Kruskal算法和Prim算法都是求解最小生成树问题的常用算法,而Dijkstra算法虽然主要用于求解最短路径问题,但也可以稍作修改用于求解最小生成树问题。不过,通常我们说的求解最小生成树问题主要指的是Kruskal算法和Prim算法。这里可能是题目的一个小错误或者陷阱,严格来说应该选择A和B。故选D。
8.B
【详解】本题主要考查Python列表数据类型。列表索引是从0开始,列表list1=[2,3,5,10,18,22,29],索引是从0~6,list1[7]会出现下标溢出错误。list1[6]=29;list1[-1]表示从右端往左截取一个字符,故list1[-1]=29;list1[6:7]表示截取索引6~7(不包括7)的字符,所以list1[6:7]=29,故本题选B选项。
9.B
【详解】本题考查程序分析。
分析程序可知,当输入的a值和k值相等时,累加循环变量i到b,输出b。a的值为1、2、4、8时,与k的值相等,累加i值。对应的i值为2、4、6、10。故b=2+4+6+10=22,故正确答案为:选项B。
10.B
【详解】本题考查Python程序。在这段程序中,通过for循环遍历字符串s的每个字符。条件if "a"<=s[i] and s[i]<="z"用于判断字符是否为小写字母。如果是小写字母,就将其添加到字符串t中。所以该程序段的功能是输出字符串s中的所有小写字母。故答案为:B。
11.A
【详解】本题考查Flask框架相关内容。Flask是一个使用Python编写的轻量级Web应用框架。from f lask import Flask 代码实现导入Flask 框架模块;app=Flask(_ name _)代码创建应用实例;@app.route('/')代码实现编写路由;_ name _=='_ main _'代码调用实例。故本题答案是A选项。
12.C
【详解】本题考查Python程序。在Flask中,定义路由应使用@app.route('/')装饰器,而选项C中的route('/')写法是错误的。故答案为:C。
13.正确
【详解】本题考查伪代码。伪代码的目的是清晰地呈现算法的核心逻辑和主要步骤,而非追求完全详细和精确到编程语言的级别。因此,在不影响理解算法本质和流程的前提下,可以省略一些在特定编程语言中才需要关注的非关键细节。这样能更突出算法的重点和关键部分,使读者更容易把握算法的整体思路。故说法正确。
14.正确
【详解】本题考查Python基础。
在Python的os.path模块中,isdir()函数用于测试给定的路径是否为一个目录(文件夹)。如果路径确实指向一个目录,则返回True;如果不是,或者路径不存在,则返回False。故正确。
15.错误
【详解】本题考查Python基础。
题目中的for循环i值是从0变化到9。故错误。
16.错误
【详解】本题考查Python基础。
在 python 中,“==”是关系运算符等于符号。赋值号是“=”。故正确答案为:错误。
17.正确
【详解】本题考查Python基础。正确。在Python中,变量是动态类型的,这意味着你可以将一个变量从一种类型更改为另一种类型,并且你可以多次为同一个变量赋值。
18.正确
【详解】本题考查算法的表示。自然语言具有丰富性和灵活性,但也正因如此,在表达算法时可能由于词汇的多义性、语法结构的多样性以及表述的模糊性而产生歧义。不同的人对同一段自然语言描述的算法可能会有不同的理解。故说法正确。
19.错误
【详解】本题考查Python基础。
实际上,Python 类是支持多重继承的。多重继承允许一个类继承自多个父类,这使得类可以继承多个父类的属性和方法。在 Python 中,这通过使用逗号分隔的基类列表在类定义时指定。故错误。
20.正确
【详解】本题考查Python基础。
在Python中,要创建一个只包含一个元素的元组,确实需要在该元素后面加上一个逗号。这是因为在Python中,圆括号()通常用于定义元组(tuple)或者作为函数调用的一部分,但如果没有逗号来明确指示这是一个元组,Python解释器可能会将圆括号内的内容解释为表达式或仅仅是一个普通的值,而不是元组。故正确。
21.正确
【详解】本题考查算法的表示。表示算法的方法有多种,常见的包括流程图,它通过图形符号直观地展示算法步骤和逻辑流程;伪代码,是一种类似编程语言但更简洁易懂的方式来描述算法逻辑;高级语言,如 C、C++、Java等可以直接编写代码来实现算法。故说法正确。
22. 时间复杂度 空间复杂度
【详解】本题考查程序性能的描述。在评估程序性能时,通常关注两个主要指标:时间复杂度和空间复杂度。时间复杂度衡量程序运行所需的时间,空间复杂度衡量程序运行所需的内存。
23.计算机语言
【详解】本题考查计算机语言。如Python、Java、C++等,它们是计算机能够理解和执行的指令集。故答案为:计算机语言。
24. 顺序结构 选择结构 循环结构
【详解】本题考查程序基本结构。程序的基本结构通常包括顺序结构、选择结构和循环结构。顺序结构是指程序按照从上到下的顺序依次执行;选择结构是指程序根据条件选择执行不同的分支;循环结构是指程序在满足一定条件下重复执行某段代码。
25. 贪心选择性质 最优子结构
【详解】本题考查的是贪心算法。贪心算法需要满足两个条件:一是贪心选择性质,即通过局部最优解可以构造全局最优解;二是最优子结构,即问题的最优解包含其子问题的最优解。
26.文字
【详解】本题考查算法的表示。自然语言在表述算法时,由于其灵活性和丰富性,往往需要运用较多的文字来详细、清晰地描述算法的步骤、逻辑和各种条件判断等。相比编程语言,自然语言的表述相对冗长,需要更多的文字量来准确传达算法的具体内容和执行过程。故答案为:文字。
27.重叠子问题
【详解】本题考查动态规划。动态规划算法通常用于解决具有特定性质的问题。“重叠子问题”指在问题的求解过程中,会多次重复出现相同的子问题。“最优子结构”意味着问题的最优解可以由子问题的最优解组合得到。“递推关系”则是能够通过已知的子问题的解逐步推导出原问题的解。当一个问题同时具备这些特征时,使用动态规划算法可以避免重复计算重叠子问题,从而提高求解效率。例如在计算斐波那契数列时,存在大量的重叠子问题,使用动态规划可以显著提高计算效率。故答案为:重叠子问题。
28. 0 x+1 x==s j
【详解】本题考查Python程序。
(1)首先将s初始化为0,是因为在计算每个数的因子之和时,需要从0开始累加。这样能确保每次计算新数的因子和时,都是从初始值开始累加。故答案为:0。
(2)使用range(1,x+1)是为了遍历从1到该数本身(不包括该数)的所有数字,以便找出能整除该数的因子。如果不包括x本身,就无法准确判断是否为完全数。故答案为:x+1。
(3)使用x==s来判断该数是否等于其因子之和。只有当数本身等于其因子之和时,才能确定该数是完全数。故答案为:x==s。
(4)在循环中调用函数wanquanshu时,传入的参数是从2到100的每个数j,这样就能依次检查每个数是否为完全数。故答案为:j。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$