2025年3月CCF—GESP(Python四级)编程能力等级认证试卷
四级
2025
2025-06-20 12:01:47
114次
一、单选题
一只青蛙要跳上 n 级台阶。它每次可以跳1阶、2阶或3阶。下列代码可以计算青蛙有多少种不同的跳跃方式可以到达第 n 阶,其中横线处填写的代码是?( )
def jump_ways(n): if n <= 3: return [0, 1, 2, 4][n] dp = [0] * (n + 1) dp[1], dp[2], dp[3] = 1, 2, 4 for i in range(4, n + 1): dp[i] = _______________ return dp[n]
| A. dp[i - 1] * 2 |
B. dp[i - 3] * 3 |
| C. dp[i - 1] + dp[i - 2] |
D. dp[i - 1] + dp[i - 2] + dp[i - 3] |
【知识点】 CCF—GESP Python四级
执行下面Python代码后,输出的结果是?( )
def append_value(value, container=[]): container.append(value) return container result1 = append_value(1) result2 = append_value(2) result3 = append_value(3, []) print(result1, result2, result3)
| A. [1] [2] [3] |
B. [3] [3] [3] |
| C. [1] [1, 2] [3] |
D. [1, 2] [1, 2] [3] |
【知识点】 CCF—GESP Python四级
下列代码可将24小时制的"HH:MM"时间字符串转换为从午夜(00:00)开始经过的总分钟数(注:此分钟数为正整数),其中横线处填写的代码是?( )
time_str = "8:30" h, m = map(__________) # 横线在map的参数部分 total_min = h * 60 + m print(total_min) # 应输出510
| A. int, time_str.split(':') |
B. int, time_str.split(' ') |
| C. float, time_str.split(':') |
D. str, time_str.split(':') |
【知识点】 CCF—GESP Python四级
二、判断题
三、编程题
二阶矩阵
题目描述
小 A 有一个n 行m 列的矩阵 A。
小 A 认为一个2*2 的矩阵D 是好的,当且仅当D1,1*D2,2=D1,2*D2,1。其中 Di,j表示矩阵 D的第 i行第 j列的元素。
小 A 想知道 A中有多少个好的子矩阵。
输入格式
第一行,两个正整数n,m 。
接下来 n行,每行 m个整数 Ai,1 , Ai,2 …… , Ai,m。
输出格式
一行,一个整数,表示A 中好的子矩阵的数量。
输入样例
3 4
1 2 1 0
2 4 2 1
0 3 3 0
输出样例
2
样例解释
样例中的好的子矩阵如下:

数据范围
对于所有测试点,保证 1≤n≤5 ,1≤m≤500, 100≤ Ai,j≤100 。
【知识点】 CCF—GESP Python四级
荒地开垦
时间限制:3.0 s
内存限制:512.0 MB
题面描述
小杨有一大片荒地,可以表示为一个 n行 m列的网格图。
小杨想要开垦这块荒地,但荒地中一些位置存在杂物,对于一块不存在杂物的荒地,该荒地可以开垦当且仅当其上下左右四个方向相邻的格子均不存在杂物。
小杨可以选择至多一个位置,清除该位置的杂物,移除杂物后该位置变为荒地。小杨想知道在清除至多一个位置的杂物的情况下,最多能够开垦多少块荒地。
输入格式
第一行包含两个正整数n,m ,含义如题面所示。
之后 n行,每行包含一个长度为m 且仅包含字符 . 和 # 的字符串。如果为 . ,代表该位置为荒地,如果为 # ,代表该位置为杂物。
输出格式
输出一个整数,代表在清除至多一个位置的杂物的情况下,最多能够开垦的荒地块数。
输入样例
3 5 ..... .#..# .....
输出样例
11
样例解释
移除第二行从左数第二块空地的杂物后:
..... ....# .....
第一行从左数前 4块荒地,第二行从左数前3 块荒地,第三行从左数前4 块荒地,均可开垦,4+3+4=11。
数据范围
对于全部数据,保证有 1≤n,m≤1000。
【知识点】 CCF—GESP Python四级
