Python编程(1~6级)全部真题・点这里
C/C++编程(1~8级)全部真题・点这里
一、单选题(共25题,每题2分,共50分)
第1题
执行以下程序
a=[33,55,22,77]
a.sort()
for i in a:print(i)
运行结果是?( )
A:33 55 22 77
B:22 33 55 77
C:55 33 22 77
D:77 55 33 22
答案:B
程序首先定义了一个列表(数组)a,其中包含了四个整数元素。然后使用 sort() 方法对列表a进行升序排序。所以,最终的输出结果是22、33、55、77,按照升序排列。因此,选项B是正确答案。
第2题
运行以下程序
a=eval(input("年龄:"))
if a > 10:b=30
else:b=15
print("票价:",b)
当输入12时,输出结果为?( )
A:票价: 12
B:票价: 15
C:票价: 30
D:票价: 10
答案:C
根据程序逻辑,如果输入的年龄大于10岁(a > 10),则变量b的值为30,否则(即输入的年龄小于等于10岁),变量b的值为15。在此情况下,输入的年龄为12,大于10岁,所以变量b的值为30。因此,输出结果为"票价: 30",选项C是正确答案。
第3题
执行以下程序
a={'gj':'china','nl':12,'xb':'女'}
a['nl']=11
del a['gj']
a['xm']='xxs'
print(a)
运行结果是?( )
A:{‘gj’:‘china’,‘nl’:11,‘xb’:‘女’}
B:{‘nl’:11,‘xb’:‘女’}
C:{‘nl’: 11, ‘xb’: ‘女’, ‘xm’: ‘xxs’}
D:{‘nl’: 12, ‘xm’: ‘xxs’, ‘xb’: ‘女’}
答案:C
程序首先定义了一个字典a,其中包含了三个键值对。然后,程序对字典a进行了一系列操作。
a[‘nl’] = 11:将键’nl’对应的值从12修改为11。
del a[‘gj’]:删除键’gj’及其对应的值。
a[‘xm’] = ‘xxs’:添加一个新的键值对,键为’xm’,值为’xxs’。
最终的输出结果为修改后的字典a,即{‘nl’: 11, ‘xb’: ‘女’, ‘xm’: ‘xxs’}。因此,选项C是正确答案。
第4题
执行以下程序
l=['i','love','you','!']
l='.'.join(l)
l=l.split('.')
l=' '.join(l)
print(l)
运行结果是?( )
A:iloveyou!
B:i.love.you.!
C:i love you !
D:[‘i’, ‘love’, ‘you’, ‘!’]
答案:C
程序首先定义了一个列表l,其中包含了四个字符串元素。
l = ‘.’.join(l):使用.作为分隔符,将列表l中的元素连接成一个字符串。此时,l的值变为"i.love.you.!"。
l = l.split(‘.’):使用.作为分隔符,将字符串l拆分成一个新的列表。此时,l的值变为[‘i’, ‘love’, ‘you’, ‘!’]。
l = ’ '.join(l):使用空格作为分隔符,将列表l中的元素连接成一个字符串。此时,l的值变为"i love you !"。
最终的输出结果为字符串"i love you !"。因此,选项C是正确答案。
第5题
以下程序功能是?( )
a=0
for i in range(1,100):if (i%2==0):a=a+1
print(a)
A:计算并输出100以内(不含0和100)所有数字的和
B:计算并输出1-100所有数字的和,输出5050
C:统计并输出100以内(不含0和100)偶数个数,输出50
D:统计并输出100以内(不含0和100)偶数个数,输出49
答案:D
程序使用一个for循环,迭代变量i从1到99(不包括0和100)。
在循环中,使用条件判断语句if (i%2==0)判断当前的i是否为偶数。如果i是偶数,则执行a=a+1,将变量a的值增加1。
最后,循环结束后,输出变量a的值,即统计到的偶数个数。
由于在1到99之间,有49个偶数(2, 4, 6, … , 98),所以输出结果为49。因此,选项D是正确答案。非常抱歉给您带来的困惑。
第6题
以下程序执行后的结果是?( )
s='Kevin likes English.'
new=''
for i in range(len(s)):if i%3==0:new+=s[i]
print(new)
A:enisni.
B:KileEls
C:KvnlksEgih
D:KileElh
答案:D
程序首先定义了一个字符串s。然后,使用一个for循环来迭代变量i,范围是字符串s的长度(即字符的个数)。
在循环中,使用条件判断语句if i%3==0,判断当前的i是否为3的倍数。如果是,就将字符串s中对应位置的字符添加到新字符串new中。
根据给定的字符串s=‘Kevin likes English.’,我们可以得到以下对应关系:
i=0,s[0]=‘K’
i=3,s[3]=‘i’
i=6,s[6]=‘E’
i=9,s[9]=‘l’
i=12,s[12]=‘h’
最终,新字符串new的值为’KileElh’。因此,选项D是正确答案。非常抱歉给您带来的困惑。
第7题
对于元组tup=(‘富强’,‘民主’,‘文明’,‘和谐’,‘爱国’)操作正确的是?( )
A:tup[2:4:2] = (‘敬业’)
B:tup[4]=‘敬业’
C:del tup[4]
D:tup*3
答案:C
元组是不可变的数据结构,无法通过索引或切片来修改元组的元素。因此,选项A和选项B都是错误的。
选项C中的del tup[4]试图删除元组tup中索引为4的元素,但会引发TypeError,因为元组不支持删除操作。所以,选项C也是错误的。
选项D中的tup*3表示将元组tup重复三次,生成一个新的元组。这是合法的操作,结果将是一个包含重复元素的新元组。所以,选项D是正确的。
因此,选项D:tup*3 是正确答案。
第8题
下列程序的第四行横线处输入哪个选项中的代码不能打印出九九乘法表?( )
for i in range(1,10):#第一行for j in range(1,10): #第二行if j<=i: #第三行___________#第四行print("")
A:print(“{}*{}={}”.format(j,i,i*j),‘’,end=‘’)
B:print(“%d*%d=%d” % (j,i,i*j),end=" “)
C:print(j,‘*’,i,‘=’,i*j,‘’,end=‘’)
D:print(”{}*{}={}".format({j*i={i*j}}),‘’,end=‘’)
答案:D
九九乘法表是一个表格形式的输出,需要按照特定的格式打印每个乘法表达式。选项A、B和C都提供了正确的输出格式,可以打印出九九乘法表。
然而,选项D中的代码使用了错误的语法。{j*i={i*j}}部分试图在格式化字符串中使用嵌套的字典赋值操作,这是无效的语法。因此,选项D不能打印出正确的九九乘法表。
因此,选项D:print(“{}{}={}”.format({ji={i*j}}),‘’,end=‘’) 中的代码不能打印出九九乘法表。
第9题
下面的语句哪个会无限循环执行下去?( )
A:
for a in range(10):print(a)
B:
a=1
while True:print(a)if a==3:breaka=a+1
C:
a=1
while True:print(a)if a==3:continuea=a+1
D:
a=[1,0,2]
for i in a:if not i:continueprint(i)
答案:C
在选项C中,同样使用了一个无限循环while True,它会一直循环执行下去。在循环中,输出变量a的值,并通过条件判断语句判断a是否等于3。如果a等于3,则使用continue语句跳过当前迭代,继续下一次循环,而不执行后续的代码。然后,a的值递增。由于循环条件while True永远为真,所以循环将无限执行下去。
第10题
某商场促销打折,打折规定如下:消费500元以内的打8.8折;满500元(含500)的打8折,满1000元及以上的打7折。要编程解决该问题,需要用到的控制语句是?( )
A:赋值语句
B:选择(分支)结构语句
C:循环结构语句
D:输入输出语句
答案:B
根据给定的条件,需要根据消费金额的不同情况来确定打折的折扣率。这涉及到根据条件选择不同的分支进行执行。
选择(分支)结构语句,如if语句或switch语句,可以根据条件的真假或取值,选择相应的分支进行执行。在这种情况下,我们可以使用if语句来判断消费金额的范围,并根据不同的范围执行相应的打折操作。
第11题
以下语句不能创建字典的是?( )
A:dic={}
B:dic={12:34}
C:dic={[12]:[34]}
D:dic={(12):(34)}
答案:C
字典是Python中的一种数据结构,由键-值对组成。在字典中,键必须是可哈希的,而列表是不可哈希的。因此,选项C中的[12]作为键是一个列表,无法作为字典的键,会导致TypeError。正确的方式是使用可哈希的类型作为键,如整数、字符串等。
选项A、B和D中的语句都可以创建字典,分别表示空字典、具有一个键值对的字典以及具有一个键值对且键和值都是可哈希的字典。
因此,选项C:dic={[12]:[34]} 是不能创建字典的。
第12题
执行下列代码后,运行结果是?( )
stu={'202101':'小明','202102':'小红','202103':'小丽'}
print(len(stu))
A:0
B:1
C:3
D:6
答案:C
给定的代码定义了一个名为stu的字典,其中包含了三个键值对。每个键值对表示一个学生的学号和姓名。
len(stu)返回字典stu的元素个数,即键值对的数量。在这种情况下,字典stu中有三个键值对,所以len(stu)的结果为3。
因此,运行结果是3,对应选项C。
第13题
下列语句中变量i取值范围是0—99的是?( )
A:for i in range(101)
B:for i in range(1,100)
C:for i in range(0,101)
D:for i in range(100)
答案:D
在Python中,range()函数用于生成一个整数序列,可以指定起始值、终止值和步长。根据给定的范围,函数生成的序列包含起始值,但不包含终止值。
选项A中的range(101)生成的序列包含0到100,即取值范围是0到100,不符合要求。
选项B中的range(1,100)生成的序列包含1到99,即取值范围是1到99,不符合要求。
选项C中的range(0,101)生成的序列包含0到100,即取值范围是0到100,不符合要求。
选项D中的range(100)生成的序列包含0到99,即取值范围是0到99,符合要求。
因此,选项D:for i in range(100) 中的变量i取值范围是0—99。
第14题
执行下列程序的结果为?( )
message1={'name':'Tom','age':14,'city':'London'}
for v in message1.values():print(v,end='')
A:Tom14London
B:nameageLondon
C:name:Tom
D:Tom
答案:A
给定的程序定义了一个名为message1的字典,其中包含了三个键值对。在循环中,使用message1.values()获取字典中所有的值,并依次赋值给变量v。然后,使用print()函数打印出变量v的值,通过设置end=''参数,将输出结果连续打印在一行。
所以,循环会依次输出字典中的值,即’Tom’、14和’London’。这些值会连续打印在一行上,结果为’Tom14London’。
因此,执行下列程序的结果为:Tom14London,对应选项A。
第15题
下面代码运行的结果是?( )
tup1 = ('中国', '电子学会', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print (tup1[-1],tup2[1:5])
A:2000 (2, 3, 4, 5)
B:2000 (2, 3, 4, 5,6)
C:(2000 (2, 3, 4, 5,6))
D:1997 (1,2, 3, 4, 5)
答案:A
给定的代码定义了两个元组tup1和tup2。在第一行代码中,元组tup1包含了四个元素,分别是’中国’、‘电子学会’、1997和2000。在第二行代码中,元组tup2包含了七个元素,即数字1到7。
在print()函数中,使用了两个逗号分隔的表达式:tup1[-1]和tup2[1:5]。tup1[-1]表示访问元组tup1的最后一个元素,即2000。而tup2[1:5]表示访问元组tup2中从索引1到索引4(不包括索引5)的元素,即2、3、4、5。
所以,print()函数会输出2000和(2, 3, 4, 5)。两个值之间由一个空格分隔。
因此,代码运行的结果是:2000 (2, 3, 4, 5),对应选项A。
第16题
以下代码的输出结果是?( )
ls = [[1,2,3],'python',[[4,5,'ABC'],6],[7,8]]
print(ls[2][1])
A:5
B:P
C:4
D:6
答案:D
给定的代码定义了一个嵌套的列表ls,其中包含了多个子列表和字符串元素。在print()函数中,使用索引操作访问列表ls中的元素。
ls[2]表示访问ls中索引为2的元素,即[[4,5,‘ABC’],6]子列表。然后,再使用索引[1]访问这个子列表中索引为1的元素,即6。
所以,print()函数会输出6。
第17题
执行以下代码的结果是?( )
name=['Amir', 'Betty', 'Chales', 'Tao']
name.index("Edward ")
A:-1
B:0
C:4
D:异常报错
答案:D
代码中使用name.index("Edward ")尝试获取列表 name 中元素 "Edward " 的索引。然而,列表 name 中并不存在 "Edward " 这个元素,因此调用index()方法时会引发 ValueError 异常。所以代码会抛出异常而不会返回任何结果。
第18题
下面程序的输出结果是?( )
a=[[1,2,3],[4,5,6]]
a.sort(reverse=True)
print(a)
A:[[4,5,6],[1,2,3]]
B:[6,5,4],[3,2,1]
C:[[6,5,4],[3,2,1]]
D:[4,5,6],[1,2,3]
答案:A
该程序首先定义了一个二维列表 a,包含两个子列表 [1,2,3] 和 [4,5,6]。然后,使用 sort(reverse=True) 对列表 a 进行降序排序。由于 a 是一个二维列表,Python 默认按照子列表的第一个元素进行比较排序。因此,子列表 [4,5,6] 的第一个元素 4 大于子列表 [1,2,3] 的第一个元素 1,所以在排序后,子列表 [4,5,6] 会排在子列表 [1,2,3] 的前面。因此,最终输出的结果是 [[4,5,6],[1,2,3]]。所以选项 A 是正确的输出结果。
第19题
已知a=list(“zhangsan”),执行了a[1:7:2]后结果是?( )
A:[ ‘h’, ‘a’, ‘n’, ‘g’, ‘s’, ‘a’, ‘n’]
B:[‘z’, ‘h’, ‘a’, ‘n’, ‘g’, ‘s’, ‘a’]
C:[ ‘h’, ‘a’, ‘n’, ‘g’, ‘s’, ‘a’]
D:[‘h’, ‘n’, ‘s’]
答案:D
给定列表 a = list(“zhangsan”),切片操作 a[1:7:2] 表示从索引位置 1 到 7(不包括 7),步长为 2 的切片。在切片过程中,我们可以获取索引位置为 1、3、5 的元素。对应到列表 a 中,这些索引位置对应的元素分别是 ‘h’, ‘n’, ‘s’。因此,a[1:7:2] 的结果是 [‘h’, ‘n’, ‘s’]。所以选项 D 是正确的输出结果。
第20题
已知a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],执行del a[1:]后,a的结果是什么?( )
A:[0, 1, 2, 3, 4, 5, 6, 7, 8]
B:[1, 2, 3, 4, 5, 6, 7, 8, 9]
C:[0]
D:[0, 1]
答案:C
执行 del a[1:] 表示删除列表 a 中从索引位置 1 开始的所有元素(包括索引位置 1)。在执行这个操作后,列表 a 中只剩下索引位置 0 的元素 0。因此,a 的结果是 [0]。所以选项 C 是正确的输出结果。
第21题
下列哪一个Python列表的创建是错误的?( )
A:l=[1,3.14,“laowang”,[1,2]]
B:l=[1,3.14,laowang,[1,2]]
C:l=[1,3.14,“laowang”,(1,2)]
D:l=[]
答案:B
选项 B 的列表创建是错误的。在该选项中,laowang 没有被引号包围,因此被视为变量名而不是字符串。如果 laowang 不是一个已定义的变量,Python 会引发 NameError 异常。正确的做法是将 laowang 用引号括起来,即 l=[1,3.14,“laowang”,[1,2]],这样才能创建正确的列表。所以选项 B 是错误的。
第22题
下列关于Python列表的表达正确的是?( )
A:Python列表是包含0个或者多个对象引用的有序序列
B:python列表用小括号()表示
C:列表的长度是不可变的
D:Python列表的元素间用顿号、隔开
答案:A
选项 A 是正确的表达。Python列表是一种有序序列,可以容纳0个或者多个对象引用。列表中的元素可以是任意类型的对象,包括数字、字符串、列表、元组等。
选项 B 是错误的表达。Python列表用方括号 [] 表示,而不是小括号 ()。小括号通常用于表示元组。
选项 C 是错误的表达。列表的长度是可变的,可以通过添加、删除或修改元素来改变列表的长度。
选项 D 是错误的表达。Python列表的元素之间使用逗号 , 隔开,而不是顿号。
第23题
已知列表lis=[‘a’,‘bc’,‘def’],则执行print(len(lis))语句输出的结果是?( )
A:3
B:4
C:5
D:6
答案:A
执行 print(len(lis)) 语句会输出列表 lis 的长度。给定列表 lis=[‘a’,‘bc’,‘def’],它包含三个元素。因此,len(lis) 的结果是 3。所以选项 A 是正确的输出结果。
第24题
在python中,当列表需要动态添加元素时,可以使用( )函数添加一个新的元素到列表的尾部。
A:append()
B:del()
C:sort()
D:sorted()
答案:A
选项 A 中的 append() 函数可以用于向列表的尾部动态添加一个新的元素。它会将指定的元素添加到列表的末尾,扩展列表的长度。所以选项 A 是正确的选项。
第25题
已知t1=(2,3),t2=(4,5,6),那么t2+t1*2的结果是?( )
A:(2, 3, 2, 3, 4, 5, 6)
B:(4, 5, 6, 2, 3, 2, 3)
C:(2, 3, 4, 5, 6, 2, 3, 4, 5, 6)
D:(2, 3, 4, 5, 6)
答案:B
对于元组 t1=(2,3) 和 t2=(4,5,6),操作 t2+t1*2 遵循运算符优先级。首先,t1*2 表示将元组 t1 重复两次,得到 (2, 3, 2, 3)。然后,t2 和 (2, 3, 2, 3) 进行相加,将两个元组连接在一起。所以最终结果是 (4, 5, 6, 2, 3, 2, 3)。因此,选项 B 是正确的输出结果。
二、判断题(共10题,每题2分,共20分)
第26题
运行如下程序
s1="hi"
s2=" lanxi"
s3="!"
print(s1+s2+s3)
运行结果为hi lanxi! ( )
答案:正确
运行给定的程序会输出 “hi lanxi!”。在程序中,字符串变量 s1 的值是 “hi”,变量 s2 的值是 " lanxi",变量 s3 的值是 “!”。通过使用 + 运算符将这三个字符串连接在一起,得到结果 “hi lanxi!”。
第27题
在一段程序中,如果有break,就一定有continue。( )
答案:错误
在一段程序中,有 break 语句并不意味着一定会有 continue 语句。这两个语句在功能和使用上是不同的。
break 用于终止循环,当满足某个条件时,会立即跳出当前循环体,执行循环外的代码。
continue 用于跳过当前循环中的剩余代码,继续下一次循环的执行。
因此,有 break 语句的程序可以没有 continue 语句,它们的使用是根据具体的需求和逻辑决定的。
第28题
字符串是可变的数据类型。( )
答案:错误
在 Python 中,字符串是不可变的数据类型,意味着一旦创建了字符串对象,就无法更改其内容。当对字符串进行操作时,实际上是创建了一个新的字符串对象,而不是在原始字符串上进行修改。这是与可变数据类型(如列表)的区别,可变数据类型允许在原始对象上进行修改。
第29题
while循环的判断条件可以是任何表达式,只有当表达式的值为True的时候,才执行循环体。( )
答案:正确
在 Python 的 while 循环中,判断条件可以是任何表达式。只有当判断条件的值为 True 时,才会执行循环体中的代码。这意味着可以使用任何可以被解释为布尔值的表达式作为 while 循环的判断条件。
第30题
只有列表可以转换为元组,字符串、字典都无法转换成元组。( )
答案:错误
在 Python 中,除了列表以外,字符串、字典等数据类型也可以转换为元组。可以使用内置函数 tuple() 将这些数据类型转换为元组。
字符串转换为元组:每个字符都会成为元组中的一个元素。
字典转换为元组:字典的键会成为元组中的元素。
第31题
[1,2] in [1,2,3,4,5,6]的结果为True。( )
答案:正确
在给定的表达式 [1,2] in [1,2,3,4,5,6] 中,[1,2] 是一个列表,而 [1,2,3,4,5,6] 也是一个列表。判断 [1,2] 是否存在于 [1,2,3,4,5,6] 中,由于 [1,2] 是 [1,2,3,4,5,6] 的一个子列表,因此结果为 True。
第32题
凡是用while语句编写的循环结构,都可以用for语句实现。( )
答案:错误
虽然 while 和 for 都是用于创建循环结构的语句,但并不是所有用 while 编写的循环都可以用 for 语句实现。
while 循环适用于在满足特定条件时重复执行一段代码,而 for 循环适用于对可迭代对象(如列表、字符串、字典等)进行迭代,按照可迭代对象的顺序依次遍历其中的元素。
虽然在某些情况下可以将 while 循环转换为 for 循环,但并非所有情况都适用。有些循环结构可能更适合使用 while 循环来实现,而不是使用 for 循环。
第33题
执行下列代码后,运行结果是:Helloorld!( )
for i in "HelloWorld!":if i=="W":breakprint(i,end="")
答案:错误
在循环中,字符串 “HelloWorld!” 被逐个字符遍历。当字符 i 的值为 “W” 时,执行 break 语句,跳出循环。在循环体中,只有在 i 不等于 “W” 的情况下,才会执行 print(i, end=“”) 语句打印字符。因此,循环会输出 “Hello”。
第34题
字典是无序的。( )
答案:正确
在 Python 中,字典是一种无序的数据类型,意味着字典中的键-值对的顺序是不固定的。字典的元素是通过键来访问和操作的,而不是通过索引。因此,字典的存储和访问是基于哈希表的,而不是按照插入顺序或者其他特定的顺序存储元素。
第35题
t2=1,2,3则t2是int类型数据。( )
答案:错误
在给定的代码中,t2 被赋值为元组 (1, 2, 3),而不是整数。尽管元组中包含了整数元素,但 t2 本身仍然是一个元组类型的数据,而不是整数类型。
三、编程题(共2题,共30分)
第36题
日期计算器
设计一款日期计算程序,能否实现下面的功能:
(1)要求用户分别输入年、月、日(分三次输入) ;
(2)程序自动会根据输入的年月日计算出这一天是这一年的第几天;
(3)输出格式为:这是****年的第**天;
请输入某年某月某日,通过编程判断这一天是这一年的第几天。
下面是一个实现所述功能的Python程序示例:
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))# 定义每个月份的天数
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]# 判断是否为闰年,闰年2月有29天
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:days_in_month[1] = 29# 计算这一天是这一年的第几天
day_count = sum(days_in_month[:month-1]) + day# 输出结果
print("这是{}年的第{}天。".format(year, day_count))
这个程序首先要求用户分别输入年、月、日。然后根据输入的年份判断是否为闰年,从而确定二月的天数。接下来,通过累加每个月份的天数以及输入的日期,计算出这一天是这一年的第几天。最后,将结果以指定的格式输出。
请注意,这个程序假设输入的年、月、日是合法的,并未进行输入验证。在实际应用中,需要根据具体需求添加输入验证的逻辑。
第37题
将四句唐诗用逗号和句号连接,完整输出这首诗,必须使用变量的方法编写程序。
jvzi1=“白日依山尽”
jvzi2=“黄河入海流”
jvzi3=“欲穷千里目”
jvzi4=“更上一层楼”
输出应为"白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"
你可以使用变量和字符串拼接的方式来实现将四句唐诗连接起来的功能。下面是一个示例程序:
jvzi1 = "白日依山尽"
jvzi2 = "黄河入海流"
jvzi3 = "欲穷千里目"
jvzi4 = "更上一层楼"poem = jvzi1 + "," + jvzi2 + "。" + jvzi3 + "," + jvzi4 + "。"print(poem)
在这个程序中,我们首先定义了四个变量 jvzi1
、jvzi2
、jvzi3
、jvzi4
分别存储了四句唐诗的内容。然后使用字符串拼接的方式将它们连接起来,使用逗号和句号分隔每一句。最后将连接后的诗句打印输出。
运行上述代码将输出:“白日依山尽,黄河入海流。欲穷千里目,更上一层楼。”,符合预期的输出结果。