本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。
一、单选题(每题 2 分,共 30 分)
第 1 题
小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )
A. 1
B. 2
C. 3
D. 4
答案:C
第 2 题
下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。
A. (yr%400==0) || (yr%4==0)
B. (yr%400==0) || (yr%4==0 && yr%100!=0)
C. (yr%400==0) && (yr%4==0)
D. (yr%400==0) && (yr%4==0 && yr%100!=0)
答案:B
第 3 题
在Python中,下列不可做变量的是( )。
A. five-Star
B. five_star
C. fiveStar
D. _fiveStar
答案:A
第 4 题
在Python中,与 range(10) 效果相同的是( )。
A. range(0, 10, 1)
B. range(1, 10, 1)
C. range(10, 1)
D. range(10, 1, 1)
答案:A
第 5 题
print(5 % 2 and 5 % 3) 的输出是( )。
A. 1
B. 2
C. True
D. False
答案:B
第 6 题
下面Python代码执行后输出是( )。
a = 5
b = "5"
c = f"{a}" + f"{b}"
print(c)
A. 5’5’
B. 5"5"
C. 10
D. 55
答案:D
第 7 题
执行下面Python代码后,有关说法错误的是( )。
a = int(input())
b = int(input())
if a and b:
print("1")
elif not (a or b):
print("2")
elif a or b:
print("3")
else:
print("4")
A. 如果先后输入1和1,则将输出1
B. 如果先后输入0和1或者1和0,则将输出3
C. 如果先后输入0和0,则将输出2
D. 存在一组a和b的输入,输出是4
答案:D
第 8 题
某货币由5元,2元和1元组成。输入货币总金额,计算出总货币数最少的币种组成。为实现其功能,横线处应填入代码是( )。
N = int(input())
M5 = N // 5
M2 = ______________
M1 = ______________
print(f"5*{M5}+2*{M2}+1*{M1}")
A. 第1横线处应填入:N // 2
第2横线处应填入:N - M5 - M2
B. 第1横线处应填入:(N - M5 * 5) // 2
第2横线处应填入:N - M5 * 5 - M2 * 2
C. 第1横线处应填入:N - M5 * 5 // 2
第2横线处应填入:N - M5 * 5 - M2 * 2
D. 第1横线处应填入:(N - M5 * 5) // 2
第2横线处应填入:N - M5 - M2
答案:B
第 9 题
下面Python代码执行后的输出是( )。
loopCount = 0
for i in range(10):
for j in range(1, i):
loopCount += 1
print(loopCount)
A. 55
B. 45
C. 36
D. 28
答案:C
第 10 题
下面Python代码执行后的输出是( )。
loopCount = 0
for i in range(10):
for j in range(i):
if i * j % 2:
break
loopCount += 1
print(loopCount)
A. 25
B. 16
C. 10
D. 9
答案:C
第 11 题
假设下面Python代码执行过程中仅输入正负整数或0,有关说法错误的是( )。
Sum = 0
N = int(input())
while N:
Sum += N
N = int(input())
print(Sum)
A. 执行上面代码如果输入0,将终止循环
B. 执行上面代码能实现所有非0整数的求和
C. 执行上面代码第一次输入0,最后将输出0
D. 执行上面代码将陷入死循环,可将 while N: 改为 while N==0:
答案:D
第 12 题
执行下面的Python代码,有关说法正确的是( )【质数是指仅能被1和它本身整除的正整数】。
N = int(input())
Flag = True
for i in range(2,N):
if i * i > N:
break
if N % i == 0:
Flag = False
break
if Flag == True:
print(f"{N}是质数")
else:
print(f"{N}不是质数")
A. 如果输入正整数,上面代码能正确判断N是否为质数
B. 如果输入整数,上面代码能正确判断N是否为质数
C. 如果输入大于等于0的整数,上面代码能正确判断N是否质数
D. 如将 Flag = True 修改为 Flag = True if N>=2 else False 则能判断所有整数包括负整数、0、正整数是否为质数
答案:D
第 13 题
下面Python代码用于实现如下图所示的效果,其有关说法正确的是( )。
for i in range(1, 6):
for j in range(1, i+1):
print(i*j, end=" ")
print()
A. 当前代码能实现预期效果,无需调整代码
B. 如果 print() 与上一行代码对齐,则可实现预期效果
C. 如果 print() 与第一行代码对齐,则可实现预期效果
D. 删除 print() 行,则可实现预期效果
答案:A
第 14 题
下面Python代码执行后,输出是( )。
cnt1 = 0
cnt2 = 0
for i in range(10):
if i % 2 == 0:
continue
if i % 2:
cnt1 += 1
elif i % 3 == 0:
cnt2 += 1
print(cnt1,cnt2)
A. 5 2
B. 5 0
C. 0 2
D. 0 0
答案:B
第 15 题
在下面的Python代码中,N必须是小于10大于1的整数,M为正整数(大于0)。如果M整除N则为幸运数,如果M中含有N且能整除,则为超级幸运数,否则不是幸运数。程序用于判断M是否为幸运数或超级幸运数或非幸运数。阅读下面代码,有关说法正确的是( )。
N = int(input("请输入幸运数字:"))
M = int(input("请输入正整数:"))
if M % N == 0:
Lucky = True
else:
Lucky = False
while M != 0:
if M % 10 == N and Lucky == True:
print(f"{M}是{N}的超级幸运数")
break
M //= 10
else:
if Lucky == True:
print(f"{M}是{N}的幸运数")
else:
print(f"{M}非{N}的幸运数")
A. 如果N输入3,M输入36则将输出:36是3的超级幸运数
B. 如果N输入7,M输入21则将输出:21是7的幸运数
C. 如果N输入8,M输入36则将输出:36非8的超级幸运数
D. 如果N输入3,M输入63则将输出:63是3的超级幸运数
答案:D
二、判断题(每题 2 分,共 20 分)
第 16 题
GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
答案:正确
第 17 题
在Python,int()可以将类似字符串"3.14"转换为整数3。( )
答案:错误
第 18 题
Python表达式 -12 % 10 的值为2。( )
答案:错误
第 19 题
Python表达式 round(12.56, 0) 的值为13。( )
答案:错误
第 20 题
Python语句 print(N // 3, N % 3, sep = “-”) 中的N已被赋值为10,则该语句执行后输出是3-1。 ( )
答案:正确
第 21 题
在Python代码中,不可以将变量命名为input,因为input是Python语言的关键字。( )
答案:错误
第 22 题
下面Python代码执行后将导致死循环。( )
for i in range(10):
continue
答案:错误
第 23 题
下面Python代码执行后将输出10。( )
cnt = 0
for i in range(10):
for j in range(i):
cnt += 1
break
print(cnt)
答案:错误
第 24 题
下面Python代码执行后,将输出5。( )
cnt = 0
for i in range(1,5):
for j in range(i,5,i):
if i * j % 2 == 0:
cnt += 1
print(cnt)
答案:正确
第 25 题
下面Python代码能实现正整数各位数字之和。( )
N = int(input())
Sum = 0
while N != 0:
Sum += N % 10
N //= 10
print(Sum)
答案:正确
三、编程题(每题 25 分,共 50 分)
第 26 题
试题名称:平方之和
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨有 个正整数 a1,a2,…,an,他想知道对于所有的 i(1 <= i <= n ),是否存在两个正整数 x 和 y 满足 x * x + y * y = ai。
输入格式
第一行包含一个正整数 n,代表正整数数量。
之后 n 行,每行包含一个正整数,代表 ai。
输出格式
对于每个正整数 ai,如果存在两个正整数 x 和 y 满足 x * x + y * y = ai,输出 Yes,否则输出 No。
样例1
2
5
4
Yes
No
样例解释
对于第一个正整数,存在 1 * 1 + 2 * 2 = 5,因此答案为 Yes。
数据范围
对于全部数据,保证有 1 <= n <= 10, 1 <= ai <= 10^6 。
参考程序
import math
def check(x):
if x<=0:
return False
y = int(math.sqrt(x))
if y*y==x:
return True
return False
t = int(input())
for ii in range(0,t):
n = int(input())
fl = 0
for i in range(1,n+1):
j = n-i*i
if check(j):
fl=1
break
if fl==1:
print("Yes")
else:
print("No")
第 27 题
试题名称:计数
时间限制:1.0 s
内存限制:512.0 MB
题面描述
小杨认为自己的幸运数是正整数 k(注:保证 1 <= k <= 9 )。小杨想知道,对于从 1 到 n 的所有正整数中, k 出现了多少次。
输入格式
第一行包含一个正整数 n。
第二行包含一个正整数 k。
输出格式
输出从 1 到 n 的所有正整数中, k 出现的次数。
样例1
25
2
9
样例解释
从 1 到 25 中, 2 出现的正整数有 2,12,20,21,22,23,24,25,一共出现了 9 次。
数据范围
对于全部数据,保证有 1 <= n <= 1000, 1 <= k <= 9。
参考程序
def check(x,y):
cnt = 0
while x>0:
tmp = x%10
if tmp==y:
cnt+=1
x=int(x/10)
return cnt
n = int(input())
k = int(input())
ans = 0
for i in range(1,n+1):
ans += check(i,k)
print(ans)