CSP-J2026初赛模拟卷一

Q1:姓名

填空1

Q2:1. 在标准ASCII码表中,已知英文字母c的ASCII码十进制表示是99,那么英文字母x的ASCII码十六进制表示是?

A.77
B.78
C.79
D.7A

Q3:2. 以下关于CSP与GESP的描述正确的是?

A.CSP-J/CSP-S属于非专业级别软件能力认证,只有中小学生才能参加
B.CSP-J/CSP-S是中国通信学会举办的程序设计竞赛
C.GESP是中国电子学会举办的程序设计竞赛
D.GESP C++七级成绩80分及以上或者八级成绩60分及以上,可以申请免CSP-J初赛

Q4:3. 以下可以用作C++程序中的变量名的是?

A._x1
B.new
C.class
D.public

Q5:4. 以下不属于桌面或者手机操作系统的是?

A.Linux
B.Android
C.MATLAB
D.Windows 11

Q6:5. C++中使用输入和输出函数cin和cout会用到哪个头文件?

A.iostream
B.cmath
C.cstdio
D.algorithm

Q7:6. 寻找最短路径的广度优先搜索算法经常用到的数据结构是?

A.栈
B.链表
C.向量
D.队列

Q8:7. 以下哪个域名后缀不属于中华人民共和国管辖?

A.cn
B.uk
C.hk
D.mo

Q9:8. 下列排序算法中,平均情况下时间复杂度最小的是?

A.插入排序
B.选择排序
C.归并排序
D.冒泡排序

Q10:9. 关于计算机网络,下面的说法中正确的是?

A.TCP是网络层协议
B.计算机病毒只能通过U盘等介质传播,不能通过计算机网络传播
C.计算机网络可以实现资源共享
D.公司内部的几台计算机组成的网络规模太小,不能称为计算机网络

Q11:10. 序列(7,5,1,12,3,6,9,4)的逆序对有多少个?

A.15
B.12
C.13
D.14

Q12:11. 下列属于图像文件格式的是?

A.MPEG
B.DOCX
C.JPEG
D.WMV

Q13:12. 不管P、Q如何取值,以下逻辑表达式中取值恒为假的是?

A.(¬Q∧P)∨(Q∧¬P)
B.((¬P∨Q)∨(P∨¬Q))∧P∧¬Q
C.¬P∧(¬Q∨P)∨(Q∨¬P)∧P
D.((¬P∨Q)∨(Q∨¬P))∧Q∧¬P

Q14:13. 树的根结点的高度为1,某完全二叉树有2025个结点,其高度是?

A.10
B.11
C.12
D.13

Q15:14. 现有9个苹果,要放入5个不同的盘子,允许有的盘子中放0个苹果,则不同的放法共有多少种?

A.720
B.715
C.126
D.252

Q16:15. G是一个非连通无向图(没有重边和自环),共有36条边,则该图至少有多少个顶点?

A.6
B.9
C.10
D.8

:二、阅读程序题(共 17 题,判断题正确填√,错误填 ×;判断题每题 1.5 分,选择题每题 3 分,特殊标注除外)

:(1)程序如下#include using namespace std;using i64 = long long;int popcount(i64 x) {    int res = 0;    while (x) {        if (x & 1 == 1) res++;        x = 1;    }    return res;}int calc(i64 x) {    int sum = 0;    for (i64 i = 1; i = x; i++) sum += popcount(i);    return sum;}int sum(i64 l, i64 r) {    return calc(r) - calc(l);}int main() {    i64 l, r;    cin l r;    cout calc(l) sum(l, r) endl;    return 0;}

Q17:16. 判断题:若程序输入为5 8,则程序输出7 6。( )

Q18:17. 判断题:若将第11行中的符号改为^符号,程序输出结果一定不会改变。( )

Q19:18. 判断题:若将头文件#include 改成#include ,程序仍能正常运行。( )

Q20:19. 选择题:若输入为1 12,则输出是什么?( )

A.1 21
B.1 20
C.1 22
D.2 22

Q21:20. 选择题:程序中的sum函数实现了什么功能?( )

A.计算了[1,r]区间内的每个数二进制位上1的个数之和
B.计算了[1,r]区间内的每个数二进制位上0的个数之和
C.计算了(l,r]区间内的每个数二进制位上1的个数之和
D.计算了(l,r]区间内的每个数二进制位上0的个数之和

:(2)程序如下#include using namespace std;const int inf = 0x3f3f3f3f;int solve(vector& cur) {    int n = cur.size();    vector dp(n + 1, vector(n + 1, inf));    for (int i = 0; i = n; i++) dp[0][i] = dp[i][0] = 0;    for (int i = 1; i = n; i++) dp[i][i] = cur[i - 1];    for (int i = 1; i = n; i++)        for (int j = 1; j = n; j++)            if (i != j) dp[i][j] = min(dp[i][j], dp[i - 1][j] + dp[i][j - 1]);    int ans = 0;    for (int i = 1; i = n; i++) ans = max(ans, dp[n][i]);    return ans;}int main() {    int n;    cin n;    vector cost(n);    for (int i = 0; i n; i++) cin cost[i];    cout solve(cost) endl;    return 0;}

Q22:21. 判断题:若输入为3 1 2 3,则输出为3。( )

Q23:22. 判断题:计算dp数组的时间复杂度为O(n²)。( )

Q24:23. 判断题:若将第28行改为vector cost(n+1),则当输入3 1 2 3时,solve函数中的n=3。( )

Q25:24. 选择题:当输入的cost数组为{4,0,0,5,6}时,程序的输出为?( )

A.23
B.25
C.24
D.22

Q26:25. 选择题:若将第17行改为dp[i][j] = min(dp[i][j], dp[i-1][j] - dp[i][j-1]),则当输入的cost数组为{4,0,0,5,6}时,程序的输出为?( )

A.20
B.21
C.22
D.23

Q27:26. 选择题:当输入的cost数组为{4,0,0,5,6}时,在solve函数中,dp[2][3]的值为?( )

A.1
B.2
C.3
D.4

:(3) 程序如下#includeusing namespace std;int func(int a, int b) {    if (a == 0) return b;    if (b == 0) return a;    return a + func(b, a % b);}int main() {    int x, y;    cin x y;    cout func(x, y) endl;    return 0;}

Q28:27. 判断题:当输入为2 3时,程序的输出为5。( )

Q29:28. 判断题:若输入只有一个为0,则程序的输出为输入的另一个数字。( )

Q30:29. 判断题:当输入为6 8时,func函数将会被进入4次。( )

Q31:30. 选择题:当输入为6 8时,程序的输出为?( )

A.20
B.21
C.22
D.23

Q32:31. 选择题:当输入为3 5时,func函数的调用顺序是?( )

A.func(3,5)→func(5,3)→func(3,2)→func(2,1)→func(1,0)
B.func(3,5)→func(5,3)→func(3,2)→func(2,1)→func(1,1)→func(1,0)
C.func(3,5)→func(5,2)→func(2,1)→func(1,1)→func(1,0)
D.func(3,5)→func(5,2)→func(2,1)→func(1,0)

Q33:32. 选择题:若将第10行的代码改为return a + func(b, a - b),则当输入为3 5时,得到的输出为?( )

A.14
B.8
C.6
D.产生未定义行为,结果未知

: 三、完善程序题(共10题,单选题,每小题3分)

:(1)题目描述: 给定一个整数数组colors和一个整数k,其中colors表示一个由红色瓷砖(1)和蓝色瓷砖(0)组成的环。环中连续k块瓷砖的颜色如果是交替颜色(除了第一块和最后一块瓷砖以外,中间瓷砖的颜色与它左边和右边瓷砖的颜色都不同),则称为交替组。请找出交替组的个数。

:#include #include ①using namespace std;int main() {    int n, k;    cin n k;    vector colors(n);    for (int i = 0; i n; i++) cin colors[i];    int ans = 0, cnt = ②;    for (int i = 0; i ③; i++) {        if (i 0 && ④) cnt = 0;        cnt++;        ans += (⑤ && cnt = k);    }    cout ans endl;    return 0;}

Q34:33. ①处应填?( )

A.vector
B.set
C.string
D.map

Q35:34. ②处应填?( )

A.-1
B.0
C.1
D.2

Q36:35. ③处应填?( )

A.n
B.n-1
C.2*n
D.2*(n-1)

Q37:36. ④处应填?( )

A.colors[i] = colors[i-1]
B.colors[i] != colors[i-1]
C.colors[i%n] == colors[(i-1)%n]
D.colors[i%n] != colors[(i-1)%n]

Q38:37. ⑤处应填?( )

A.i > n
B.i >= n
C.i < n
D.i <= n

:(2)题目描述: 在国际象棋中,马的移动为“L”形(垂直2格+水平1格或水平2格+垂直1格)。马只能站在电话垫的数字单元格上(电话垫布局:1 2 3;4 5 6;7 8 9;*  0 #从任意数字单元格开始,执行n-1次移动可获得长度为n的号码,计算这样的数字串有多少个(结果对10⁹+7取模)。

:#include using namespace std;const int mod = 1E9 + 7;vector pos = {    {4,6}, {6,8}, {7,9}, {4,8}, {0,3,9},    ①, {0,1,7}, {2,6}, {1,3}, {2,4}};int main() {    int n;    cin n;    vector dp(10, vector(n + 1, 0));    for (int i = 0; i 10; i++) ② = 1;    for (int j = 2; j = n; j++) {        for (int i = 0; i 10; i++) {            for (int k = 0; k pos[i].size(); k++) {                dp[i][j] += dp[③][j - 1];                ④;            }        }    }    int ans = 0;    for (int i = 0; i 10; i++) {        ⑤;        ans %= mod;    }    cout ans endl;    return 0;}

Q39:38. ①处应填?( )

A.{1,3,7,9}
B.{*,#}
C.{2,8,0}
D.{}

Q40:39. ②处应填?( )

A.dp[i][1]
B.dp[1][i]
C.dp[i][0]
D.dp[0][i]

Q41:40. ③处应填?( )

A.k
B.pos[k][i]
C.pos[i][k]
D.pos[i-1][k]

Q42:41. ④处应填?( )

A.dp[i][k] %= mod
B.dp[j][i] -= mod
C.dp[i][j] %= mod
D.dp[i][j] -= mod

Q43:42. ⑤处应填?( )

A.ans += dp[i][n]
B.ans += dp[i][n-1]
C.ans += dp[n][i]
D.ans += dp[n-1][i]
CSP-J2026初赛模拟卷一
关于
1天前
更新
0
频次
52
题目数
分享
问问AI
有问题?问问AI帮你修改 改主题:如咖啡问卷改为奶茶问卷