一、单选题(每题3分,共30分)
|
题号
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
|
答案
|
A
|
D
|
B
|
B
|
A
|
A
|
D
|
C
|
D
|
C
|
A
|
A
|
B
|
D
|
C
|
1、据有关资料,
⼭东大学于1972年研制成功DJL-1计算机
,并于1973年投⼊运行,其综合性能居当时全国第三位
。DJL-1计算机运算控制部分所使⽤的磁心存储元件由磁心颗粒组成
,设计存贮周期为2μs(微秒)。那么该磁心存储元件相当于现代计算机的(A)。
A.内存
B.磁盘
C.
CPU
D.显⽰器
【答案】A
【题目解析】计算机基础知识题目,结合计算机历史知识作为题面,但主要考察的是计算机组成部分中的存储器,关键词是“运算控制部分使用的磁心存储元件”。相当于现代计算机的运行内存,因此选择A选项。
2、Python程序执行出现错误
,不太常见的调试手段是( D)。
A.阅读源代码
B.单步调试
C.输出执行中间结果
D.跟踪计算机执行的底层代码(如⼆进制机器码
,汇编码)
【答案】D
【题目解析】计算机基础知识题目,程序中出现错误,常用的解决办法有阅读源代码,调试,使用print函数输出中间结果观察等,A
B C 3个选项都是常用的排查错误手段
,因此选择D选项。
3、下列表达式的值与其它三个选项不相等的是哪⼀个? (B)
A.
(F)16
B.
(15)8
C.
(15)10
D.
(1111)2
【答案】B
【题目解析】考察进制转换知识,题目中的四个选项,其中A
C D 3个选项均表示十进制下15,只有B选项,在十进制下表示的数值是13与其他三个选项不同
,因此选择B选项。
4、如果要遍历字典my_dict中的所有项(键和值),应该使用如下哪种语句?(B)
A.
for key in my_dict:
B.
for key, value in my_dict.items():
C.
for value in my_dict:
D.
for key, value in my_dict:
【答案】B
【题目解析】考察Python中字典知识
,想要遍历字典的所有项包括键和值,需要使用如B选项所示的格式
,属于字典遍历键值对的固定写法 ,因此选择B选项。
5、执行下⾯Python代码后
,输出的结果是? (A)

A.
{1: 1, 2: 2, 4: 4, 5: 5}
B.
{1: 1, 2: 2, 3: 3}
C.
{1: 1, 2: 2, 5: 5}
D.
{1: 1, 2: 2, 3: 4, 4: 5}
【答案】A
【题目解析】考查字典知识,采用如题目所示的代码生成的字典为{1:
1, 2: 2, 3: 3, 4: 4, 5: 5} ,执行代码的第二行,删除键为3的键值对,因此选择A选项。
6、对于元组 t
= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 执⾏ t[::5] 将返回哪个⼦元组(A)
A.
(1, 6)
B.
(1, 2, 3, 4, 5)
C.
(6, )
D.
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
【答案】A
【题目解析】考察Python中元组知识,按照题目所表示的切片进行执行,范围是从头至尾,步长设置为5,第一个元素是1,前进五步后为6,再前进五步元组中没有相匹配的元素了
,因此选择A选项。
7、执行下⾯Python代码后
,输出的结果是? (D)

A.出错,
因为index⽅法需要两个参数
B.
4
C.
2
D.
1
【答案】D
【题目解析】考察Python中元组知识,题目所示代码是使用index函数查找第一个2的下标
,在元组中,下标从0开始,所以第一个数字2的下标是1,会打印出数字1,因此选择D选项。
8、对于列表lst
= [1, 2, 3, 4],执⾏以下哪个列表推导式可以得到[1,
4, 9, 16]? (C)
A.
[x*2 for x in lst]
B.
[x for x in lst if x > 2]
C.
[x**2 for x in lst]
D.
[x for x in range(len(lst))]
【答案】C
【题目解析】考查列表推导式知识,题目中给定的列表是1
2 3 4 ,最终需要的列表是1
4 9 16,观察对应关系,可以看到是平方的关系,其中ABD3个选项均不能满足要求
,因此选择C选项。
9、执行下⾯Python代码后
,输出的结果是? (D)

A.
[1, 2, 4, 5]
B.
[2, 3, 4, 5]
C.
[1, 3, 4, 5]
D.
[1, 2, 3, 5]
【答案】D
【题目解析】考察列表知识,题目所示的程序首先使用列表生成式将my
list中的偶数,添加到temp列表中也就是2和4,即temp
= [2, 4],接下来从my
list列表中删除temp[1],也就是删除4这个元素,剩下的元素是1
2 3 5 ,因此选择D选项。
10、在Python中,
以下哪个方法可以⽤于去除字符串两端的空白字符? (C)
A.
count()
B.
index()
C.
strip()
D.
remove()
【答案】C
【题目解析】考察字符串相关函数知识,题目中所示的函数A选项是统计数量,B选项是查找
,D选项是删除
,C选项可以去除字符串两端的空白字符
,因此选择C选项。
11、执行下⾯Python代码后
,输⼊“CCF2024”输出的结果是? (A)

A.
CCF2024
B.
&&&202&
C.
CCF&&&4
D.
&&&2024
【答案】A
【题目解析】考查字符串及相关函数使用知识,按照题目所示代码的逻辑是在遍历字符串的过程中碰到数字0和数字0跳过,其余的被替换为&字符,但是replace函数并不会修改字符串本身
这是一个需要注意的知识点,而且字符串在Python中是不可变的,因此选择A选项。
12、假设有⼀个集合s
= {1, 2, 3},
以下哪个操作会添加元素 4到集合中? (A)
A.
s.add(4)
B.
s.update(4)
C.
s.append(4)
D.
s.extend(4)
【答案】A
【题目解析】考察Python中集合知识,题目给定的四个选项中其中A选项是正确的添加元素到集合中,集合常用函数中并没有C选项和D选项,B选项这个功能是将另一个可迭代的对象添加到
现有的集合S中,但是括号内的参数必须是一个可迭代对象比如元组列表等,不能是一个单独的数字,因此选择A选项。
13、执行下⾯Python代码后
,输出的结果是? (B)

A.
{2, 3}
B.
{2, 3, 4}
C.
{3, 4}
D.
{1, 2, 3, 4, 5}
【答案】B
【题目解析】考察Python中集合知识,按照题目所示的程序,首先是集合和二集合的交集,是2和3,然后的右侧括号是二集合和三集合的交集,是3和4,然后取2
3 和3
4 的并集,最终结果为2
3 4 ,因此选择B选项。
14、执行下⾯Python代码后
,不可能输出的结果是? (D)

A.
12345
B.
54321
C.
35421
D.
12544
【答案】D
【题目解析】考查数据结构相互转换知识,首先是将字符串转换成列表,就是对应的字符全部添加到列表中,但是在将列表转换成集合的时候,这个顺序就会乱序,每次执行的输出结果是不一样的,但一定是12345打乱顺序,选项D中出现了两个4没有3这种是不可能出现的
,因此选择D选项。
15、执行下⾯Python代码后
,输出的结果是? (C)

A.
['a', 'e', 'a', 'e', 'e', 'e', 'a']
B.
['a', 'a', 'a', 'e', 'e', 'e']
C.
['a', 'e', 'a', 'a', 'a', 'e']
D.
['a', 'e', 'i', 'o', 'u']
【答案】C
【题目解析】考察列表字符串遍历知识,首先是将words中的
每一个元素取出也就是一个完整的单词取出,然后再遍历这个单词,如果说单词中有字符是aeiou这五个中的一个,就添加到列表result中,apple单词中有a和e,banana里面有3个a,cherry里面有一个e ,因此选择C选项。
二、判断题(每题2分,共20分)
|
题号
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
|
答案
|
√
|
√
|
√
|
√
|
×
|
√
|
×
|
√
|
×
|
√
|
1、小杨最近开始学习C++编程
,⽼师说C++是⼀门⾯向对象的编程语⾔,也是⼀门⾼级语⾔
。 (对)
【答案】正确
【题目解析】c++语言是面向对象编程语言,同学们学的比较多的Python也是面向对象编程语言,这些也都是高级语言,题目描述是正确的。
2、程序不⼀定满⾜有穷性
,而算法必须满足有穷性的特征(对)
【答案】正确
【题目解析】算法通常具有五个特征:输入、输出、确定性、有穷性、可行性
,而程序需要严格具备有穷性,理论上来说程序是可以无限运行下去,例如操作系统和服务器后台程序等,题目描述是正确的。
3、Python代码a
= {} 被执行后
,a的数据类型为dict。(对)
【答案】正确
【题目解析】在Python中花括号被设定为字典dict的默认格式,并不是一个集合如果想要生成一个空集合必须使用set构造函数,题目描述是正确的。
4、执行语句int('2b',
16) 后输出的结果是43。(对)
【答案】正确
【题目解析】题目所描述的代码作用是将16进制下的2b转换成十进制,转换后对应的结果是43,题目描述是正确的。
5、Python代码print(list(range(100))[::-2])被执行后
,将从大到小输出所有0-100之间所有偶数
,不含 100。(错)
【答案】错误
【题目解析】题目所描述的程序,range括号内的数字是100也就是0到99范围,切片的步长为负-2,最终输出结果是99,97,95...3,
2, 1,题目描述是错误的。
6、Python代码print("".join(sorted("GESP")))被执⾏后
,输出为 'EGPS
' 。(对)
【答案】正确
【题目解析】按照题目所给出的代码执行后是将字符串进行排序并且返回一个列表['E',
'G', 'P', 'S'],然后将对应的字母再拼接成一个字符串,最终的输出就是如题目所示的EGPS,题目描述是正确的。
7、在Python中
,使用加法运算符 +可以对两个字符串、列表、元组甚至是字典进行合并,
即以下赋值语句都是合法的。(错)

【答案】错误
【题目解析】题目所展示的四个程序能使用加法运算的,有字符串列表和元组,但是最后一个字典使用加法运算是非法运算的也就是会报错
,题目描述是错误的。
8、执行下列两段Python代码
,输出的结果相同。(对)

【答案】正确
【题目解析】题目所给出的两个代码实现的效果是相同的,最终的结果都是PSEG-FCC,第一种方法是通过循环通过IJ变量进行交换赋值,第2种方法是使用字符串切片完成的,第二段代码的第二行的含义是:对字符串进行反向切片,其中=左侧的表示含义是对字符串S进行就地赋值
,题目描述是正确的。
9、执行下列Python代码
,输出的结果是 ["banana",
"orange"]。(错)

【答案】错误
【题目解析】题目所给出的程序第一行时将字符串转换成一个集合,集合是不重复且顺序是乱的,也就是说其中不重复的字母abn顺序是有可能是任意组合,如anb,
ban等,也就是列表中不可能是完整的单词,代码的第三行会将整个字符串拆分成单个字符加入到列表中,题目描述是错误的。
10、用50元钱兑换⾯值为1元、2元、5元的纸币共25张
。每种纸币不少于1张,
问有多少种兑换⽅案 。可以使用枚举的方法来求解这个问题。(对)
【答案】正确
【题目解析】题目所描述的情景是可以通过多层循环的枚举方法来解决的,可以通过循环变量来控制纸币的张数不少于一张
,通过设置判断条件,总钱数为50元检测组合是否成立
,题目描述是正确的。
三、编程题(每题25分,共50分)
1、平衡序列
题面描述
小杨有一个包含n个正整数的序列a,他认为一个序列是平衡的当且仅当存在一个正整数i(1≤
i<n)使得序列第1个到第i个数字的总和等于第i+1个到第n个数字的总和。
小杨想请你判断序列a是否是平衡的。
输入格式
第一行包含一个正整数t,代表测试用例组数。
接下来是t组测试用例。对于每组测试用例,一共两行。
第一行包含一个正整数n,代表序列长度。
第二行包含n个正整数,代表序列a。
输出格式
对于每组测试用例,如果序列a是否是平衡的,输出Yes,否则输出No。
样例1

对于第一组测试用例,令i=2,则有1+2=3,因此序列是平衡的;
对于第二组测试用例,令i=2,则有2+3=1+4,因此序列是平衡的;
对于第三组测试用例,不存在满足要求的i。
对于全部数据,保证有1
≤ t ≤ 100,1
≤ n,ai≤ 10000。
【题目解析】
根据题面描述的要求,先按着数据组数设置好循环次数,即t次。每组数据正常输入,输入做切割操作后,过程中添加到列表中并且累加求出总和,接下来使用循环遍历列表
,每次将所得到的数值累加起来
,如果累加中tot变量等于了数组总和得一半,则剩下的一定就是另一半了,这也是为什么遍历到n-2位置的原因,至少保留一个作为平衡的另一半,最后每组数据对应一个输出(Yes/No)配合换行格式即可。
【参考程序】

2、回文拼接
题面描述
一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如,aabaa和ceddcc都是回文串,但abcd不是。
小杨有n个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为2的回文串前后拼接而成。
输入格式
第一行包含一个正整数n,代表字符串数量。
之后n行每行一个仅包含小写字母的字符串。
输出格式
对于每个字符串输出一行,如果该字符串由两个长度至少为2的回文串前后拼接而成则输出Yes,否则输出No。
样例1

对于第1,3,4个字符串,都不是由两个长度至少为2的回文串前后拼接而成。
第2个字符串由回文串aa和bbb前后拼接而成,并且两个回文串长度都至少为2。
对于全部数据,保证有1
≤ n ≤ 10,并且每个字符串的长度不超过100。
【题目解析】
首先需要清楚回文格式这样一个小概念,题面描述要求是整个字符串是否为连个回文格式的子串拼接而成的,所以可以使用循环从中间切开,分成前后很多组尝试,检测前后两个字串是否都是回文格式,题目是多组输入数据,所以循环n次,每次一个输入是,对应一个输出(Yes/No)。由于题目要求长度至少为2,所以对于每个s,测量长度后进行循环遍历使用切片求得左半部分和右半部分,通过if语句判断字符串和字符串反向后的结果是否一致
,如果一致则证明前后两个字符串都是回文格式的,标记fl
= True,根据fl的状态分支判断,输出答案即可。
【参考程序】
