2025年3月CCF—GESP(Python二级)编程能力等级认证试卷
二级
2025
2025-06-20 11:52:42
112次
一、单选题
下面Python代码实现输出如下图形,相关说法正确的是( )。

N = int(input("请输入层数:"))
last = 1
for i in range(1,N):
for j in range(1,i + 1):
if last > 9:
last = 1
print(last,end = " ")
last += 1
print() | A. 最后一行的print()有错,应该修改为print(""),print()函数不能没有参数 |
B. last += 1修改为last = last + 1执行效果相同 |
| C. 代码中的range(1, i + 1)应修改为range(1, i) |
D. 外层for循环前的last = 1修改为last = 0执行效果相同 |
【知识点】 CCF—GESP Python二级
哥德巴赫猜想是指大于2的偶数都可以分解为两个质数之和,下面的代码用于验证4-1000之内的偶数能否分解为两个质数之和。下面Python代码中假设isPrime()是已经定义好用于判断正整数N是否为质数。对该段代码,错误的说法是( )。
for i in range(4,1000,2):
for j in range(2,i):
if isPrime(j) and isPrime(i-j):
print(f"{i}={j}+{i-j}")
break | A. 将代码 isPrime(j) and isPrime(i-j) 修改为isPrime(j) == True and isPrime(i-j) == True 效果相同 |
B. 代码执行后,输出的一对质数,一定是小的数在前 |
| C. 即便将ange(4,1000,2)中的1000修改为很大的整数,也不能说从数学上证明了哥德巴赫猜想 |
D. 根据题意,break语句应该与if对齐 |
【知识点】 CCF—GESP Python二级
在数学中N!表示N的阶乘,即1到N的乘积,如 3!=1*2*3 ,且 0! = 1 。下面的两段Python代码用于求1-N的阶乘之和,如N为3,则是 1!+2!+3! 。选项中的说法,正确的是( )。
#实现1 N = int(input()) tnt, last = 0, 1 for i in range(1,N + 1): last *= i tnt += last print(tnt)
#实现2 N = int(input()) tnt = 0 for i in range(1, N + 1): tmp = 1 for j in range(1,i + 1): tmp *= j tnt += tmp print(tnt)
| A. 虽然实现1的代码短小,但效率并不高 |
B. 实现2的代码效率更高,且更易于理解 |
| C. 实现1因为应用了前项计算结果,计算量更小,因此效率高 |
D. 两种实现,效率几乎一致 |
【知识点】 CCF—GESP Python二级
求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为5个红色球,随后3个绿色,最后为2个蓝色。每个球都有编号,从左到右依次为1,2,3……。输入整数代表编号,求该编号球的颜色。下面是Python代码的实现,正确说法是( )。
N = int(input())
remainder = N % 10 #remainder变量保存余数
if 1 <= remainder <= 5:
print("Red")
elif 6 <= remainder <= 8:
print("Green")
elif remainder == 9 or remainder == 0:
print("Blue") | A. 将 elif remainder == 9 or remainder == 0: 修改为 else 效果相同 |
B. 将 if 1 <= remainder <= 5: 修改为 if remainder <= 5: 效果相同 |
| C. elif 6 <= remainder <= 8: 写法错误,应修改为 elif 6 <= remainder and remainder <= 8: |
D. 根据题意 remainder = N % 10 应修改为 remainder = N // 10 |
【知识点】 CCF—GESP Python二级
下面Python代码用于求正整数1到N之间含有3的数的个数,横线处应填入代码先后是( )。
cnt = 0
N = int(input("请输入正整数:"))
for i in range(1,N):
while i != 0:
if i % 10 == 3:
cnt +=1
__________
else:
__________
print(cnt) | A. continue i = i // 10 |
B. break i //= 10 |
| C. continue i %= 10 |
D. break i %= 10 |
【知识点】 CCF—GESP Python二级
二、判断题
三、编程题
时间跨越
时间限制:1.0 s
内存限制:512.0 MB
题面描述
假设现在是 y年 m月 d日 h时而 k小时后是y'年m'月 d'日 h'时,对于给定的y,m,d,h,k,小杨想请你帮他计算出对应的 y',m',d', h'是多少。
输入格式
输入包含五行,每行一个正整数,分别代表y,m,d,h,k。
输出格式
输出四个正整数,代表y',m',d', h'。
输入样例
2008
2
28
23
1
输出样例
2008 2 29 0
数据范围
对于全部数据,保证有2000≤y≤300,1≤m≤12,1≤d≤31,0≤h≤23,1≤k≤24 。数据保证为合法时间。
提示
闰年判断规则
·普通闰年:年份能被 4 整除,但不能被 100 整除。
·世纪闰年:年份能被 400 整除。
满足以上任意一条规则的年份就是闰年,否则是平年。
【知识点】 CCF—GESP Python二级




