《大学计算机基础》第五章-课后习题
第五章
程序设计基础
课后习题
一、选择题
1.下列叙述中正确的是( C )。
A. 机器语言与所用机器无关
B. 高级语言源程序可以被计算机直接识别和运行
C. Python是高级语言
D. 汇编语言是高级语言
2.用高级语言编写的程序称为( C )。
A. 目标程序
B. 可执行程序
C. 源程序
D. 连接程序
3.结构化程序设计规定的3种基本控制结构是( B )。
A. 主程序、子程序、函数
B. 顺序、选择、循环
C. 线性、非线性、树形
D. 输入、处理、输出
4.在利用计算机程序解决问题时一般要经历下列4个过程,正确的顺序是( D )。
①编写程序 ②分析问题 ③设计算法 ④运行调试
A. ①②③④
B. ②①③④
C. ①④②③
D. ②③①④
5.在数据结构的讨论中,把数据结构从逻辑上分为( A )。
A. 线性结构与非线性结构
B. 内部结构与外部结构
C. 紧凑结构与非紧凑结构
D. 静态结构与动态结构
6.数据的存储结构是指( B )。
A. 数据所占的存储空间量
B. 数据的逻辑结构在计算机中的表示
C. 数据在计算机中的顺序存储方式
D. 存储在外存中的数据
7.一个队列的进队顺序为1234,则出队顺序为( A )。
A. 1234
B. 4321
C. 1243
D. 3421
8.栈和队列的共同点是( D )。
A. 都是先进后出
B. 都是后进先出
C. 都是非线性结构
D. 只允许在端点处插入和删除
9.一个栈的入栈序列为a,b,c,则出栈序列不可能是( D )。
A. c,b,a
B. b,a,c
C. a,c,b
D. c,a,b
10.线性表若采用链式存储结构,要求内存中可用存储单元的地址( B )。
A. 一定是不连续的
B. 连续或不连续都可以
C. 部分地址必须是连续的
D. 必须是连续的
11.线性表是( A )。
A. 一个有限序列,可以为空
B. 一个有限序列,不能为空
C. 一个无限序列,可以为空
D. 一个无限序列,不能为空
12.下列叙述中正确的是( A )。
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
13.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除都是等概率的。插入一个元素时平均要移动表中的( A )个元素。
A. n/2
B. n+1/2
C. n-1/2
D. n
14.下列关于队列的叙述中正确的是( C )。
A. 在队列中只能插入数据
B. 在队列中只能删除数据
C. 队列是先进先出的线性表
D. 队列是先进后出的线性表
15.下列关于栈的叙述中正确的是( D )。
A. 在栈中只能插入数据
B. 在栈中只能删除数据
C. 栈是先进先出的线性表
D. 栈是先进后出的线性表
16.在深度为5的满二叉树中,叶子结点的个数为( C )。
A. 32
B. 31
C. 16
D. 15
17.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为( B )。
A. n+1
B. n
C. (n+1)/2
D. n/2
18.设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则T中的叶子结点数为( A )。
A. 8
B. 7
C. 6
D. 5
19.算法的空间复杂度是指( D )。
A. 算法程序的长度
B. 算法程序中的指令条数
C. 算法程序所占的存储空间
D. 算法执行过程中所需要的存储空间
20.算法分析的目的是( C )。
A. 找出数据结构的合理性
B. 研究算法中输入和输出的关系
C. 分析算法的效率以求改进
D. 分析算法的易读、易懂性
21.设栈的存储空间为S(1:m),初始状态为top=m+1。经过一系列入栈与出栈操作后,top=m,现又从栈中退出一个元素,则栈顶指针top的值为( C )。
A. m-1
B. 产生栈空错误
C. m+1
D. 0
22.设栈的存储空间为S(1:m),初始状态为top=m+1。经过一系列入栈与退栈操作后,top=1,现有一个元素进栈,则栈顶指针top的值变为( B )。
A. m
B. 发生栈满的错误
C. 2
D. 0
23.某二叉树共有7个结点,根结点在第一层,其中叶子结点只有一个,则该二叉树的深度为( D )。
A. 3
B. 4
C. 6
D. 7
24.设循环队列顺序存储空间为Q(1:50),初始状态为front=rear=50,经过一系列的入队和出队操作后,front=rear=25,该循环队列中的元素有( D )个。
A. 26
B. 25
C. 24
D. 0或50
25.设循环队列顺序存储空间为Q(1:50),初始状态为front=rear=50,经过一系列的入队和出队操作后,front=14,rear=19,该循环队列中的元素有( D )个。
A. 46
B. 45
C. 6
D. 5
26.下列叙述中正确的是( B )。
A. 循环队列是非线性结构
B. 循环队列是顺序存储结构
C. 循环队列是链式存储结构
D. 循环队列的插入运算不会发生“溢出”现象
27.设循环队列顺序存储空间为Q(1:m),初始状态为front=rear=m,经过一系列的入队与出队操作后,front=rear=m-1,则( D )。
A. 该循环队列已空
B. 该循环队列已满
C. 该循环队列中有一个元素
D. 该循环队列已空或已满
28.下列叙述中正确的是( D )。
A. 循环队列有队头和队尾两个指针,因此循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
29.对于循环队列,下列叙述中正确的是( D )。
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 以上都不对
30.Python语言的官方网站是( B )。1
2
3
4A.www.python.com
B.www.python.org
C.www.python.cn
D.www.python.edu
31.以下表示行注释的符号是( A )。
A. #
B.
C. //
D. &
32.在Python中,可以使用( A )接受用户的键盘输入。
A. input()函数
B. scanf()函数
C. getchar()函数
D. format()函数
33.以下变量名中,表示正确的是( B )。
A. for
B. score_math
C. 2score
D. name123
34.语句”eval(‘1+3//2’)”执行的结果是( B )。
A. 1+3//2
B. 2
C. 2.5
D. 1+3/2
35.以下语句执行的结果是( B )。1
print(chr(48))
A. 48
B. 0
C. 4
D. 8
37.在Python中,关系运算和逻辑运算的结果是布尔值,其值为( D )。
A. true或false
B. 1或0
C. T或F
D. True或False
38.在Python中,有这样的定义,str=”我爱我的祖国”,则str[4:6]的结果为( D )。
A. 我爱
B. 爱我
C. 我的
D. 祖国
39.以下程序的执行结果是( A )。1
2
3
4
5
6
7
8x=10
if x>0:
y=1
if x<0:
y=-1
else:
y=0
print(y)
A. 0
B. 1
C. -1
D. 出错
40.以下程序的执行结果是( C )。1
2
3
4
5
6
7
8x=-10
y=0
if x:
if x<0:
y=-1
else:
y=1
print(y)
A. 0
B. 1
C. -1
D. 出错
41.分析以下程序,while循环执行的次数为( B )。1
2
3
4
5
6i=1
while i<9:
if i%2 == 0:
print(i end=" ")
break
i+=1
A. 1
B. 2
C. 3
D. 4
42.分析以下程序,while循环执行的次数为( 死循环 )。(无正确答案)1
2
3
4
5
6i=1
while i<9:
if i%2 == 0:
print(i end=" ")
continue
i+=1
A. 4
B. 5
C. 8
D. 9
43.以下程序不能实现1+2+3+…+100的累加功能的是( D )。1
2
3
4
5
6
7
8
9
10
11
12A.s=0
for i in range(101):
s=s+i
B.s=0
for i in range(1,101):
s=s+i
C.s=0
for i in range(100,0,-1):
s=s+i
D.s=0
for i in range(100,0):
s=s+i
二、判断题
1.可以用我们日常生活中的秒表来测试算法程序运行的时间。( × )
2.程序设计的3种基本结构是顺序结构、选择结构和循环结构。 ( √ )
3.计算机可以直接识别和执行用Python语言编写的源程序。 ( × )
4.数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算3个方面。 ( √ )
5.线性的数据结构可以顺序存储,也可以链式存储。非线性的数据结构只能是链式存储。 ( × )
6.栈的删除运算通常称为退栈或出栈。 ( √ )
7.满二叉树是完全二叉树,但完全二叉树不一定是满二叉树。 ( √ )
8.二分法适用于任何线性表的查找。 ( × )
9.二叉树中叶子结点的个数总是比度数为2的结点个数多一个。 ( √ )
10.只有一个根结点的数据结构不一定是线性结构。 ( √ )
11.循环队列是指队列的元素在内存中的存储区域呈环形状态。 ( × )
12.循环队列的元素个数随队头指针和队尾指针的变化而动态变化。 ( √ )
13.Python使用缩进来体现代码之间的逻辑关系。 ( √ )
14.放在一对三引号之间的内容将被认为是注释或字符串。 ( √ )
15.在Python中,循环结构必须有else子句。 ( × )
16.在循环结构中,continue语句的作用是跳出整个循环。 ( × )
17.在Python中,可以用if作为变量名。 ( × )
18.表达式’3’*3的结果为27。 ( × )
19.表达式3/2的结果是1.5。 ( √ )
20.判断变量ch为大写字母的表达式为’A’<=ch<=’Z’。( × )
三、简答题
1.语言处理程序有什么功能?
答:将程序设计语言编写的源程序转换成机器语言的形式,以便计算机能够运行。
2.高级语言中的“高级”二字体现在哪里?
答:高级语言的表达方式接近于自然语言和数学语言,简化了程序的编写和调试过程,使编程效率提高。
3.面向过程的结构化程序设计方法有哪些特点?
答:
1.限制使用goto语句。
2.每个模块允许一个入口,一个出口。
3.整个程序自顶向下、逐步求精地分解。
4.面向对象程序设计方法有哪些特点?
答:该方法的特点是抽象性、封装性、继承性和多态性。
5.函数式编程风格有哪些特点?
答:
1.可以把函数作为参数传递给另一个函数,也就是高阶函数。
2.可以返回函数,实现闭包或惰性计算。
6.编写的程序在运行时出现了问题,应该从哪几个方面进行调试?
答:语法错误、逻辑错误、运行错误。
7.常用的数据存储表示方法有哪几种?
答:顺序存储、链接存储、索引存储、散列存储。
8.栈和队列各有什么特点?从我们的日常生活中分别列举两个应用实例。
答:栈是“先进后出”结构,队列是“先进先出”结构。
(1)栈的应用:CPU内部用于函数调用和返回。在计算机中数据的保存满足“先进后出”,都优先使用栈。
(2)队列的应用:主要用于和时间有关的地方。在操作系统中,队列是实现多任务的重要机制。
9.设有编号为a,b,c的3辆火车,顺序进入一个栈式结构的站台,试写出这3辆火车开出车站的所有可能的顺序。
答:1
2
3
4
5a,b,c;
a,c,b;
b,a,c;
b,c,a;
c,b,a。
10.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
答:
11.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?
答:至少有2^(h-1)个节点,至多有2^h-1个节点。
12.试找出分别满足下面条件的所有二叉树。
(1)前序序列和中序序列相同;
答:情况一,空树;情况二,只有一个节点的树;情况三,每个节点只有右子树。
(2)中序序列和后序序列相同;
答:情况一,空树;情况二,只有一个节点的树;情况三,每个节点只有左子树。
(3)前序序列和后序序列相同;
答:情况一,空树;情况二,只有一个节点的树。
(4)前序、中序、后序序列均相同。
答:情况一,空树;情况二,只有一个节点的树。
13.若二叉树中各节点的值均不相同,则由二叉树的前序序列和中序序列,或由其后序序列的中序列均能唯一地确定一棵二叉树,但由前序序列和后序序列却不一定能唯一地确定一棵二叉树。
(1)已知一棵二叉树的前序序列和中序序列分别为ABDGHCEFI和GDHBAECIF,请画出此二叉树;
答:
(2)已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出此二叉树;
答:
(3)已知两棵二叉树前序序列和后序序列均为AB和BA,请画出这两棵不同的二叉树。
答:
14.一颗完全二叉树共有1000个结点,它有多少个叶子结点?
答:叶子节点个数为500。
15.人机对弈,有人认为人赢不了计算机,也有人认为计算机赢不了人,你怎么认为? 给出理由。
答:我认为计算机在某些方面已经超越了人类玩家,这是因为计算机能够利用强大的计算能力和算法,可以更深入全面地思考问题并进行决策。
四、编程题
1.某商场对某商品进行优惠活动,若一次购买4件(包括4件)以上8件(不包括8件)以下,则打9折, 一次购买8件(包括8件)以上,则打8折,请设计程序根据单价和客户的购买量计算总价。
答:无。
2.输入一个整数,计算它各位上数字的和。例如,输入234,结果为2+3+4=9。
答:无。
3.输入一个整数a的值,计算a+aa+aaa+aaa+…+aa+…+aaa的和。例如,2+22+222+2222的和为2468。
答:无
4.有四个数字 1,2,3,4,统计组成互不相同且无重复数字的三位数的个数,并输出这些数字。
答:无。
2024年3月30日-31日 P273-279