#A. 2025粤港澳信息学创新大赛市选拔赛模拟题初中组
2025粤港澳信息学创新大赛市选拔赛模拟题初中组
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
2025粤港澳信息学创新大赛市选拔赛模拟题初中组
(满分:100 分 考试时间:120 分钟)
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
- 在C++中,表达式 (13 & 7) 的值是多少?
{{ select(1) }}
5
6
7
20
- 以下哪个是合法的IPv4地址?
{{ select(2) }}
- 192.168.1.256
- 10.0.0.1
- 300.120.50.10
- 172.16.255.255.1
- 在C++中,执行以下代码后,变量result的值和类型分别是?
int a = 5;
double b = 2.0;
auto result = a / b;
{{ select(3) }}
2,int
2.5,double
2.0,double
2,double
- 在C++中,定义数组 int arr[5] = {1, 2};,执行语句 cout << arr[3]; 会输出什么?
{{ select(4) }}
0
1
2
- 随机值
- 在C++中,表达式 5 + 3 * 2 == 11 ? 1 : 0 的最终值是?
{{ select(5) }}
- 0
- 1
- 11
- 编译错误
- 关于二叉树的叙述,以下哪项是正确的?
{{ select(6) }}
- 二叉树中每个节点的度都为2
- 高度为3的二叉树最多有7个节点
- 二叉树的左右子树不能为空
- 完全二叉树只允许最后一层有缺失节点
- 以下哪种排序算法在最坏情况下时间复杂度是O(n²),但通过优化可以使平均时间复杂度达到O(n log n)?()
{{ select(7) }}
- 冒泡排序
- 快速排序
- 归并排序
- 堆排序
- 给定单向链表的节点定义和头指针 head,以下代码的功能是:
ListNode* moveTailToHead(ListNode* head) {
if (!head || !head->next) return head;
ListNode *prev = nullptr, *curr = head;
while (curr->next) {
prev = curr;
curr = curr->next;
}
prev->next = nullptr;
curr->next = head;
return curr;
}
{{ select(8) }}
- 删除链表尾节点
- 将尾节点移动到链表头部
- 反转整个链表
- 查找链表中间节点
- 以下代码段执行后,变量 x 的值是多少 ( )
int* f(int* p) {
*p += 10;
int q = *p / 2;
return &q;
}
int main() {
int x = 20;
int* r = f(&x);
x = *r + 5;
return 0;
}
{{ select(9) }}
- 20
- 25
- 30
- 程序行为未定义
- 关于无向图的叙述,以下哪项是正确的?
{{ select(10) }}
- 所有顶点的度数之和等于顶点数
- 边数不可能超过顶点数的平方
- 连通图中任意两顶点间都有唯一路径
- 有n个顶点的树一定有n条边
- @用ASCII码存储字符串"2024"需要占用多少字节?
{{ select(11) }}
2
4
8
16
- 以下哪种语言是编译型语言?
{{ select(12) }}
- Python
- Java
- C++
- JavaScript
- 二进制数 1101 转换为十进制后的结果是?()
{{ select(13) }}
- 11
- 12
- 13
- 14
- 已知栈的初始状态为空,依次进行以下操作后栈顶元素是:
压入元素A
压入元素B
弹出栈顶
压入元素C
弹出栈顶
{{ select(14) }}
- A
- B
- C
- 空
- 用分治法解决"在有序数组中查找数字"的问题,最适合采用以下哪种方法?()
{{ select(15) }}
- 从第一个元素开始逐个比较
- 随机选择一个元素进行比较
- 每次与中间元素比较,缩小一半范围
- 先排序数组再进行查找
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ⨉ ;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)
1.程序一
根据上述程序,完成下面的判断题和单选题:
- (2分)请判断对错:当输入为 20 时,程序输出的第一个数字是 8。( )
{{ select(16) }}
- 对
- 错
- (2分)请判断对错:若将内层循环的起始条件 j = i * i 改为 j = 2 * i,程序仍能正确筛选素数。( )
{{ select(17) }}
- 对
- 错
- (2分)请判断对错:该算法的时间复杂度优于暴力判断每个数是否为素数。( )
{{ select(18) }}
- 对
- 错
- 当输入为 30 时,程序输出的第二个数字(素数和)是( )
{{ select(19) }}
129
106
112
100
- 该筛法算法的最坏时间复杂度是( )
{{ select(20) }}
- 若输入 n 为 100,则标记为 false 的最大合数是。()
{{ select(21) }}
99
100
98
97
2.程序二
22. 当输入数据为 4 1 2 3 1 时(第一个数表示数组长度),程序输出为 4。()
{{ select(22) }}
- 对
- 错
- 若将
dp[1] = max(nums[0], nums[1])
改为dp[1] = nums[1]
,输入4 2 1 1 2
时输出会变为3
。()
{{ select(23) }}
- 对
- 错
- (1分)该算法的时间复杂度为 O(n)。()。
{{ select(24) }}
- 对
- 错
- 当输入数据为
5 2 7 9 3 1
时,程序输出是()。
{{ select(25) }}
10
12
11
13
- 该算法解决的是以下哪个问题?()。
{{ select(26) }}
- 求数组最大子序列和
- 求不相邻元素的最大和
- 求数组中最长递增子序列
- 求数组中相邻元素的最小和
- 若输入数组所有元素均为负数,则输出( )
{{ select(27) }}
- 0
- 前两个数中较大的那个
- 数组中最小的负数(绝对值最大)
- 程序会报错
3.程序三:
完成下面的判断题和单选题。
- 当输入为
2 5
时,程序输出32
。( )
{{ select(28) }}
- 对
- 错
- 若将
k % 2 == 0
改为k % 3 == 0
,输入3 4
时输出会变为81
。( )
{{ select(29) }}
- 对
- 错
- 该递归算法的时间复杂度是 ( )
{{ select(30) }}
- 对
- 错
- 当输入为 5 0 时,程序输出是( )
{{ select(31) }}
- 0
- 1
- 5
- 程序报错
- 该算法实现的是以下哪种数学运算?( )
{{ select(32) }}
- 加法
- 乘法
- 幂运算
- 阶乘
- 当输入为 2 10 时,mystery 函数总共被调用了( )次。( )
{{ select(33) }}
- 5
- 11
- 10
- 6
三、完善程序(单选题,每小题 3 分,共计 30 分)
1.程序一
以下程序使用BFS计算从起点(0,0)到终点的最短步数,补全缺失代码。 (假设地图用 grid 二维数组表示,0可通过,1为障碍)
- 1处应填( )
{{ select(34) }}
x + y
dist[n-1][m-1]+1
n + m
dist[x][y]
- 2处应填( )
{{ select(35) }}
grid[nx][ny] == 0 && dist[nx][ny] == -1
grid[nx][ny] == 1
dist[nx][ny] > dist[x][y]
nx + ny < x + y
- 3处应填( )
{{ select(36) }}
dist[x][y]
dist[x][y] + 1
0
1
- 4处应填( )
{{ select(37) }}
make_pair(x, y)
make_pair(nx, ny)
make_pair(dx[i], dy[i])
make_pair(n, m)
- 5处应填( )
{{ select(38) }}
"No path"
false
-1
0
2、程序二
补全程序,统计字符串中所有回文子串的数量。函数check判断子串s[l..r]是否回文,count_substrings枚举所有子串并计数。注意边界处理和返回值逻辑。
输入示例:"abcba" 输出示例:7
(回文子串:a,b,c,b,a,bcb,abcba)
- ①处应填( )
{{ select(39) }}
true
s[l] == s[r]
l < r
false
- ②处应填( )
{{ select(40) }}
true
false
l >= r
s[l] == s[r]
- ③处应填( )
{{ select(41) }}
i <= j
check(s, i, j)
s[i] == s[j]
i < j
- ④处应填( )
{{ select(42) }}
n
cnt
j - i + 1
s.length()
- ⑤处应填( )
{{ select(43) }}
s
count_substrings(s)
check(s, 0, s.length()-1)
n