stu

选择题

仅做错题和个人认为有用处的题目为记录

套1

1.某二叉树中有15个度为1的结点,16个度为2的结点,则该二叉树中总的结点数为()
A.32
B.46
C.48
D.49

答案:C

在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。由16个度为2的结点可知叶子结点个数为17,则结点结点总数为16+17+15=48,所以选C。


4、下列叙述中错误的是()。


A.线性结构也能采用链式存储结构

B.线性结构一定能采用顺序存储结构

C.有的非线性结构也能采用顺序存储结构

D.非线性结构一定不能采用顺序存储结构

答案:D

满二叉树与完全二叉树均为非线性结构,但可以按照层次进行顺序存储。本题选择D选项。


5、软件的三要素是()


A.程序、数据及相关文档

B.程序、数据和配置

C.程序、数据和工具

D.程序、数据和运行环境

答案:A

6、一个模块直接调用的下层模块的数目称为模块的()。


A.扇入数

B.扇出数

C.宽度

D.作用域

答案:B
【题目解析】
扇入数指调用一个给定模块的模块个数。
扇出数是指由一个模块直接调用的其他模块数,即一个模块直接调用的下层模块的数目。


9、在供应关系中,实体供应商和实体零件之间的联系是()。
A.多对多
B.一对一
C.多对一
D.一对多

答案:A
【题目解析】
一家供应商可提供多种零件,一种零件也可被多家供应商提供。所以实体供应商和实体零件之间的联系是多对多。

10、将实体-联系模型转换为关系模型时,实体之间多对多联系在关系模型中的实现方式是()。
A.建立新的关系
B.建立新的属性
C.增加新的关键字
D.建立新的实体

答案:A
【题目解析】
①一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键。
②一个联系转换为一个关系模式,与该联系相连的每个实体型的键以及联系的属性都转换为关系的属性。
这个关系的键分为以下三种不同的情况:
若联系为1:1,则相连的每个实体型的键均是该关系模式的候选键;
若联系为1:n,则联系对应的关系模式的键取n端实体型的键;
若联系为m:n,则联系对应的关系模式的键为参加联系的诸实体型的键的组合

11、以下不属于程序语言设计语言类别的是()。
A.解释语言
B.汇编语言
C.机器语言
D.高级语言

答案:A
【题目解析】
程序设计语言分为三类机器语言、汇编语言、高级语言。所以本题选A。

13、Python语言提供三种基本的数字类型,它们是()。


A.整数类型、二进制类型、浮点类型
B.整数类型、浮点类型、复数类型
C.整数类型、二进制类型、复数类型
D.二进制类型、浮点类型、复数类型

答案:B

16、下列关于列表的说法正确的是()。


A.列表的索引序号是从1开始的,以此类推
B.使用append()函数可以向列表的指定位置插入元素
C.列表中的值可以是任何数据类型,被称为元素或项
D.使用remove()函数可以从列表中删除元素,但必须知道元素在列表中的位置

答案:C
【题目解析】
列表的序号是从0开始的,append函数是向列表末尾插入元素,remove函数可直接删除参数元素,不需要知道所在位置。所以本题选C。

17、当键盘输入3的时候,下面输入正确的是()。

r = input("请输入半径:")
c = 3.1415 * r *2
print("{:.0f}".format(c))

A.Type Error
B.18
C.18.849
D.19

答案:A
【题目解析】
input()函数返回的是字符串类型,当用户输入的是数字的时候,需要用eval()或者float()或者int()转换成数值类型,才能参加运算。本题选A。

22、下面代码的输出结果是()。

x=10
while x:
x-=1
if x%2:
print(x,end='')
else:
pass

A.86420
B.975311
C.97531
D.864200

【您的选择】C
【题目解析】
while条件为真时进入循环体,执行循环体中的内容。
如果x的值为偶数则if条件为假,不执行任何操作,为奇数则if条件为真,输出该奇数;
进入下一次循环,判断while条件,判断是否进入循环体,执行循环体中的代码。
后面的操作类似,直到while条件不满足。经过一系列的运算,输出结果为: 97531。所以本题选C。

27、以下关于文件读写的描述中,错误的是()。

A.以追加模式打开的文件,文件存在则在原文件最后追加内容,不存在则创建
B.对文件进行读写操作之后必须关闭文件以防止文件丢失
C.文件对象的seek()方法用来返回文件指针的当前位置
D.文件对象的readlines()方法用来读取文件中的所有行,以每行为元素形成一个列表

【您的选择】C
【题目解析】
文件对象的seek方法用来移动指针的位置。所以本题选C。

29、以下关于文件描述错误的是()。

A.open 函数的参数处理模式 ’ b ’ 表示以二进制数据处理文件
B.open 函数的参数处理模式 ’ + ’ 表示可以对文件进行读和写操作
C.readline 函数表示读取文件的下一行,返回一个字符串
D.open 函数的参数处理模式 ’ a ’ 表示追加方式打开文件,删除已有内容

【您的选择】D
【题目解析】
a的打开方式并不会删除掉原文件内容。


31、下面关于组合数据类型描述错误的是 ()。

A.可以用大括号创建字典,用中括号增加新元素
B.字典的 pop 函数可以返回一个键对应的值,并删除该键值对
C.空字典和空集合都可以用大括号来创建
D.嵌套的字典数据类型可以用来表达高维数据

【您的选择】C
【题目解析】
字典可以用大括号来创建,集合只能用set()函数来创建。嵌套字典可以实现高维数据。


32、不属于Python机器学习第三方库的是()。

A.Pylons
B.tensorflow
C.keras
D.mxnet

【您的选择】A
【题目解析】
keras、tensorflow、mxnet是机器学习的第三方库。


34、以下属于 Python HTML 和 XML 解析的第三方库的是()。

A.Requests
B.Networkx
C.Beautiful Soup
D.Django

【您的选择】C 恭喜您答对了!


37、以下程序输出到test.txt的结果是()。

fo = open("text.txt",'w')
x = [90,87,93]
fo. write(",".join(str(x)))
fo.close()

A.[90,87,93]
B.,9,0,,, ,8,7,,, ,9,3,
C.90,87,93
D.[,9,0,,, ,8,7,,, ,9,3,]

【您的选择】D
【题目解析】
本题将列表转换成字符串,join会将每一个字符用‘,’串起来


38、执行以下程序后,要输出my44py45结果,该执行的选项堤()。

ls = ['my','44','py','45']
ls.reverse()

A.print(''.join(ls[-1::-1]))
B.print(''.join(ls))
C.print(''.join(ls[1:]))
D.print(''.join(ls[-1::]))

【您的选择】A
【题目解析】
本题考查字符串的切片,reverse()方法将列表反转,此时列表为['45','py','44','my'],此时利用切片是列表再次倒过来即可满足条件。


40、下面这段代码的输出结果是()。

L = 'abcd'
def f(x,result=['a','b','c','d']):
if x:
result.remove(x[-1])
f(x[:-1])
return result
print(f(L))

A.['a','b','c','d']
B.['b','c','d']
C.['a','b','c']
D.[]

【您的选择】D
【题目解析】
本题考查函数的使用,调用函数是x='abcd',只要x不为空,函数f()会被不断调用,直到x值为空,每次调用result都要删除掉x字符串的最后一位字符相等的值。最终列表也为空。

卷2

1、下列叙述中正确的是()。

A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.以上说法均不正确

【您的选择】C
【题目解析】
在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则

2、循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素退队,此时队列中的元素个数为()。

A.24
B.49
C.26
D.0

【您的选择】B
【题目解析】
当front=rear时可知队列要么为空要么队列满,题目又成功地将一个元素退队,说明之前队列为满(为空时队列中无元素),退出一个元素后队列中还有50-1=49个元素。


3、某二叉树共有730个结点,其中度为1的结点有30个,则叶子结点个数为()。

A.351
B.1
C.350
D.不存在这样的二叉树

【您的选择】D
【题目解析】
在二叉树中,
总结点数=叶子结点数+度为1的结点数+度为2的结点数
叶子节点数 等同于 度为0的节点数
度为0和度为2的结点,共有730-30=700个,
而二叉树又有如下性质:
在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
所以度为0的结点个数加上度为2的结点个数之和一定是奇数,不可能是700


4、给出二叉树前序序列为ABDEGCFH,中序序列为DBGEAFHC,则该二叉树后序序列为

A.ABDEGCFH
B.DBGEAFHC
C.DGEBHFCA
D.ABCDEFGH

【您的选择】C
【题目解析】
二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA


5、下面不属于软件工程三要素的是()。

A.环境
B.工具
C.过程
D.方法

【您的选择】A


6、软件集成测试不采用()。

A.自顶向下增量组装
B.自底向上增量组装
C.迭代式组装
D.一次性组装

【您的选择】C 恭喜您答对了!
【题目解析】
集成测试时将模块组装成程序通常采用两种方式:非增量方式组装与增量增量方式组装。
非增量方式也称为一次性组装方式;
增量方式又分为自顶向下,自底向上,自顶向下与自底向上相结合的混合增量方法


8、数据流图(DFD)的作用是()。

A.支持软件系统功能建模
B.支持软件系统的面向对象分析
C.描述软件系统的控制流
D.描述软件系统的数据结构

【您的选择】A 恭喜您答对了!
【题目解析】
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模


10、定义学生的关系模式如下:S(S#,Sn,Sex,Age,D#,Da)(其属性分别为学号、姓名、性别、年龄、所属学院、院长)该关系的范式最高是()。

A.1NF
B.2NF
C.3NF
D.BCNF

【您的选择】B 恭喜您答对了!
【题目解析】
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF。在满足第一范式的基础上,进一步满足更多要求规范则是第二范式。然后在满足第二范式的基础上,还可以再满足第三范式,以此类推。对于关系模式,若其中的每个属性都已不能再分为简单项,则它属于第一范式。若某个关系R为第一范式,并且R中每一个非主属性完全依赖于R的某个候选键,则称其为第二范式。第二范式消除了非主属性对主键的部分依赖如果关系R是第二范式,并且每个非主属性都不传递依赖于R的候选键,则称R为第三范式。(传递依赖:在关系模式中,如果Y→X,X→A,且X不决定Y和A不属于X,那么Y→A是传递依赖。)本题中,关系S满足第一范式和第二范式,但是S#→D#,D#→Da,存在传递依赖,因此不满足第三范式。该关系的范式最高是2NF。


15、以下关于语言类型的描述中,正确的是()。

A.静态语言采用解释方式执行,脚本语言采用编译方式执行
B.解释是将源代码一次性转换成目标代码同时逐条运行目标代码的过程
C.C语言是静态编译语言,Python语言是脚本语言
D.编译是将目标代码转换成源代码的过程

【您的选择】C 恭喜您答对了!
【题目解析】
高级语言根据计算机执行机制的不同可分为两类:静态语言和动态语言。静态语言采用编译方式执行,脚本语言采用解释方式执行。例如,C语言是静态语言,Python是脚本语言。编译是将源代码转换成目标代码的过程。解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。


17、以下关于函数的描述,错误的是()。

A.使用函数的目的只是为了增加代码复用。
B.函数是一种功能抽象
C.使用函数后,代码的维护难度降低了
D.函数名可以是任何有效的Python标识符

【您的选择】A 恭喜您答对了!
【题目解析】
函数是一种功能抽象,使用函数后,函数处修改则所有调用的函数处都被修改,所以大大的降低了代码的维护难度,函数名可以是任何有效的Python表示符。增加代码复用只是函数的一个优点之一。


20、以下关于分支和循环结构的描述中,错误的是()。

A.While循环只能用来实现无限循环
B.保留字break可以终止一个循环
C.所有的for分支都可以用while循环改写
D.continue可以停止后续代码的执行,从循环的开头重新执行

【您的选择】A 恭喜您答对了!
【题目解析】
Python中循环包括两种:遍历循环和无限循环。遍历循环使用保留字for依次提取遍历结构元素进行处理;无限循环使用保留字while根据判断条件执行程序。如果while中判断条件可以执行一次或两次,while中的语句块也就执行一次或两次,A项错误。循环结构有两个辅助循环控制保留字:breakcontinuebreak用来跳出最内层forwhile循环,脱离该循环后程序从循环后的代码继续执行;continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但跳不出当前循环。两者的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束循环的能力。C、D两项正确。所有的for分支都可以用while循环改写,B项正确。


21、以下关于函数优点的描述中,正确的是()。

A.函数可以表现程序的复杂度
B.函数可以使程序更加模块化
C.函数可以减少代码多次使用
D.函数便于书写

【您的选择】B 恭喜您答对了!
【题目解析】
函数定义:函数是指一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可。函数能提高应用的模块性和代码的重复利用率。


24、以下关于Python函数的描述中,错误的是()。

A.Python程序的main函数可以改变为其他名称
B.如果Python程序包含一个函数main(),这个函数与其他函数地位相同
C.Python程序可以不包含main函数
D.Python程序需要包含一个主函数且只能包含一个主函数

【您的选择】D 恭喜您答对了!
【题目解析】
Python是一种脚本解释语言,与C/C++和Java有很大的区别,没有主函数的说法。当运行单个python文件时,如文件名为a.py,则a的属性name=='_main_',并不是首先执行所谓的main函数。Python整个程序自顶向下顺序执行。


27、在Python语言中,不属于组合数据类型的是()。

A.复数类型
B.字典类型
C.列表类型
D.元组类型

【您的选择】A 恭喜您答对了!
【题目解析】
最常用的组合数据类型有大类,分别是集合类型、序列类型和映射类型。其中序列类型包括字符串类型、列表类型和元组类型,字典类型属于映射类型。


30、关于Python文件的‘+’打开模式,以下选项正确的描述是()。

A.只读模式
B.追加写模式
C.与r/w/a/x一同使用,在原功能基础上增加同时读写功能
D.覆盖写模式

【您的选择】C 恭喜您答对了!
【题目解析】
r表示只读模式,a表示追加写模式,w表示覆盖写模式,+可以和r/w/a/x一同使用,表示在原功能基础上增加同时读写功能。


32、以下代码的输出结果是()。

L1 =['abc', ['123','456']]
L2 = ['1','2','3']
print(L1 > L2)

A.TypeError: '>' not supported between instances of 'list' and 'str'
B.True
C.False
D.1

【您的选择】B 恭喜您答对了!
【题目解析】
本题考查的是两个列表的大小比较方法,列表比较大小可采用从左到右依次比较元素大小,若产生结果则不需继续比较。本题第一个元素是‘abc’和‘1’比较,字符串比较大小也是采用此方法,所以‘a’比‘1’字符大,则L1大于L2


36、以下属于 Python 脚本程序转变为可执行程序的第三方库的是:()。

A.scrapy
B.numpy
C.pyinstaller
D.requests

【您的选择】C 恭喜您答对了!
【题目解析】
numpy是主要用作数据分析,scrapy和requests主要用于爬虫, pyinstaller主要用作打包程序。


38、在Python语言中,包含矩阵运算的第三方库是()。

A.numpy
B.PyQt5
C.wordcloud
D.wxPython

【您的选择】A 恭喜您答对了!
【题目解析】
numpy是Python的一种开源数值计算扩展第三方库,用于处理数据类型相同的多维数组,简称“数组”。numpy可以用来存储和处理大型矩阵,提供了许多高级的数组编程工具,如矩阵运算、矢量处理、N维数据变换等。


39、在Python语言中,能够处理图像的第三方库是()。

A.pyinstaller
B.pyserial
C.pygame
D.PIL

【您的选择】D 恭喜您答对了!
【题目解析】
PIL库是Python语言在图像处理方面的重要的第三方库,支持图像存储、处理和显示,它能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及图像添加线条、图像和文字等操作。使用Python语言处理图像相关的程序,首选PIL库。


40、在Python语言中,属于Web开发框架第三方库的是()。

A.Mayavi
B.Flask
C.PyQt5
D.time

【您的选择】B 恭喜您答对了!
【题目解析】
在Python语言中,属于Web开发框架第三方库的有:Django库、Pyramid库和Flask库。

选择题难点

二叉树=>数据结构
数据间的关系
栈空间

补充

集合:

>>> a = {1,23,3,4,5}
>>> b = {1,2,3,54,5,7}
>>> a&b
{1, 3, 5}
>>> a^b
{2, 4, 54, 7, 23}
>>> b^a
{2, 4, 54, 23, 7}
>>> a|b
{1, 2, 3, 4, 5, 7, 54, 23}

二叉树

概念性

总结点数=叶子结点数+度为1的结点数+度为2的结点数

度数:最小为0,最大为2
度数的含义:
代表着子节点的个数
叶子节点数 =等同于=> 度为0的节点数
深度:观察树形结构即可得出
10
/ \
6 15
/ \ / \
3 8 12 18
上面二叉树深度为3


二叉树的性质:
在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

每个节点最多只有两个子节点,分别称为左子节点和右子节点。

左子树和右子树都是二叉树,且它们是互不相交的。

如果在二叉树中给每个节点赋予一个方向,使每个节点都只有一个父节点,那么这样的二叉树就称为有向二叉树(或者有向树)。

在一棵二叉树中,第i层上最多有2^(i-1)个节点。

深度为k的二叉树最多有2^k - 1个节点。

对于任意一棵非空二叉树,如果叶子节点的个数为n0,度为2的节点个数为n2,则n0 = n2 + 1

在一棵二叉树中,如果节点的左子树深度为h1,右子树深度为h2,则该节点的深度为max(h1, h2) + 1

一棵深度为k,且有2^k - 1个节点的二叉树,称为满二叉树。

一棵深度为k,且有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。

对于一棵有n个节点的完全二叉树,如果节点按照从上到下、从左到右的顺序依次编号为1,2,3,...,n,则对于任意一个节点i(1<=i<=n),有:
(1) 如果i=1,则该节点是根节点,无父节点;否则,其父节点编号为i/2
(2) 如果2i>n,则该节点无左子节点;否则,其左子节点的编号为2i。
(3) 如果2i+1>n,则该节点无右子节点;否则,其右子节点的编号为2i+1

前序中序后序

二叉树在线生成

在二叉树中,前序遍历、中序遍历、后序遍历是三种常用的遍历方式,它们分别对应不同的遍历顺序,具体定义如下:

前序遍历:先访问根节点,然后递归地访问左子树和右子树,即 根-左-右 的顺序。

中序遍历:先递归地访问左子树,然后访问根节点,最后递归地访问右子树,即 左-根-右 的顺序。

后序遍历:先递归地访问左子树和右子树,然后访问根节点,即 左-右-根 的顺序。

以下是一个示例二叉树:

1
/ \
2 3
/ \ / \
4 5 6 7

对应的前序遍历序列是:1 2 4 5 3 6 7

对应的中序遍历序列是:4 2 5 1 6 3 7

对应的后序遍历序列是:4 5 2 6 7 3 1