CSP-J 初赛单选题整理(2019-2025)
整理说明:本文档收录2019-2025年CSP-J(入门级)初赛第一轮单项选择题,按考察知识点进行分类整理,便于针对性复习。
题量统计:每年15道单选题,7年共105道
使用说明:题目与答案在同一位置,点击「点击显示答案」按钮即可查看答案与解析,方便边做边对。
一、计算机基础知识
1.1 计算机历史与发展
2019-15 以下哪个奖项是计算机科学领域的最高奖?
A.图灵奖
B.鲁班奖
C.诺贝尔奖
D.普利策奖
点击显示答案
答案:A
图灵奖(Turing Award)由美国计算机协会(ACM)于1966年设立,以艾伦·图灵命名,是计算机科学领域的最高荣誉,被誉为"计算机界的诺贝尔奖"。
1.2 计算机系统组成
2020-1 在内存储器中每个存储单元都被赋予一个唯一的序号,称为()。
A.地址
B.序号
C.下标
D.编号
点击显示答案
答案:A内存储器中每个存储单元都有唯一的地址编号,称为地址,CPU通过地址访问存储单元。
2020-4 现有一张分辨率为2048×1024像素的32位真彩色图像。请问要存储这张图像,需要多大的存储空间?
A.16MB
B.4MB
C.8MB
D.32MB
点击显示答案
答案:C32位真彩色图像每像素占4字节(32位÷8=4字节),存储空间 = 2048×1024×4 = 8,388,608字节 = 8MB。
2021-3 目前主流的计算机储存数据最终都是转换成()数据进行储存。
A.二进制
B.十进制
C.八进制
D.十六进制
点击显示答案
答案:A计算机内部所有数据最终都以二进制形式存储和处理,这是由计算机硬件的电子特性决定的。
2023-13 在计算机中,以下哪个选项描述的数据存储容量最小?
A.字节(byte)
B.比特(bit)
C.字(word)
D.千字节(kilobyte)
点击显示答案
答案:B存储容量从小到大:比特(bit) < 字节(byte) < 字(word) < 千字节(KB)。1字节=8比特。
2024-5 记1KB为1024字节(byte),1MB为1024KB,那么1MB是多少二进制位(bit)?
A.1000000
B.1048576
C.8000000
D.8388608
点击显示答案
答案:D1MB = 1024KB = 1024×1024B = 1,048,576B,1B = 8bit,所以1MB = 1,048,576×8 = 8,388,608 bit。
2025-1 32位无符号整数最大值约为()。
A.4×10⁹
B.4×10¹⁸
C.2×10⁹
D.2×10¹⁸
点击显示答案
答案:A32位无符号整数范围是0 ~ 2³²-1 = 4,294,967,295 ≈ 4×10⁹。
1.3 操作系统
2023-15 以下哪个不是操作系统?
A.Linux
B.Windows
C.Android
D.HTML
点击显示答案
答案:DLinux、Windows、Android都是操作系统,HTML是超文本标记语言,用于网页开发。
2024-10 下面哪一个不是操作系统名字?
A.Notepad
B.Linux
C.Windows
D.macOS
点击显示答案
答案:ANotepad(记事本)是Windows自带的文本编辑应用程序,不是操作系统。Linux、Windows、macOS都是操作系统。
1.4 域名与网络
2019-1 中国的国家顶级域名是()。
A..cn
B..ch
C..chn
D..china
点击显示答案
答案:A中国的国家顶级域名是.cn,.ch是瑞士,.chn和.china不是标准域名。国家顶级域名只有两个字母。
? 连接 internet 上的每台计算机必须有 1 个( )地址,该地址共含( )字节。前面若干个字节表示( );后面若干个字节表示( )。为了避免使用数字,人们经常用字母替代,这些名字称为( )。
A. 网络、四、IP地址、网内计算机地址、域名
B. 网络、不超过十、网页、网址、网名
C. 网络、不超过十、网页、网址、网名
D. IP、四、网络地址、网内计算机地址、域名
点击显示答案
答案:D- IP 地址是互联网上每台计算机的唯一数字标识。
- IPv4 地址由 4 个字节(32 位)组成,形如
a.b.c.d,每段范围 0–255。 - IP 地址分为网络地址(标识所属网络)和主机地址(标识网络内具体计算机)两部分。
- 域名是 IP 地址的字母化表示,方便记忆(如
www.baidu.com对应某个 IP 地址),通过 DNS 进行解析。
? 下列 IP 地址中正确的是( )。
A. 202.300.12.4
B. 192.168.0.3
C. 100:128:35:91
D. 111-102-35-21
点击显示答案
答案:BA选项错误:第二段300 > 255,IPv4每个字节范围是0~255。
B选项正确:格式正确,192.168.x.x是典型的C类私有地址。
C选项错误:分隔符错误,IPv4用英文点号.分隔,不用冒号:(冒号是IPv6的分隔符)。
D选项错误:分隔符错误,用了短横线-而不是点号。
IP地址合法性三要素:
- 用
.分成 4 段 - 每段是 0–255 之间的整数
- 不能有多余前导零(如
01不合法)
? 在 TCP/IP 协议中,TCP 和 IP 分别提供什么服务( )。
A. 传输层、网络层
B. 链路层、网络层
C. 传输层、会话层
D. 物理层、链路层
点击显示答案
答案:A- IP(Internet Protocol,网际协议)工作在网络层,负责寻址和路由,即把数据包送到正确的目标地址。
- TCP(Transmission Control Protocol,传输控制协议)工作在传输层,提供可靠的、面向连接的数据传输服务。
【补充练习】 IP 地址是每台上网的计算机所必需的,下列 IP 地址中可以作为合法主机地址的是( )。
A. 225.225.225.225
B. 200.256.192.8
C. 192.168.1.12
D. 0.0.0.0
点击显示答案
答案:CA选项错误:225.x.x.x属于D类地址(组播地址,范围224.0.0.0~239.255.255.255),不能作为主机地址。
B选项错误:256 > 255,每段最大值为255。
C选项正确:合法的C类私有地址(192.168.x.x),可以作为主机地址。
D选项错误:0.0.0.0是特殊地址,表示"所有网络"或"未指定地址",不能分配给主机。
IP地址分类速记:
- A类:1.0.0.0 ~ 126.255.255.255,第一个字节为网络号
- B类:128.0.0.0 ~ 191.255.255.255,前两个字节为网络号
- C类:192.0.0.0 ~ 223.255.255.255,前三个字节为网络号
- D类(组播):224.0.0.0 ~ 239.255.255.255,不能分配给主机
- E类(保留):240.0.0.0 ~ 255.255.255.255
二、数据表示与进制转换
2.1 进制转换
2019-2 二进制数11 1011 1001 0111和01 0110 1110 1011进行逻辑与运算的结果是()。
A.01 0010 1000 1011
B.01 0010 1001 0011
C.01 0010 1000 0001
D.01 0010 1000 0011
点击显示答案
答案:D按位与运算规则:两位都为1结果才为1。
11 1011 1001 0111
& 01 0110 1110 1011
-------------------
01 0010 1000 0011
2020-9 二进制数1011转换成十进制数是()。
A.11
B.10
C.13
D.12
点击显示答案
答案:A1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8+0+2+1 = 11。
2021-7 二进制数101.11对应的十进制数是()。
A.6.5
B.5.5
C.5.75
D.5.25
点击显示答案
答案:C101.11₂ = 1×2² + 0×2¹ + 1×2⁰ + 1×2⁻¹ + 1×2⁻² = 4+0+1+0.5+0.25 = 5.75。
2022-2 八进制数12345670(8)和07654321(8)的和为()。
A.22222221(8)
B.21111111(8)
C.22111111(8)
D.22222211(8)
点击显示答案
答案:D八进制加法,从右到左逐位相加,满8进1。
12345670
+ 07654321
----------
22222211
注意最后一位:0+1=1,7+2=11(八进制)=9(十进制),写1进1。
2022-13 八进制数32.1对应的十进制数是()。
A.24.125
B.24.250
C.26.125
D.26.250
点击显示答案
答案:C32.1₈ = 3×8¹ + 2×8⁰ + 1×8⁻¹ = 24+2+0.125 = 26.125。
2023-9 数101010(2)和166(8)的和为()。
A.10110000(2)
B.236(8)
C.158(10)
D.A0(16)
点击显示答案
答案:D101010₂ = 42₁₀,166₈ = 1×64+6×8+6 = 118₁₀,和 = 160₁₀ = A0₁₆。
2024-2 计算(14₈−1010₂)×D₁₆−1101₂的结果,并选择答案的十进制值()。
A.13
B.14
C.15
D.16
点击显示答案
答案:A14₈ = 12₁₀,1010₂ = 10₁₀,D₁₆ = 13₁₀,1101₂ = 13₁₀。
(12-10)×13-13 = 2×13-13 = 13。
2025-2 二进制按位与运算:已知x=255,x&(x-1)=()。
A.253
B.254
C.255
D.0
点击显示答案
答案:B255 = 11111111₂,254 = 11111110₂,255&254 = 11111110₂ = 254。
技巧:x&(x-1)的作用是消除x最低位的1。
2025-13 进制转换问题(八进制与十六进制混合运算)。
A.388₁₆
B.3A0₁₆
C.3B0₁₆
D.390₁₆
点击显示答案
答案:A720₁₀+184₁₀ = 904₁₀ = 388₁₆(904÷16=56余8,56÷16=3余8,3÷16=0余3)。
2.2 数据类型与存储
2019-3 一个32位整型变量占用()个字节。
A.32
B.128
C.4
D.8
点击显示答案
答案:C1字节 = 8位,32位 = 32÷8 = 4字节。
2024-1 32位int类型的存储范围是()。
A.-2147483647~+2147483647
B.-2147483647~+2147483648
C.-2147483648~+2147483647
D.-2147483648~+2147483648
点击显示答案
答案:C32位有符号int使用补码表示,范围是-2³¹ ~ 2³¹-1,即-2147483648 ~ 2147483647。
2.3 格雷码
2024-4 以下哪个序列对应数字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格雷码的核心性质是:相邻两个编码只有一位不同。验证D选项:
0000→0001(第0位变)→0011(第1位变)→0010(第0位变)→0110(第2位变)→0111(第0位变)→0101(第1位变)→0100(第0位变),每次只变1位,正确。
其他选项均出现"一次变2位"的情况。
三、C++语言基础
3.1 基本数据类型与关键字
2021-1 以下不属于面向对象程序设计语言的是()。
A.C++
B.Python
C.Java
D.C
点击显示答案
答案:DC语言是面向过程的语言,不支持面向对象特性(类、继承、多态等)。C++、Python、Java都支持面向对象。
2023-1 在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?
A.unsigned
B.const
C.static
D.mutable
点击显示答案
答案:Bconst关键字声明常量,值不能被修改。unsigned是无符号修饰符,static是静态修饰符,mutable用于类成员表示可修改。
2024-6 以下哪个不是C++中的基本数据类型?
A.int
B.float
C.struct
D.char
点击显示答案
答案:CC++基本数据类型包括int、float、double、char、bool等。struct是结构体,属于复合/派生数据类型。
2025-9 C++ string类特性问题,以下正确的是()。
A.string长度不可修改
B.string对象可与char类型直接用+连接
C.length()和size()返回不同结果
D.string内部需手动添加'\0'
点击显示答案
答案:BA错误,string长度可修改;B正确,string支持+运算符连接char类型字符;C错误,length()和size()功能完全等价,返回相同结果;D错误,string内部自动管理终止符'\0',无需手动添加。
3.2 循环语句
2024-7 以下哪个不是C++中的循环语句?
A.for
B.while
C.do-while
D.repeat-until
点击显示答案
答案:DC++有三种循环语句:for、while、do-while。repeat-until是Pascal和Lua等语言的循环语法,C++中不存在。
3.3 编译原理
2020-2 编译器的主要功能是()。
A.将源程序翻译成机器指令代码
B.将源程序重新组合
C.将低级语言翻译成高级语言
D.将一种高级语言翻译成另一种高级语言
点击显示答案
答案:A编译器的功能是将高级语言源程序翻译成机器指令代码(目标程序/可执行文件)。解释器是逐行翻译执行。
2024-15 编译器的主要功能是()。
A.将源程序翻译成机器指令代码
B.将源程序重新组合
C.将低级语言翻译成高级语言
D.将一种高级语言翻译成另一种高级语言
点击显示答案
答案:A编译器的功能是将高级语言源程序翻译成机器指令代码。这道题与2020年第2题完全相同。
3.4 运算符与表达式
2020-3 设x=true,y=true,z=false,以下逻辑运算表达式值为真的是()。
A.(y∨z)∧x∧z
B.x∧(z∨y)∧z
C.(x∧y)∧z
D.(x∧y)∨(z∨x)
点击显示答案
答案:Dx=true,y=true,z=false,逐个计算:
- A: (T∨F)∧T∧F = T∧T∧F = F
- B: T∧(F∨T)∧F = T∧T∧F = F
- C: (T∧T)∧F = T∧F = F
- D: (T∧T)∨(F∨T) = T∨T = T ✓
2021-9 表达式a(b+c)d的后缀表达式为()。
A. **a+bcd
B. abc+*d*
C. abc+d**
D. *a*+bcd
点击显示答案
答案:B后缀表达式(逆波兰式)运算符放在操作数后面。a(b+c)d的运算顺序:先算b+c得abc+,再乘a得abc+*,最后乘d得abc+*d*。
2022-6 对表达式a+(b-c)*d的前缀表达式为()。
A.*+a-bcd
B.+a*-bcd
C.abc-d*+
D.abc-+d*
点击显示答案
答案:B前缀表达式(波兰式)运算符放在操作数前面。a+(b-c)*d:先算b-c得-bc,再乘d得*-bcd,最后加a得+a*-bcd。
2023-8 后缀表达式"623+-382/+*2^3+"对应的中缀表达式是()。
A.((6-(2+3))*(3+8/2))^2+3
B.6-2+3*3+8/2^2+3
C.(6-(2+3))*((3+8/2)^2)+3
D.6-((2+3)*(3+8/2))^2+3
点击显示答案
答案:A后缀表达式用栈求值:623+- → 6-(2+3);382/+ → 3+8/2;两者相乘再2次方最后+3,即((6-(2+3))*(3+8/2))^2+3。
2024-8 在C/C++中,(char)('a'+13)与下面的哪一个值相等()。
A.'m'
B.'n'
C.'z'
D.'3'
点击显示答案
答案:B'a'的ASCII码是97,97+13=110,对应字符'n'(a=97,b=98,...,n=110)。
2025-7 布尔表达式化简问题,(a && b) || (!c && a)不等价于()。
A.a && (b || !c)
B.(a || !c) && (b || !c) && a
C.a && (!b || c)
D.!(!a || !b) || (a && !c)
点击显示答案
答案:C原式(a&&b)||(!c&&a) = a&&(b||!c)。
- A: a&&(b||!c) 等价 ✓
- B: 展开后 = a&&(b||!c) 等价 ✓
- C: a&&(!b||c),当a=1,b=1,c=0时原式=1,C=0,不等价 ✗
- D: 展开后 = a&&(b||!c) 等价 ✓
3.5 指针与引用
2022-3 运行代码:int x=101; int y=201; int *p=&x; int *q=&y; p=q; 结果是()。
A.将x的值赋为201
B.将y的值赋为101
C.将q指向x的地址
D.将p指向y的地址
点击显示答案
答案:Dp=q是指针赋值,将q的值(y的地址)赋给p,使p指向y。x和y的值不变,q本身也不变。
2023-3 阅读代码,修改data的value成员以存储3.14,正确的方式是()。
union Data{
int num;
float value;
char symbol;
};
union Data data;
A.data.value=3.14
B.value.data=3.14
C.data->value=3.14
D.value->data=3.14
点击显示答案
答案:A联合体变量访问成员使用点号(.),指针访问成员使用箭头(->)。data是普通变量不是指针,所以用data.value=3.14。
2023-4 假设有一个链表的节点定义如下:
struct Node{
int data;
Node* next;
};
现在有一个指向链表头部的指针: Node* head,如果想要在链表中插入一个新节点,其成员 data 的值为
42 ,并使新节点成为链表的第一个节点,下面哪个操作是正确的? ( )。
A.Node* newNode=new Node; newNode->data=42; newNode->next=head; head=newNode;
B.Node* newNode=new Node; head->data=42; newNode->next=head; head=newNode;
C.Node* newNode=new Node; newNode->data=42; head->next=newNode;
D.Node* newNode=new Node; newNode->data=42; newNode->next=head;
点击显示答案
答案:A链表头插法标准四步:①创建新节点 ②设置data=42 ③新节点next指向原头节点head ④头指针head指向新节点。A选项完整包含这四步。
2025-10 引用与值传递:函数solve(int &a, int b),调用solve(x,y)时x=5,y=10,函数内执行a=a+b; b=a-b; a=a-b; 最终x,y值为()。
A.x=15,y=5
B.x=5,y=10
C.x=10,y=10
D.x=10,y=5
点击显示答案
答案:Ca是引用(绑定到x),b是值传递(拷贝y的值,不影响原变量)。
- 执行a=a+b=5+10=15 → x变为15
- 执行b=a-b=15-10=5 → 仅局部变量b变,y仍为10
- 执行a=a-b=15-5=10 → x变为10
最终x=10, y=10。
3.6 字符串处理
2023-7 以下关于高精度运算的说法错误的是()。
A.高精度计算主要处理大整数或多位小数
B.大整数除以小整数从左到右逐位试商
C.高精度乘法运算时间只与较长者位数有关
D.高精度加法关键在于逐位相加处理进位
点击显示答案
答案:C高精度乘法需要两个数的每一位都相乘,时间复杂度是O(nm),与两个数的位数乘积有关,不是只与较长者位数有关。
四、数据结构
4.1 数组与链表
2019-6 链表不具有的特点是()。
A.插入删除不需要移动元素
B.不必事先估计存储空间
C.所需空间与线性表长度成正比
D.可随机访问任一元素
点击显示答案
答案:D链表不能随机访问元素,必须从头节点开始逐个遍历。数组可以通过下标随机访问任一元素,这是数组和链表最重要的区别之一。
2020-7 链表不具有的特点是()。
A.插入删除不需要移动元素
B.不必事先估计存储空间
C.所需空间与线性表长度成正比
D.可随机访问任一元素
点击显示答案
答案:D这道题与2019年第6题完全相同。链表不能随机访问元素,必须从头节点逐个遍历。
2022-4 链表和数组的区别包括()。
A.数组不能排序,链表可以
B.链表比数组能存储更多信息
C.数组大小固定,链表大小可动态调整
D.以上均正确
点击显示答案
答案:CA错误,数组和链表都能排序;B错误,链表和数组存储的信息量取决于元素数量,不是由数据结构本身决定;C正确,数组大小固定,链表可动态增减节点。
2022-11 在双向循环链表结点p之后插入结点s的正确操作是()。
A.p->next->prev=s; s->prev=p; p->next=s; s->next=p->next;
B.p->next->prev=s; p->next=s; s->prev=p; s->next=p->next;
C.s->prev=p; s->next=p->next; p->next=s; p->next->prev=s;
D.s->next=p->next; p->next->prev=s; s->prev=p; p->next=s;
点击显示答案
答案:D双向链表插入顺序很重要,必须先修改新节点的指针,再修改原链表节点的指针:
① s->next = p->next(新节点的后继指向p的原后继)
② p->next->prev = s(p原后继的前驱指向新节点)
③ s->prev = p(新节点的前驱指向p)
④ p->next = s(p的后继指向新节点)
D选项顺序正确。
4.2 栈与队列
2020-11 图中所示数据结构是()。(图示:先进后出)
A.栈
B.队列
C.二叉树
D.哈希表
点击显示答案
答案:A图示为先进后出(LIFO,Last In First Out)特征,这是栈的本质特征。队列是先进先出(FIFO)。
2021-5 对于入栈顺序为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模拟出栈过程,D选项c,d,a,e,b不可能:c先出栈说明a,b已入栈,d出栈说明d已入栈,此时栈中从底到顶是a,b,栈顶是b不是a,a不可能在b之前出栈。
2022-5 栈S和队列Q初始为空,e1~e6按进栈S、出栈S、进队列Q、出队列Q操作,栈S依次进e1~e6,队列Q依次出e2,e4,e3,e6,e5,e1,则栈S容量至少是()。
A.2
B.3
C.4
D.6
点击显示答案
答案:B模拟整个操作过程,栈中最多同时存在3个元素,因此栈S容量至少为3。
2022-10 以下对数据结构的表述不恰当的是()。
A.图的深度优先遍历常用栈
B.栈后进先出,队列先进先出
C.队列常用于广度优先搜索
D.栈与队列存在本质不同,无法用栈实现队列
点击显示答案
答案:D栈可以用两个队列实现,队列也可以用两个栈实现,D说法错误。A正确,DFS利用递归栈实现;B是栈和队列的定义;C正确,BFS需要队列实现层次遍历。
2024-13 给定一个空栈,入栈顺序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
点击显示答案
答案:DD选项1,3,5,2,4,6不可能:1出栈后栈空,3出栈说明2已入栈且在栈中,5出栈说明4已入栈,此时栈中从底到顶是2,4,栈顶是4不是2,2无法在4之前出栈。
2025-15 栈与队列操作问题:队列A=[7,5,8,3,1,4,2],奇数进栈,偶数弹出栈顶到队列P,最终P为()。
A.[5,1,3]
B.[5,3,1]
C.[7,5,3]
D.[5,1,7]
点击显示答案
答案:A逐个处理队列A的元素:
- 7(奇数)→入栈,栈:[7]
- 5(奇数)→入栈,栈:[7,5]
- 8(偶数)→弹出栈顶5到P,P=[5],栈:[7]
- 3(奇数)→入栈,栈:[7,3]
- 1(奇数)→入栈,栈:[7,3,1]
- 4(偶数)→弹出栈顶1到P,P=[5,1],栈:[7,3]
- 2(偶数)→弹出栈顶3到P,P=[5,1,3],栈:[7]
最终P=[5,1,3]。
4.3 二叉树
2019-8 二叉树顺序存储(根下标1,左孩子2i,右孩子2i+1),数组最大下标至少为()。
A.6
B.10
C.15
D.12
点击显示答案
答案:C完全二叉树顺序存储时,高度为h的满二叉树最大下标为2h-1。若树高为4,最大下标为24-1=15。
2019-14 后序遍历DGJHEBIFCA,中序遍历DBGEHJACIF,前序遍历为()。
A.ABCDEFGHIJ
B.ABDEGHJCFI
C.ABDEGJHCFI
D.ABDEGHJFIC
点击显示答案
答案:B后序遍历最后一个节点是根A,中序遍历中A左边的DBGEHJ是左子树,右边CIF是右子树。递归构建左右子树,最终前序遍历为ABDEGHJCFI。
2020-12 独根树高度为1,61个结点的完全二叉树高度为()。
A.7
B.8
C.5
D.6
点击显示答案
答案:D完全二叉树高度 = ⌊log₂n⌋+1 = ⌊log₂61⌋+1 = 5+1 = 6。
2021-8 只有根结点高度为1,高度为5的完全二叉树有()种不同形态。
A.16
B.15
C.17
D.32
点击显示答案
答案:A高度为5的完全二叉树,前4层是满的(15个节点),第5层节点数可以是1~16,共16种形态。
2022-8 n个结点完全二叉树数组存储,第9个位置结点有兄弟和两个子结点,兄弟和右子结点位置是()。
A.8,18
B.10,18
C.8,19
D.10,19
点击显示答案
答案:C位置i的父节点是⌊i/2⌋,左孩子是2i,右孩子是2i+1。位置9是奇数,说明是右孩子,左兄弟是位置8。位置9的左孩子是18,右孩子是19。所以兄弟是8,右子结点是19。
2023-5 根节点高度为1,2023个节点的三叉树高度至少为()。
A.6
B.7
C.8
D.9
点击显示答案
答案:C三叉树每层最多3(k-1)个节点。高度h的满三叉树最多(3h-1)/2个节点。(37-1)/2=1093<2023,(38-1)/2=3280>2023,所以至少8层。
2023-11 前序遍历ABDECFG,中序遍历DEBACFG,后序遍历结果是()。
A.EDBGFCA
B.EDGBFCA
C.DEBGFCA
D.DBEGFCA
点击显示答案
答案:A前序第一个A是根,中序中A左边DEB是左子树,右边CFG是右子树。递归构建得后序遍历为EDBGFCA。
2024-12 前序遍历[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,E,B,F,G,A,C]
点击显示答案
答案:A前序A是根,中序DBE在A左侧(左子树),FCG在A右侧(右子树)。
- 左子树前序BDE,中序DBE → B是根,D是左孩子,E是右孩子
- 右子树前序CFG,中序FCG → C是根,F是左孩子,G是右孩子
后序遍历顺序:左子树→右子树→根,即D,E,B,F,G,C,A。
2025-14 完全二叉树叶子节点数问题:1000个节点的完全二叉树,叶子节点数为()。
A.250
B.501
C.500
D.499
点击显示答案
答案:C完全二叉树叶子节点数 = ⌈n/2⌉ = ⌈1000/2⌉ = 500。
4.4 图论基础
2020-8 10个顶点的无向图至少应有()条边才能确保是连通图。
A.9
B.10
C.11
D.12
点击显示答案
答案:An个顶点的连通图至少需要n-1条边(形成一棵树)。10个顶点至少需要9条边。
2021-6 n个顶点、m条边的无向连通图(m>n),需删掉()条边才能成为树。
A.n-1
B.m-n
C.m-n-1
D.m-n+1
点击显示答案
答案:D树有n-1条边,现有m条边,需要删掉 m-(n-1) = m-n+1 条边,就能得到一棵树。
2021-14 以a为起点深度优先遍历,b,c,d,e中可能作为最后一个遍历到的点个数()。
A.1
B.2
C.3
D.4
点击显示答案
答案:BDFS最后一个访问的点取决于图的连接关系和遍历顺序,通过分析图结构,b,c,d,e中只有2个点可能作为最后一个。
2022-9 N个顶点的有向连通图,邻接矩阵至少存在()个非零元素。
A.N-1
B.N
C.N+1
D.N²
点击显示答案
答案:B有向强连通图至少需要N条边(形成一个有向环:1→2→3→...→N→1),邻接矩阵至少N个非零元素。
2023-12 有向无环图含4条边:(1,2),(1,3),(2,4),(3,4),有效拓扑排序是()。
A.4,2,3,1
B.1,2,3,4
C.1,2,4,3
D.2,1,3,4
点击显示答案
答案:B拓扑排序要求对每条边(u,v),u必须排在v前面。1在2和3前面,2和3在4前面,因此1,2,3,4是合法的拓扑排序。
2024-11 无向图中,所有顶点的度数之和等于()。
A.图的边数
B.图的边数的两倍
C.图的顶点数
D.图的顶点数的两倍
点击显示答案
答案:B无向图每条边连接两个顶点,为每个顶点贡献1度,所以所有顶点度数之和 = 2×边数。这是图论中的"握手定理"。
2025-5 有向图入度与出度关系问题:以下正确的是()。
A.入度之和=出度之和=顶点数
B.入度之和=出度之和=边数
C.入度之和≠出度之和
D.入度之和=顶点数-1
点击显示答案
答案:B有向图每条边贡献一个入度和一个出度,所以所有顶点入度之和 = 出度之和 = 边数。
4.5 哈夫曼树/编码
2021-11 哈夫曼编码本质上是一种()策略。
A.枚举
B.贪心
C.递归
D.动态规划
点击显示答案
答案:B哈夫曼编码每次选取两个权值最小的节点合并,是典型的贪心策略。贪心算法的特点是每一步都做局部最优选择,最终得到全局最优解。
2022-7 字母{a,b,c,d,e}频率10%,15%,30%,16%,29%,哈夫曼编码中d的编码长度为()位。
A.1
B.2
C.2或3
D.3
点击显示答案
答案:B构造哈夫曼树:10+15=25, 16+25=41, 29+30=59, 41+59=100。d(16%)在第二层,编码长度为2位。
2023-10 字符{a,b,c,d,e,f}频率5%,9%,12%,13%,16%,45%,哈夫曼编码是()。
A.1111,1110,101,100,110,0
B.1010,1001,1000,011,010,00
C.000,001,010,011,10,11
D.1010,1011,110,111,00,01
点击显示答案
答案:A频率越高编码越短:f(45%)编码最短为0(1位),e(16%)编码110(3位),d(13%)编码100(3位),c(12%)编码101(3位),b(9%)编码1110(4位),a(5%)编码1111(4位)。
2025-4 哈夫曼树带权路径长度问题:叶子节点权值10,12,15,20,25,WPL为()。
A.180
B.186
C.192
D.200
点击显示答案
答案:B构造哈夫曼树过程:10+12=22, 15+20=35, 22+25=47, 35+47=82。
WPL = 10×3 + 12×3 + 15×2 + 20×2 + 25×2 = 30+36+30+40+50 = 186。
五、算法基础
5.1 排序算法
2020-5 冒泡排序算法,n个数最少需要比较多少次?
A.n²
B.n-2
C.n-1
D.n
点击显示答案
答案:C冒泡排序最好情况(数组已经有序)只需进行1轮,比较n-1次,发现无交换后提前结束。
2022-12 以下排序算法说法错误的是()。
A.冒泡排序稳定
B.简单选择排序稳定
C.简单插入排序稳定
D.归并排序稳定
点击显示答案
答案:B简单选择排序不稳定。例如序列[5,5,2],第一轮选最小元素2与第一个5交换,两个5的相对顺序就被改变了。冒泡、插入、归并排序都是稳定的。
2025-12 冒泡排序交换次数问题:对数组[6,1,5,2,4]进行冒泡排序,总交换次数为()。
A.4
B.6
C.8
D.10
点击显示答案
答案:B模拟冒泡排序过程:
- 第1轮:6分别与1、5、2、4交换4次 → [1,5,2,4,6]
- 第2轮:5分别与2、4交换2次 → [1,2,4,5,6]
- 第3、4轮:已有序,无交换
总交换次数 = 4+2 = 6次。
5.2 查找算法
2019-5 100个已排好序数据,折半查找最大比较次数为()。
A.7
B.10
C.6
D.8
点击显示答案
答案:A二分查找最大比较次数 = ⌈log₂(n+1)⌉ = ⌈log₂101⌉ = 7(因为2^7=128>100)。
2024-9 有序表1000个元素,二分法查找最多需要比较()次。
A.25
B.10
C.7
D.1
点击显示答案
答案:B⌈log₂1001⌉ = 10(因为2^10=1024>1000),最多比较10次。
5.3 递归算法
2020-6 递归算法XYZ(), 输出是()。
XYZ(A[1..n]):
if n=1 return A[1];
else temp=XYZ(A[1..n-1]);
if temp<A[n] return temp;
else return A[n];
A.平均值
B.最小值
C.中值
D.最大值
点击显示答案
答案:B递归过程:每次将前n-1个的结果与A[n]比较,返回较小值。最终返回整个数组的最小值。
2021-4 以比较为基本运算,N个数中找最大数,最坏情况最少比较次数()。
A.N²
B.N
C.N-1
D.N+1
点击显示答案
答案:CN个数找最大值,每个数(除第一个外)至少需要比较一次才能确定不是最大值,共N-1次比较。
2021-13 递归算法,solve(7)=()。
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
点击显示答案
答案:Csolve(7) = 7×solve(5)
solve(5) = 5×solve(3)
solve(3) = 3×solve(2)
solve(2) = 2×solve(1) = 2×1 = 2
回代:solve(3)=3×2=6, solve(5)=5×6=30, solve(7)=7×30=210。
2022-15 以下对递归方法描述正确的是()。
A.递归是允许使用多组参数调用函数
B.递归是通过调用自身来求解问题
C.递归是面向对象编程模型
D.递归是将高级语言转换为机器代码
点击显示答案
答案:B递归的核心特征是函数在定义中调用自身,将大问题分解为规模更小的同类子问题来求解。
2025-3 递归函数,calc(5)=()。
calc(n):
n≤1返回1;
偶数返回 calc(n/2)+1;
奇数返回 calc(n-1)+calc(n-2)。
A.5
B.6
C.7
D.8
点击显示答案
答案:B从底向上计算:
- calc(1)=1
- calc(2)=calc(1)+1=2
- calc(3)=calc(2)+calc(1)=2+1=3
- calc(4)=calc(2)+1=2+1=3
- calc(5)=calc(4)+calc(3)=3+3=6
2025-8 递推序列周期问题:f[0]=1,f[1]=1,f[n]=(f[n-1]+f[n-2])%7,f[2025]=()。
A.1
B.2
C.5
D.6
点击显示答案
答案:D先写出前若干项找周期:
f[0]=1, f[1]=1, f[2]=2, f[3]=3, f[4]=5, f[5]=1, f[6]=6, f[7]=0,
f[8]=6, f[9]=6, f[10]=5, f[11]=4, f[12]=2, f[13]=6, f[14]=1, f[15]=0,
f[16]=1, f[17]=1...
可以看到从f[0]开始周期为16。
2025 ÷ 16 = 126余9,f[9]=6。
5.4 程序段功能分析
2019-4 程序段:s=a; for(b=1;b<=c;b++) s=s-1; 等价的赋值语句是()。
A.s=a-c
B.s=a-b
C.s=s-c
D.s=b-c
点击显示答案
答案:A循环执行c次,每次s减1,总共减c,等价于s=a-c。
六、数学知识
6.1 组合与排列
2019-7 8个同样的球放在5个同样的袋子里,允许空袋,多少种分法?
A.22
B.24
C.18
D.20
点击显示答案
答案:C整数分拆问题:将8拆分成最多5个非负整数之和(不计顺序)。枚举所有分法,共18种。
2019-13 5位数字车牌,倒过来仍是原车牌,最多多少个?(0,1,8颠倒不变,6↔9)
A.60
B.125
C.75
D.100
点击显示答案
答案:C5位车牌关于中心对称,形式为xyzyx:
- 中间z可以是0,1,8 → 3种选择
- 第二位y可以是0,1,8,6,9 → 5种选择
- 第一位x可以是0,1,8,6,9 → 5种选择
共 3×5×5 = 75种。
2020-10 5个小朋友排队,2个双胞胎必须相邻,多少种排列?
A.48
B.36
C.24
D.72
点击显示答案
答案:A捆绑法:双胞胎视为1个人,共4个"单位"排列,有4!=24种;双胞胎内部有2!=2种排列。共24×2=48种。
2020-14 10个三好学生名额分配到7个班级,每班至少1个,多少种方案?
A.84
B.72
C.56
D.504
点击显示答案
答案:A插板法:10个名额之间有9个空隙,插6块板分成7份,C(9,6)=C(9,3)=84种。
2020-15 5副不同颜色手套(10只),取6只恰好配成2副,多少种取法?
A.120
B.180
C.150
D.30
点击显示答案
答案:A- 先选2副完整配对:C(5,2)=10种
- 再从剩下3副中选2只不同副(不能配成第三副):C(3,2)×2×2=12种
共10×12=120种。
2021-10 6个人两人一队组成三队,不区分队伍编号,多少种组队?
A.10
B.15
C.30
D.20
点击显示答案
答案:B6人分3队每队2人:C(6,2)×C(4,2)×C(2,2) = 15×6×1 = 90,因为队伍无编号,除以3!=6,90÷6=15种。
2021-12 由1,1,2,2,3组成不同三位数有()种。
A.18
B.15
C.12
D.24
点击显示答案
答案:A分类讨论:
- 三个数字全不同(1,2,3):3!=6种
- 有两个1:C(3,2)×2=6种(选2个位置放1,剩下位置放2或3)
- 有两个2:C(3,2)×2=6种
共6+6+6=18种。
2021-15 4人过河,船最多坐2人,过河时间1,2,4,8,两人时间为较大者,最短时间()。
A.14
B.15
C.16
D.17
点击显示答案
答案:B经典过河问题,最优策略(最快的人来回送):
1和2过河(2分钟),1回来(1分钟),4和8过河(8分钟),2回来(2分钟),1和2过河(2分钟)。
总时间:2+1+8+2+2=15分钟。
2022-14 字符串abcab有多少个内容互不相同的子串?
A.12
B.13
C.14
D.15
点击显示答案
答案:B枚举所有子串:长度1有a,b,c(去重3个);长度2有ab,bc,ca(3个);长度3有abc,bca,cab(3个);长度4有abca,bcab(2个);长度5有abcab(1个);还有单个字符a,b,c,去重后共13个不同子串。
2023-6 7个空闲时间段,选至少一个练习唱歌,任意两个练习时间段间至少休息2个,多少种方案?
A.31
B.18
C.21
D.33
点击显示答案
答案:B设选k个时间段,需要2(k-1)个休息间隔,总占用k+2(k-1)=3k-2≤7,所以k≤3。
- k=1:C(7,1)=7种
- k=2:插空法,C(5,2)=10种
- k=3:C(3,3)=1种
共7+10+1=18种。
2023-14 班级10男12女,选3人小组至少1女,多少种组合?
A.1420
B.1770
C.1540
D.2200
点击显示答案
答案:A总选法C(22,3)=1540种,全男C(10,3)=120种,至少1女 = 1540-120=1420种。
2024-3 公司10名员工分3部门(4,3,3),选4人组成工作组每部门至少1人,多少种方式?
A.120
B.126
C.132
D.238
点击显示答案
答案:B分类讨论:
- A部门2人,B、C各1人:C(4,2)×C(3,1)×C(3,1)=54
- B部门2人,A、C各1人:C(4,1)×C(3,2)×C(3,1)=36
- C部门2人,A、B各1人:C(4,1)×C(3,1)×C(3,2)=36
共54+36+36=126种。
2024-14 5男3女生站一排,3女生必须相邻,多少种排列?
A.4320
B.5040
C.3600
D.2880
点击显示答案
答案:A捆绑法:3女生视为1人,共6个单位排列,6!=720;女生内部3!=6种排列。共720×6=4320种。
2025-6 组合数计算:9人(5男4女)选4人,至少1男1女,多少种选法?
A.120
B.125
C.120
D.126
点击显示答案
答案:C(即120)总选法C(9,4)=126种,全男C(5,4)=5种,全女C(4,4)=1种,至少1男1女 = 126-5-1=120种。
2025-11 路径组合数:从(1,1)到(4,5),只能向右或向下,多少条路径?
A.30
B.35
C.40
D.42
点击显示答案
答案:B从(1,1)到(4,5)需要向右走3步,向下走4步,共7步,选3步向右(其余向下):C(7,3)=35条路径。
6.2 抽屉原理(鸽巢原理)
2019-12 52张牌(4花色各13张),随机抽13张,至少()张花色一致。
A.4
B.2
C.3
D.5
点击显示答案
答案:A抽屉原理:13张牌分到4种花色,⌈13/4⌉=4,至少4张牌花色相同。
6.3 素数与最大公约数
2019-9 100以内最大的素数是()。
A.89
B.97
C.91
D.93
点击显示答案
答案:B100以内的素数中最大的是97。注意91=7×13,93=3×31,都不是素数。
2019-10 319和377的最大公约数是()。
A.27
B.33
C.29
D.31
点击显示答案
答案:C辗转相除法:377÷319=1余58,319÷58=5余29,58÷29=2余0。GCD=29。
6.4 逻辑运算
2020-3(重复) 设x=true,y=true,z=false,以下逻辑运算表达式值为真的是()。
A.(y∨z)∧x∧z
B.x∧(z∨y)∧z
C.(x∧y)∧z
D.(x∧y)∨(z∨x)
点击显示答案
答案:D参见3.4节2020-3题解析。这道题在多个知识点下出现,说明逻辑运算既是语言基础也是数学基础。
6.5 数论与递推
2020-13 干支纪年法,1949年的天干地支是()。
A.己酉 B.己亥 C.己丑 D.己卯
点击显示答案
答案:C1949年天干:1949÷10=194余9,第9位天干为"己";
1949年地支:1949÷12=162余5,第5位地支为"丑"。
所以1949年是己丑年。
七、优化与策略问题
2019-11 小胖减肥:方案一3公里300千卡(半小时),方案二5公里600千卡(1小时)。周一到周四半小时,周五到周日1小时。每周最多21公里。每周最多消耗多少千卡?
A.3000
B.2500
C.2400
D.2520
点击显示答案
答案:C设方案一做x次(每次0.5小时、3公里、300千卡),方案二做y次(每次1小时、5公里、600千卡)。
约束条件:0.5x≤4(周一到四共4个半小时时间段),y≤3(周五到日共3个1小时时间段),3x+5y≤21(总路程不超过21公里)。
目标最大化 300x+600y。
枚举y=3时,3x≤6→x≤2,消耗300×2+600×3=600+1800=2400千卡。
y=2时,3x≤11→x≤3,消耗300×3+600×2=900+1200=2100千卡。
最优解为2400千卡。
知识点分布统计(2019-2025)
高频考点TOP10
- 组合排列(出现14次)— 捆绑法、插空法、分类讨论、正难则反
- 进制转换与位运算(出现9次)— 二、八、十六进制互转,与或非异或
- 二叉树遍历与性质(出现9次)— 前序、中序、后序互推,完全二叉树性质
- C++语法基础(出现8次)— 数据类型、关键字、循环语句、指针引用
- 栈与队列(出现7次)— 出栈序列合法性、栈容量计算
- 图论基础(出现7次)— 连通图边数、度数之和、拓扑排序
- 递归与递推(出现6次)— 递归函数分析、递推周期
- IP地址与网络基础(出现4次)— IP地址合法性、TCP/IP分层、域名(新增热点)
- 哈夫曼编码(出现4次)— 构造方法、WPL计算
- 排序算法(出现3次)— 稳定性、比较次数、交换次数
IP地址考点速记卡
IPv4地址核心知识点
格式要求:
- 由4个十进制数字组成,用英文点号
.分隔 - 每段数字范围是 0~255(一个字节,8位)
- 例如:
192.168.1.1是合法地址
地址分类:
- A类:1.0.0.0 ~ 126.255.255.255(第一个字节为网络号)
- B类:128.0.0.0 ~ 191.255.255.255(前两个字节为网络号)
- C类:192.0.0.0 ~ 223.255.255.255(前三个字节为网络号)
- D类:224.0.0.0 ~ 239.255.255.255(组播地址,不能分配给主机)
- E类:240.0.0.0 ~ 255.255.255.255(保留实验用)
特殊地址(不能分配给主机):
0.0.0.0:表示"所有网络"或"未指定地址"127.0.0.1:回环地址,用于本机测试255.255.255.255:广播地址- 私有地址:
10.x.x.x、172.16-31.x.x、192.168.x.x
TCP/IP协议分层:
- 网络层:IP协议(负责寻址和路由)
- 传输层:TCP(可靠连接)、UDP(不可靠但快速)
- 应用层:HTTP、FTP、DNS等
备考建议
按优先级复习
第一梯队(必考,每年出现):
- 二叉树遍历与性质(前中后序互推、完全二叉树)
- 进制转换与位运算
- 栈与队列操作(出栈序列)
- 组合排列计算
第二梯队(高频,隔年出现):
- C++语法基础(数据类型、指针引用、运算符)
- 图论基础概念(连通性、度数、拓扑排序)
- IP地址与网络基础(近年新热点,务必掌握)
第三梯队(中频,需掌握):
- 排序算法稳定性
- 递归函数分析
- 哈夫曼编码
- 二分查找比较次数

浙公网安备 33010602011771号