#289. 普及组 CSP-J 2025 初赛模拟卷1
普及组 CSP-J 2025 初赛模拟卷1
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
- 在标准ASCII码表中,已知英文字母c 的 ASCII码十进制表示是99,那么英文字母 x 的 ASCII 码十六进制表示是( )。 {{ select(1) }}
- 77
- 78
- 79
- 7A
- 以下关于 CSP 与 GESP 的描述正确的是( )。 {{ select(2) }}
- CSP-J/CSP-S 属于非专业级别软件能力认证,只有中小学生才能参加
- CSP-J/CSP-S 是中国通信学会举办的程序设计竞赛
- GESP 是中国电子学会举办的程序设计竞赛
- GESP C++ 七级成绩 80 分及以上或者八级成绩 60 分及以上,可以申请免 CSP-J 初赛
- 以下可以用作 C++ 程序中的变量名的是( )。 {{ select(3) }}
- _x1
- new
- class
- public
- 以下不属于桌面或者手机操作系统的是( )。 {{ select(4) }}
- Linux
- Android
- MATLAB
- Windows 11
- C++中使用输入和输出函数 cin 和 cout 会用到( )头文件。 {{ select(5) }}
- iostream
- cmath
- csidio
- algorithm
- 寻找最短路径的广度优先搜索算法经常用到的数据结构是( )。 {{ select(6) }}
- 栈
- 链表
- 向量
- 队列
- 以下哪个域名后缀不属于中华人民共和国管辖?( ) {{ select(7) }}
- cn
- uk
- hk
- mo
- 下列排序算法中,平均情况下( )算法的时间复杂度最小。 {{ select(8) }}
- 插入排序
- 选择排序
- 归并排序
- 冒泡排序
- 关于计算机网络,下面的说法中正确的是( )。 {{ select(9) }}
- TCP 是网络层协议
- 计算机病毒只能通过 U 盘等介质传播,不能通过计算机网络传播
- 计算机网络可以实现资源共享
- 公司内部的几台计算机组成的网络规模太小,不能称为计算机网络
- 序列(7, 5, 1, 12, 3, 6, 9, 4)的逆序对有( )个。 {{ select(10) }}
- 15
- 12
- 13
- 14
- 下列属于图像文件格式的是( )。 {{ select(11) }}
- MPEG
- DOCX
- JPEG
- WMV
- 不管 P、Q 如何取值,以下逻辑表达式中取值恒为假的是( )。 {{ select(12) }}
- (¬Q∧P)∨(Q∧¬P)
- ((¬P∨Q)∨(P∨¬Q))∧P∧¬Q
- ¬P∧((¬Q∨P)∨(Q∨¬P))∧P
- ((¬P∨Q)∨(Q∨¬P))∧Q∧¬P
- 树的根结点的高度为 1,某完全二叉树有 2025 个结点,其高度是( )。 {{ select(13) }}
- 10
- 11
- 12
- 13
- 现有 9 个苹果,要放入 5 个不同的盘子,允许有的盘子中放 0 个苹果,则不同的放法共有( )种。 {{ select(14) }}
- 720
- 715
- 126
- 252
- G 是一个非连通无向图(没有重边和自环),共有 36 条边,则该图至少有( )个顶点。 {{ select(15) }}
- 6
- 9
- 10
- 8
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填×;除特殊说明外,判断题每题1.5分,选择题每题3分,共计40分)
(1)


判断题
- 若程序输入为5 8,则程序输出7 6。 ( ) {{ select(16) }}
- 正确
- 错误
- 若将第11行中的&符号改为^符号,程序输出结果一定不会改变。 ( ) {{ select(17) }}
- 正确
- 错误
- 若将头文件#include <bits/stdc++.h>改成#include <stdio.h>, 程序仍能正常运行。 ( ) {{ select(18) }}
- 正确
- 错误
选择题
- 若输入为 1 12,则输出是什么?( ) {{ select(19) }}
- 1 21
- 1 20
- 1 22
- 2 22
- 程序中的 sum 函数实现了什么功能?( ) {{ select(20) }}
- 计算了 [l, r]区间内的每个数二进制位上 1 的个数之和
- 计算了 [l, r]区间内的每个数二进制位上 0 的个数之和
- 计算了 (1, r]区间内的每个数二进制位上 1 的个数之和
- 计算了 (1, r]区间内的每个数二进制位上 0 的个数之和
(2)


判断题
- 若输入为3 1 2 3,则输出为3。 ( ) {{ select(21) }}
- 正确
- 错误
- 计算dp数组的时间复杂度为 O(n²) ( ) {{ select(22) }}
- 正确
- 错误
- (2分)若将第28行改为
vector<int>cost(n+1),则当输入3 1 2 3时,solve函数中的n=3。 ( ) {{ select(23) }}
- 正确
- 错误
选择题
- 当输入的cost数组为{4,0,0,5,6}时,程序的输出为( )。 {{ select(24) }}
- 23
- 25
- 24
- 22
- 若将第17行改为
dp[i][j]=min(dp[i][j],dp[i−1][j]−dp[i][j−1]),则当输入的cost数组为{4,0,0,5,6}时,程序的输出为( )。 {{ select(25) }}
- 20
- 21
- 22
- 23
- (4分)当输入的cost数组为{4,0,0,5,6}时,在solve函数中,
dp[2][3]的值为( )。 {{ select(26) }}
- 1
- 2
- 3
- 4
(3)


判断题
- 当输入为 2 3 时,程序的输出为 5。 ( ) {{ select(27) }}
- 正确
- 错误
- 若输入只有一个为 0,则程序的输出为输入的另一个数字。 ( ) {{ select(28) }}
- 正确
- 错误
- 当输入为 6 8 时,func 函数将会被进入 4 次。 ( ) {{ select(29) }}
- 正确
- 错误
选择题
- 当输入为 6 8 时,程序的输出为( )。 {{ select(30) }}
- 20
- 21
- 22
- 23
- 当输入为 3 5 时,func 函数的调用顺序是( )。 {{ select(31) }}
- func(3,5)-func(5,3)-func(3,2)-func(2,1)-func(1,0)
- func(3,5)-func(5,3)-func(3,2)-func(2,1)-func(1,1)-func(1,0)
- func(3,5)-func(5,2)-func(2,1)-func(1,1)-func(1,0)
- func(3,5)-func(5,2)-func(2,1)-func(1,0)
- (4 分)若将第 10 行的代码改为 return a + func(b,a-b),则当输入为 3 5 时,得到的输出为( )。 {{ select(32) }}
- 14
- 8
- 6
- 产生未定义行为,结果未知
三、完善程序(单选题,每小题3分,共计30分)
(1)题目描述:
给定一个整数数组colors和一个整数k, 其中colors表示一个由红色瓷砖和蓝色瓷砖组成的环,第i块瓷砖的颜色为colors[i](1代表红色,0代表蓝色)。环中连续 k 块瓷砖的颜色如果是交替颜色(除了第一块和最后一块瓷砖以外,中间瓷砖的颜色与它左边瓷砖和右边瓷砖的颜色都不同),那么它被称为一个交替组。现在,请你找出交替组的个数。

- ①处应填( )。
{{ select(33) }}
- vector
- set
- string
- map
- ②处应填( )。
{{ select(34) }}
- -1
- 0
- 1
- 2
- ③处应填( )。
{{ select(35) }}
- n
- n-1
- 2*n
- 2*(n-1)
- ④处应填( )。 {{ select(36) }}
colors[i] == colors[i-1]colors[i] != colors[i-1]colors[i % n] == colors[(i-1) % n]colors[i % n] != colors[(i-1) % n]
- ⑤处应填( )。 {{ select(37) }}
- i > n
- i >= n
- i < n
- i <= n
(2)题目描述:
在国际象棋中,马的一次移动定义为:垂直移动两个方格后再水平移动一个方格,或者水平移动两个方格后再垂直移动一个方格(两者都形成一个L的形状)。
现在,我们有一个马和一个电话垫(如下所示),马只能站在数字单元格上。你可以将马放置在任何数字单元格上,然后你应该执行 n-1 次移动来获得长度为n的号码。马所有的移动应该是符合规则的有效的移动。马在一次移动的过程中可以经过符号单元格,但必须保证这次移动结束后马站在数字单元格上。
给定一个整数n, 请你计算可以得到多少个长度为n 的数字串。由于答案可能很大, 请你输出答案对10⁹+7取模后的结果。



- ①处应填( )。 {{ select(38) }}
- {1, 3, 7, 9}
- {*, #}
- {2, 8, 0}
- {}
- ②处应填( )。 {{ select(39) }}
- dp[i][1]
- dp[1][i]
- dp[i][0]
- dp[0][i]
- ③处应填( )。 {{ select(40) }}
- k
- pos[k][i]
- pos[i][k]
- pos[i-1][k]
- ④处应填( )。 {{ select(41) }}
dp[i][k] %= moddp[j][i] -= moddp[i][j] %= moddp[i][j] -= mod
- ⑤处应填( )。 {{ select(42) }}
ans += dp[i][n]ans += dp[i][n-1]ans += dp[n][i]ans += dp[n-1][i]