近期5年(2021-2025年)CSP-J 入门组(初赛选择题)的历年真题。 根据题目考查的知识点,我将其分为
- 计算机基础与常识
- 数学与进制转换
- 数据结构
- 算法与复杂度
- 基本语法与程序阅读
五大类,并全部转换为了标准 Markdown 格式。
CSP-J 历年初赛选择题分类真题汇编(2021-2025)
一、 计算机基础与常识
1. 计算机硬件与系统
- [2021] 以下奖项与计算机领域最相关的是( )。
- A. 奥斯卡奖
- B. 图灵奖
- C. 诺贝尔奖
- D. 普利策奖
-
答案:B [2476]
-
[2021] 目前主流的计算机储存数据最终都是转换成( )数据进行储存。
- A. 二进制
- B. 十进制
- C. 八进制
- D. 十六进制
-
答案:A [2477]
-
[2022] 以下哪种功能没有涉及 C++语言的面向对象特性支持:( )。
- A. C++中调用
printf函数 - B. C++中调用用户定义的类成员函数
- C. C++中构造一个
class或struct - D. C++中构造来源于同一基类的多个派生类
-
答案:A [2860]
-
[2023] 以下哪个不是操作系统?( )
- A. Linux
- B. Windows
- C. Android
- D. HTML
-
答案:D [7299]
-
[2024] 编译器的主要作用是什么( )?
- A. 直接执行源代码
- B. 将源代码转换为机器代码
- C. 进行代码调试
- D. 管理程序运行时的内存
-
答案:B [12274]
-
[2024] 哪一个不是操作系统名字( )
- A. Notepad
- B. Linux
- C. Windows
- D. macOS
-
答案:A [12269]
-
[2025] 一个 32 位无符号整数可以表示的最大值,最接近下列哪个选项?()
- A. $4\times 10^9$
- B. $3\times 10^{10}$
- C. $2\times 10^9$
- D. $2\times 10^{10}$
- 答案:A [15780]
二、 数学与进制转换
1. 进制转换与编码
- [2021] 二进制数 101.11 对应的十进制数是( )。
- A. 6.5
- B. 5.5
- C. 5.75
- D. 5.25
-
答案:C [2481]
-
[2022] 八进制数 32.1 对应的十进制数是( )。
- A. 24.125
- B. 24.250
- C. 26.125
- D. 26.250
-
答案:C [2872]
-
[2023] 八进制数 12345670(8) 和 07654321(8) 的和为( )
- A. 22222221(8)
- B. 21111111(8)
- C. 22111111(8)
- D. 22222211(8)
-
答案:D [7286]
-
[2023] 数 101010(2) 和 166(8) 的和为( )。
- A. 10110000(2)
- B. 236(8)
- C. 158(10)
- D. A0(16)
-
答案:D [7293]
-
[2023] 在计算机中,以下哪个选项描述的数据存储容量最小?( )
- A. 字节(byte)
- B. 比特(bit)
- C. 字(word)
- D. 千字节(kilobyte)
-
答案:B [7297]
-
[2024] 计算($14_8 - 1010_2\dots$ 略)及十六进制换算结果的十进制值:( )
- A. 13
- B. 14
- C. 15
- D. 16
-
答案:A [12261]
-
[2024] 以下哪个序列对应数组 0 至 7 的 4 位二进制格雷码(Gray code)?
- A. 0000,0001,0011,0010,0110,0111,0101,1000
- B. 0000,0001,0011,0010,0110,0111,0100,0101
- C. 0000,0001,0011,0010,0100,0101,0111,0110
- D. 0000,0001,0011,0010,0110,0111,0101,0100
-
答案:D [12263]
-
[2024] 记 1Kb 为 1024 字节,1MB 为 1024KB,那么 1MB 是多少二进制位(bit)?
- A. 1000000
- B. 1048576
- C. 8000000
- D. 8388608
-
答案:D [12264]
-
[2025] 十进制数 $720_{10}$ 和八进制数 $270_8$ 的和用十六进制表示是多少?()
- A. $388_{16}$
- B. $DE_{16}$
- C. $288_{16}$
- D. $990_{16}$
- 答案:A [15802]
2. 排列组合与概率
- [2021] 6 个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )种。
- A. 10
- B. 15
- C. 30
- D. 20
-
答案:B [2484]
-
[2021] 由 1,1,2,2,3 这五个数字组成不同的三位数有( )种。
- A. 18
- B. 15
- C. 12
- D. 24
-
答案:A [2486]
-
[2023] 一个班级有 10 个男生和 12 个女生。如果要选出一个 3 人的小组,并且小组中必须至少包含 1 个女生,那么有多少种可能的组合?( )
- A. 1420
- B. 1770
- C. 1540
- D. 2200
-
答案:A [7298]
-
[2024] 某公司有 10 名员工,分为 3 个部门... 从这 10 名员工中选出 4 名组成一个工作组,且每个部门至少要有 1 人。问有多少种选择方式?( )
- A. 120
- B. 126
- C. 132
- D. 238
-
答案:B [12262]
-
[2024] 有 5 个男生和 3 个女生站成一排,规定 3 个女生必须相邻,问有多少种不同的排列方式?
- A. 4320种
- B. 5040种
- C. 3600种
- D. 2880种
-
答案:A [12273]
-
[2025] 从 5 位男生和 4 位女生中选出 4 人组成一个学习小组,要求学习小组中男生和女生都有。有多少种不同的选举方法?()
- A. 126
- B. 121
- C. 120
- D. 100
-
答案:C [15795]
-
[2025] 一个 $8\times 8$ 的棋盘... 从 $(1,1)$ 出发,每次只能向右或向下走一格,要到达 $(4,5)$,有多少种不同的路径?()
- A. 20
- B. 35
- C. 56
- D. 70
- 答案:B [15800]
三、 数据结构
1. 栈与队列
- [2021] 对于入栈顺序为 a, b, c, d, e 的序列,下列( )不是合法的出栈序列。
- A. a,b,c,d,e
- B. e,d,c,b,a
- C. b,a,c,d,e
- D. c,d,a,e,b
-
答案:D [2479]
-
[2022] 有 6 个元素,按照 6、5、4、3、2、1 的顺序进入栈 S,请问下列哪个出栈序列是非法的 ( )。
- A. 5 4 3 6 1 2
- B. 4 5 3 1 2 6
- C. 3 4 6 5 2 1
- D. 2 3 4 1 5 6
-
答案:C [2861]
-
[2022] 假设栈 S 和队列 Q 的初始状态为空... 栈 S 的容量至少是( )个数据。
- A. 2
- B. 3
- C. 4
- D. 6
-
答案:B [2864]
-
[2024] 给定一个空栈... 若入栈操作的元素依次是 1 2 3 4 5 6... 下面哪种出栈顺序是不可能的( )
- A. 6 5 4 3 2 1
- B. 1 6 5 4 3 2
- C. 2 4 6 5 3 1
- D. 1 3 5 2 4 6
-
答案:D [12272]
-
[2025] 给定一个初始为空的整数栈 S 和一个空的队列 P... 处理完毕后,队列 P 的内容是什么?()
- A. $5, 1, 3$
- B. $7, 5, 3$
- C. $3, 1, 5$
- D. $5, 1, 3, 7$
- 答案:A [15804]
2. 树与二叉树、图论
- [2021] 对于有 n 个顶点、m 条边的无向连通图 (m>n),需要删掉( )条边才能使其成为一棵树。
- A. n-1
- B. m-n
- C. m-n-1
- D. m-n+1
-
答案:D [2480]
-
[2021] 如果一棵二叉树只有根结点... 请问高度为 5 的完全二叉树有( )种不同的形态?
- A. 16
- B. 15
- C. 17
- D. 32
-
答案:A [2482]
-
[2022] 一棵有 n 个结点的完全二叉树用数组进行存储... 存储在数组第 9 个位置的结点... 它的兄弟结点和右子结点的位置分别是( )。
- A. 8、18
- B. 10、18
- C. 8、19
- D. 10、19
-
答案:C [2867]
-
[2022] 考虑由 N 个顶点构成的有向连通图... 该矩阵中至少存在( )个非零元素。
- A. N-1
- B. N
- C. N+1
- D. $N^2$
-
答案:B [2868]
-
[2023] 根节点的高度为 1,一根拥有 2023 个节点的三叉树高度至少为( )
- A. 6
- B. 7
- C. 8
- D. 9
-
答案:C [7289]
-
[2023] 给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?( )
- A. EDBGFCA
- B. EDGBFCA
- C. DEBGFCA
- D. DBEGFCA
-
答案:A [7295]
-
[2023] 考虑一个有向无环图... 以下哪个选项是这个有向无环图的一个有效的拓扑排序?( )
- A. 4,2,3,1
- B. 1,2,3,4
- C. 1,2,4,3
- D. 2,1,3,4
-
答案:B [7296]
-
[2024] 在无向图中,所有顶点的度数之和等于()
- A. 图的边数
- B. 图的边数的两倍
- C. 图的定点数
- D. 图的定点数的两倍
-
答案:B [12270]
-
[2024] 已知二叉树的前序遍历为[A, B, D, E, C, F, G],中序遍历为[D, B, E, A, F, C, G],求二叉树的后序遍历的结果是( )
- A. [D, E, B, F, G, C, A]
- B. [D, E, B, F, G, A, C]
- C. [D, B, E, F, G, C, A]
- D. [D, B, E, F, G, A, C]
-
答案:A [12271]
-
[2025] 用 5 个权值 10,12,15,20,25 构造哈夫曼树,该树的带权路径长度是多少?()
- A. 176
- B. 186
- C. 196
- D. 206
-
答案:B [15793]
-
[2025] 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和,这个总和等于?()
- A. 顶点数
- B. 边数
- C. 顶点数 + 边数
- D. 顶点数 * 2
-
答案:B [15794]
-
[2025] 一棵包含 1000 个结点的完全二叉树,其叶子结点的数量是多少?()
- A. 499
- B. 512
- C. 500
- D. 501
- 答案:C [15803]
四、 算法与复杂度
1. 基础算法、贪心与搜索
- [2021] 在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )的策略。
- A. 枚举
- B. 贪心
- C. 递归
- D. 动态规划
-
答案:B [2485]
-
[2021] 有四个人要从 A 点坐一条船过河... 最短( )时间可以让四个人都过河到 B 点
- A. 14
- B. 15
- C. 16
- D. 17
-
答案:B [2490]
-
[2023] 小明在某一天中依次有七个空闲时间段... 任意两个练习的时间段之间都有至少两个空闲... 一共有( )种选择时间段的方案。
- A. 31
- B. 18
- C. 21
- D. 33
-
答案:B [7290]
-
[2025] 某同学用冒泡排序对数组 ${6, 1, 5, 2, 4}$ 进行升序排序,请问需要进行多少次元素交换?()
- A. 5
- B. 6
- C. 7
- D. 8
- 答案:B [15801]
五、 基本语法与程序阅读
1. 变量、表达式与数据类型
- [2021] 以比较作为基本运算,在 N 个数中找出最大数,最坏情况下所需要的最少的比较次数为( )。
- A. $N^2$
- B. $N$
- C. $N-1$
- D. $N+1$
-
答案:C [2478]
-
[2022] 运行以下代码片段的行为是( )。
p = q; - A. 将 x 的值赋为 201
- B. 将 y 的值赋为 101
- C. 将 q 指向 x 的地址
- D. 将 p 指向 y 的地址
-
答案:D [2862]
-
[2022] 链表和数组的区别包括( )。
- A. 数组不能排序,链表可以
- B. 链表比数组能存储更多的信息
- C. 数组大小固定,链表大小可动态调整
- D. 以上均正确
-
答案:C [2863]
-
[2023] 在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?( )。
- A. unsigned
- B. const
- C. static
- D. mutable
-
答案:B [7285]
-
[2023] 以下关于高精度运算的说法错误的是( )。
- A. 高精度计算主要是用来处理大整数...
- B. 大整数除以小整数的处理步骤可以是...
- C. 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关。
- D. 高精度加法运算的关键在于逐位相加并处理进位。
-
答案:C [7291]
-
[2024] 32位 int 类型的存储范围是()
- A. $-2147483647 \sim +2147483647$
- B. $-2147483647 \sim +2147483648$
- C. $-2147483648 \sim +2147483647$
- D. $-2147483648 \sim +2147483648$
-
答案:C [12260]
-
[2024] 以下哪个不是 C++ 中的基本数据类型?
- A. Int
- B. float
- C. struct
- D. char
-
答案:C [12265]
-
[2024] 以下哪个不是 C++ 中的循环语句?
- A. for
- B. while
- C. do-while
- D. repeat-untill
-
答案:D [12266]
-
[2024] 在 C/C++ 中,
(char)(‘a’+13)与下面的哪一个值相等( ) - A. ‘m’
- B. ‘n’
- C. ‘z’
- D. ‘3’
-
答案:B [12267]
-
[2024] 假设有序表中有 1000 个元素,则用二分法查找元素 x 最多需要比较()次
- A. 25
- B. 10
- C. 7
- D. 1
-
答案:B [12268]
-
[2025] 在 C++ 中,执行
int x = 255; cout << (x & (x - 1));后,输出的结果是?() - A. 255
- B. 254
- C. 128
- D. 0
-
答案:B [15791]
-
[2025] 假设 a,b,c 都是布尔变量,逻辑表达式
(a && b) || (c && a)的值与下列哪个表达式不始终相等?() - A.
a && (b || c) - B.
(a || !c) && (b || !c) && (a || a) - C.
a && (!b || c) - D.
!(!a || !b) || (a && !c) -
答案:C [15796]
-
[2025] 下列关于 C++
string类的说法,正确的是?() - A.
string对象的长度在创建后不能改变。 - B. 可以使用
+运算符直接连接一个string对象和一个char类型的字符。 - C.
string的length()和size()方法返回的值可能不同。 - D.
string对象必须以'\0'结尾,且这个结尾符计入length()。 - 答案:B [15798]
2. 函数与程序阅读逻辑
- [2021] 考虑如下递归算法,则调用
solve(7)得到的返回结果为( )。cpp solve(n) if n<=1 return 1 else if n>=5 return n*solve(n-2) else return n*solve(n-1) - A. 105
- B. 840
- C. 210
- D. 420
-
答案:C [2487]
-
[2025] 函数
calc(n)的定义如下,则calc(5)的返回值是多少?()cpp int calc(int n) { if (n <= 1) return 1; if (n % 2 == 0) return calc(n / 2) + 1; else return calc(n - 1) + calc(n - 2); } - A. 5
- B. 6
- C. 7
- D. 8
-
答案:B [15792]
-
[2025] 已知
f[0] = 1,f[1] = 1,并且对于所有 $n \ge 2$ 有f[n] = (f[n-1] + f[n-2]) % 7,那么f[2025]的值是多少? - A. 3
- B. 4
- C. 5
- D. 6
-
答案:D [15797]
-
[2025] 考虑以下 C++ 函数(参数传递问题)... 调用
solve后,x和y的值分别是?()cpp void solve(int &a, int b) { a = a + b; b = a - b; a = a - b; } int main() { int x = 5, y = 10; solve(x, y); } - A. 5,10
- B. 10,5
- C. 10,10
- D. 5,5
- 答案:C [15799]
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com