#CSPJ01. CSP-J 单项选择题练习(2020-2025)
CSP-J 单项选择题练习(2020-2025)
CSP-J 单项选择题练习(2020-2025)
要求:独立完成,先不查答案。不会或不确定的题先标记。完成后再打开 CSPJ03 对照解析。
一、计算机基础与编程环境
1.(2020·J·T1)在内存储器中,每个存储单元都被赋予一个唯一的序号,称为( )。
{{ select(1) }}
- 地址
- 序号
- 下标
- 编号
2.(2024·J·T10)下面哪一个不是操作系统名字?
{{ select(2) }}
- Notepad
- Linux
- macOS
- Windows
3.(2020·J·T4)现有一张分辨率为 2048×1024 像素的 32 位真彩色图像。请问要存储这张图像,需要多大的存储空间?
{{ select(3) }}
- 16MB
- 4MB
- 8MB
- 32MB
4.(2021·J·T7)二进制数 101.11₂ 对应的十进制数是( )。
{{ select(4) }}
- 6.5
- 5.5
- 5.75
- 5.25
5.(2022·J·T13)八进制数 32.1₈ 对应的十进制数是( )。
{{ select(5) }}
- 24.125
- 24.250
- 26.125
- 26.250
6.(2023·J·T2)八进制数 (12345670)₈ 和 (07654321)₈ 的和为( )。
{{ select(6) }}
- (22222221)₈
- (21111111)₈
- (22111111)₈
- (22222211)₈
7.(2023·J·T9)数 101010₂ 和 166₈ 的和为( )。
{{ select(7) }}
- 10110000₂
- 236₈
- 158₁₀
- A0₁₆
8.(2024·J·T1)32 位 int 类型的存储范围是( )。
{{ select(8) }}
- -2147483647 ~ +2147483647
- -2147483647 ~ +2147483648
- -2147483648 ~ +2147483647
- -2147483648 ~ +2147483648
9.(2024·J·T2)计算 (14₈ - 1010₂) × D₁₆ - 1101₂ 的结果,并选择答案的十进制值。
{{ select(9) }}
- 13
- 14
- 15
- 16
10.(2024·J·T5)记 1KB 为 1024 字节,1MB 为 1024KB,那么 1MB 是多少二进制位(bit)?
{{ select(10) }}
- 1000000
- 1048576
- 8000000
- 8388608
11.(2025·J·T1)一个 32 位无符号整数可以表示的最大值,最接近下列哪个选项?
{{ select(11) }}
- 4×10⁹
- 3×10¹⁰
- 2×10⁹
- 2×10¹⁰
12.(2025·J·T13)十进制数 720₁₀ 和八进制数 270₈ 的和用十六进制表示是多少?
{{ select(12) }}
- 388₁₆
- 3DE₁₆
- 288₁₆
- 720₁₀
13.(2024·J·T15)编译器的主要作用是什么?
{{ select(13) }}
- 直接执行源代码
- 将源代码转换为机器代码
- 进行代码调试
- 管理程序运行时的内存
14.(2021·J·T1)以下不属于面向对象程序设计语言的是( )。
{{ select(14) }}
- C++
- Python
- Java
- C
15.(2022·J·T1)以下哪种功能没有涉及 C++ 语言的面向对象特性支持?
{{ select(15) }}
- C++ 中调用 printf 函数
- C++ 中调用用户定义的类成员函数
- C++ 中构造一个 class 或 struct
- C++ 中构造来源于同一基类的多个派生类
二、C++ 程序设计
16.(2023·J·T1)在 C++ 中,下面哪个关键字用于声明一个变量,其值不能被修改?
{{ select(16) }}
- static
- const
- volatile
- mutable
17.(2020·J·T3)设 x=true, y=true, z=false,以下逻辑运算表达式值为真的是( )。
{{ select(17) }}
- (y∨z)∧x∧z
- x∧(z∨y)∧z
- (x∧y)∧z
- (x∧y)∨(z∨x)
18.(2024·J·T7)以下哪个不是 C++ 中的循环语句?
{{ select(18) }}
- for
- while
- do-while
- repeat-until
19.(2024·J·T8)在 C/C++ 中,(char)('a'+13) 与下面的哪一个值相等?
{{ select(19) }}
- 'm'
- 'n'
- 'z'
- '3'
20.(2025·J·T2)在 C++ 中,执行 int x = 255; cout << (x & (x - 1)); 后,输出的结果是?
{{ select(20) }}
- 255
- 254
- 128
- 0
21.(2025·J·T7)假设 a、b、c 都是布尔变量,逻辑表达式 (a && b) || (!c && a) 的值与下列哪个表达式不始终相等?
{{ select(21) }}
- a && (b || !c)
- (a || !c) && (b || !c) && (a || a)
- a && (!b || c)
- !(!a || !b) || (a && !c)
22.(2020·J·T6)设 A 是 n 个实数的数组,递归算法 XYZ(A[1..n]):若 n=1 则返回 A[1];否则 temp←XYZ(A[1..n-1]),若 temp<A[n] 则返回 temp,否则返回 A[n]。算法 XYZ 的输出是什么?
{{ select(22) }}
- A 数组的平均
- A 数组的最小值
- A 数组的中值
- A 数组的最大值
23.(2024·J·T6)以下哪个不是 C++ 中的基本数据类型?
{{ select(23) }}
- int
- float
- struct
- char
24.(2022·J·T14)一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab 有( )个内容互不相同的子串。
{{ select(24) }}
- 12
- 13
- 14
- 15
25.(2025·J·T9)下列关于 C++ string 类的说法,正确的是?
{{ select(25) }}
- string 对象的长度在创建后不能改变
- 可以使用 + 运算符直接连接一个 string 对象和一个 char 类型的字符
- string 的 length() 和 size() 方法返回的值可能不同
- string 对象必须以 '\0' 结尾,且这个结尾符计入 length()
26.(2021·J·T13)递归算法 solve(n):若 n≤1 返回 1;若 n≥5 返回 n×solve(n-2);否则返回 n×solve(n-1)。则调用 solve(7) 得到的返回结果为( )。
{{ select(26) }}
- 105
- 840
- 210
- 420
27.(2025·J·T3)函数 calc(n) 定义:若 n≤1 返回 1;若 n%2==0 返回 calc(n/2)+1;否则返回 calc(n-1)+calc(n-2)。则 calc(5) 的返回值是多少?
{{ select(27) }}
- 5
- 6
- 7
- 8
28.(2022·J·T15)以下对递归方法的描述中,正确的是:
{{ select(28) }}
- 递归是允许使用多组参数调用函数的编程技术
- 递归是通过调用自身来求解问题的编程技术
- 递归是面向对象和数据而不是功能和逻辑的编程语言模型
- 递归是将用某种高级语言转换为机器代码的编程技术
29.(2022·J·T3)运行以下代码片段的行为是:int x = 101; int y = 201; int *p = &x; int *q = &y; p = q;
{{ select(29) }}
- 将 x 的值赋为 201
- 将 y 的值赋为 101
- 将 q 指向 x 的地址
- 将 p 指向 y 的地址
30.(2023·J·T3)阅读代码:union Data{ int num; float value; char symbol; }; union Data data; 若要修改 data 的 value 成员以存储 3.14,正确的方式是:
{{ select(30) }}
- data.value = 3.14;
- value.data = 3.14;
- data->value = 3.14;
- value->data = 3.14;
31.(2023·J·T4)链表节点定义 struct Node{ int data; Node* next; };,指向头部的指针为 Node* head。插入新节点使其成为第一个节点,正确的操作是?
{{ select(31) }}
- Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;
- Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;
- Node* newNode = new Node; newNode->data = 42; head->next = newNode;
- Node* newNode = new Node; newNode->data = 42; newNode->next = head;
32.(2025·J·T10)考虑 C++ 函数:void solve(int &a, int b) { a = a + b; b = a - b; a = a - b; },int x=5, y=10; solve(x,y);。调用 solve 后,x 和 y 的值分别是?
{{ select(32) }}
- 5, 10
- 10, 5
- 10, 10
- 5, 5
三、数据结构
33.(2020·J·T7)链表不具有的特点是( )。
{{ select(33) }}
- 可随机访问任一元素
- 不必事先估计存储空间
- 插入删除不需要移动元素
- 所需空间与线性表长度成正比
34.(2021·J·T5)对于入栈顺序为 a、b、c、d、e 的序列,下列( )不是合法的出栈序列。
{{ select(34) }}
- a,b,c,d,e
- e,d,c,b,a
- b,a,c,d,e
- c,d,a,e,b
35.(2021·J·T9)表达式 a*(b+c)*d 的后缀表达式为( )。
{{ select(35) }}
- **a+bcd
- abc+d
- abc+d**
- a+bcd
36.(2022·J·T2)有 6 个元素,按照 6、5、4、3、2、1 的顺序进入栈 S,下列哪个出栈序列是非法的?
{{ select(36) }}
- 543612
- 453126
- 346521
- 234156
37.(2022·J·T4)链表和数组的区别包括( )。
{{ select(37) }}
- 数组不能排序,链表可以
- 链表比数组能存储更多的信息
- 数组大小固定,链表大小可动态调整
- 以上均正确
38.(2022·J·T5)栈 S 和队列 Q 初始为空。e1~e6 按进栈 S、出栈 S、进队列 Q、出队列 Q 的顺序操作。已知队列 Q 依次有 e2、e4、e3、e6、e5、e1 出队列,则栈 S 的容量至少是( )。
{{ select(38) }}
- 2
- 3
- 4
- 6
39.(2022·J·T6)对表达式 a+(b-c)*d 的前缀表达式为( )。
{{ select(39) }}
- *+a-bcd
- +a*-bcd
- abc-d*+
- abc-+d
40.(2022·J·T10)以下对数据结构的表述不恰当的一项为:
{{ select(40) }}
- 图的深度优先遍历算法常使用的数据结构为栈
- 栈的访问原则为后进先出,队列的访问原则是先进先出
- 队列常常被用于广度优先搜索算法
- 栈与队列存在本质不同,无法用栈实现队列
41.(2022·J·T11)以下哪组操作能完成在双向循环链表结点 p 之后插入结点 s 的效果?
{{ select(41) }}
- p->next->prev=s; s->prev=p; p->next=s; s->next=p->next;
- p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;
- s->prev=p; s->next=p->next; p->next=s; p->next->prev=s;
- s->next=p->next; p->next->prev=s; s->prev=p; p->next=s;
42.(2023·J·T8)后缀表达式 6 2 3 + - 3 8 2 / + * 2 ^ 3 + 对应的中缀表达式是( )。
{{ select(42) }}
- ((6-(2+3))*(3+8/2))^2+3
- 6-2+3*3+8/2^2+3
- (6-(2+3))*((3+8/2)^2)+3
- 6-((2+3)*(3+8/2))^2+3
43.(2025·J·T15)初始为空的整数栈 S 和空队列 P。按顺序处理整数队列 A:7,5,8,3,1,4,2。规则:奇数压入栈 S;偶数且 S 非空,弹出栈顶加入队列 P 末尾;偶数且 S 为空,不操作。处理完毕后队列 P 的内容是?
{{ select(43) }}
- 5,1,3
- 7,5,3
- 3,1,5
- 5,1,3,7
44.(2020·J·T12)独根树的高度为 1。具有 61 个结点的完全二叉树的高度为( )。
{{ select(44) }}
- 7
- 8
- 5
- 6
45.(2021·J·T6)对于有 n 个顶点、m 条边的无向连通图(m>n),需要删掉( )条边才能使其成为一棵树。
{{ select(45) }}
- n-1
- m-n
- m-n-1
- m-n+1
46.(2021·J·T8)如果一棵二叉树只有根结点,那么这棵二叉树高度为 1。请问高度为 5 的完全二叉树有( )种不同的形态?
{{ select(46) }}
- 16
- 15
- 17
- 32
47.(2022·J·T7)字母表 {a,b,c,d,e} 频率分别为 10%,15%,30%,16%,29%。若使用哈夫曼编码,字母 d 的编码长度为( )位。
{{ select(47) }}
- 1
- 2
- 2 或 3
- 3
48.(2022·J·T8)一棵有 n 个结点的完全二叉树用数组存储,根结点在数组第 1 个位置。若存储在数组第 9 个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。
{{ select(48) }}
- 8, 18
- 10, 18
- 8, 19
- 10, 19
49.(2023·J·T5)根节点的高度为 1,一棵拥有 2023 个节点的三叉树高度至少为( )。
{{ select(49) }}
- 6
- 7
- 8
- 9
50.(2023·J·T10)字符 {a,b,c,d,e,f} 频率分别为 5%,9%,12%,13%,16%,45%。以下哪个选项是字符 a,b,c,d,e,f 分别对应的一组哈夫曼编码?
{{ select(50) }}
- 1111,1110,101,100,110,0
- 1010,1001,1000,011,010,00
- 000,001,010,011,10,11
- 1010,1011,110,111,00,01
51.(2023·J·T11)前序遍历为 ABDECFG,中序遍历为 DEBACFG。后序遍历结果是?
{{ select(51) }}
- EDBFGCA
- EDBGCFA
- DEBGFCA
- DBEGFCA
52.(2024·J·T12)已知二叉树前序遍历 [A,B,D,E,C,F,G],中序遍历 [D,B,E,A,F,C,G],求后序遍历。
{{ select(52) }}
- [D,E,B,F,G,C,A]
- [D,E,B,F,G,A,C]
- [D,B,E,F,G,C,A]
- [D,E,B,F,G,A,C]
53.(2025·J·T4)用 5 个权值 10、12、15、20、25 构造哈夫曼树,该树的带权路径长度是多少?
{{ select(53) }}
- 176
- 186
- 196
- 206
54.(2025·J·T14)一棵包含 1000 个结点的完全二叉树,其叶子结点的数量是多少?
{{ select(54) }}
- 499
- 512
- 500
- 501
55.(2020·J·T8)有 10 个顶点的无向图至少应该有( )条边才能确保是一个连通图?
{{ select(55) }}
- 9
- 10
- 11
- 12
56.(2022·J·T9)考虑由 N 个顶点构成的有向连通图,采用邻接矩阵表示时,该矩阵中至少存在( )个非零元素。
{{ select(56) }}
- N-1
- N
- N+1
- N²
57.(2024·J·T11)在无向图中,所有顶点的度数之和等于( )。
{{ select(57) }}
- 图的边数
- 图的边数的两倍
- 图的顶点数
- 图的顶点数的两倍
58.(2025·J·T5)在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和,这个总和等于?
{{ select(58) }}
- 顶点数
- 边数
- 顶点数+边数
- 顶点数×2
四、算法
59.(2021·J·T4)以比较作为基本运算,在 N 个数中找出最大数,最坏情况下所需要的最少的比较次数为( )。
{{ select(59) }}
- N²
- N
- N-1
- N+1
60.(2021·J·T11)哈夫曼编码方法在本质上是一种( )的策略。
{{ select(60) }}
- 枚举
- 贪心
- 递归
- 动态规划
61.(2023·J·T6)小明有 7 个空闲时间段,选至少一个来练习唱歌,任意两个练习时间段之间至少有两个空闲时间段休息。共有( )种选择方案?
{{ select(61) }}
- 31
- 18
- 21
- 33
62.(2025·J·T12)用冒泡排序对数组 {6,1,5,2,4} 进行升序排序,需要进行多少次元素交换?
{{ select(62) }}
- 5
- 6
- 7
- 8
63.(2024·J·T9)假设有序表中有 1000 个元素,则用二分法查找元素 x 最多需要比较( )次。
{{ select(63) }}
- 25
- 10
- 7
- 1
64.(2022·J·T12)以下排序算法的常见实现中,哪个选项的说法是错误的:
{{ select(64) }}
- 冒泡排序算法是稳定的
- 简单选择排序是稳定的
- 简单插入排序是稳定的
- 归并排序算法是稳定的
65.(2025·J·T11)一个 8×8 的棋盘,左上角 (1,1),右下角 (8,8)。机器人从 (1,1) 出发,每次只能向右或向下走一格。到达 (4,5) 有多少种不同的路径?
{{ select(65) }}
- 20
- 35
- 56
- 70
五、数学与其他
66.(2025·J·T8)已知 f[0]=1,f[1]=1,且对于 n≥2 有 f[n]=(f[n-1]+f[n-2])%7,那么 f[2025] 的值是多少?
{{ select(66) }}
- 2
- 4
- 5
- 6
67.(2020·J·T10)五个小朋友并排站成一列,其中有两个小朋友是双胞胎,要求这两个双胞胎必须相邻,则有( )种不同排列方法?
{{ select(67) }}
- 48
- 36
- 24
- 72
68.(2020·J·T14)10 个三好学生名额分配到 7 个班级,每个班级至少有一个名额,一共有( )种不同的分配方案。
{{ select(68) }}
- 84
- 72
- 56
- 504
69.(2020·J·T15)有五副不同颜色的手套(共 10 只,每副左右手各 1 只),一次性从中取 6 只手套,恰好能配成两副手套的不同取法有( )种。
{{ select(69) }}
- 120
- 180
- 150
- 30
70.(2021·J·T10)6 个人,两人组一队,共三队,不区分队伍编号。不同的组队情况有( )种。
{{ select(70) }}
- 10
- 15
- 30
- 20
71.(2021·J·T12)由 1,1,2,2,3 这五个数字组成不同的三位数有( )种。
{{ select(71) }}
- 18
- 15
- 12
- 24
72.(2023·J·T14)一个班级有 10 个男生和 12 个女生。选 3 人小组,至少包含 1 个女生,有多少种可能的组合?
{{ select(72) }}
- 1420
- 1770
- 1540
- 2200
73.(2024·J·T3)某公司 10 名员工分 3 个部门:A 部门 4 人,B 部门 3 人,C 部门 3 人。选 4 人组成工作组,每个部门至少 1 人。有多少种选择方式?
{{ select(73) }}
- 120
- 126
- 132
- 238
74.(2024·J·T14)有 5 个男生和 3 个女生站成一排,规定 3 个女生必须相邻,问有多少种不同的排列方式?
{{ select(74) }}
- 4320 种
- 5040 种
- 3600 种
- 2880 种
75.(2025·J·T6)从 5 位男生和 4 位女生中选出 4 人组成学习小组,要求男生和女生都有。有多少种不同的选法?
{{ select(75) }}
- 126
- 121
- 120
- 100
打印版原资料
相关
在以下作业中:
粤公网安备44195502000252号