背诵与杂项

1. 2019 第 1 题

  • 出处:CSP-J1 2019 入门级第一轮第 1 题
  • 知识点:计算机网络基础;国家顶级域名;互联网常识
  • 分值:2
  1. 中国的国家顶级域名是() A. .cn B. .ch C. .chn D. .china

答案:A(.cn) 解析:中国国家顶级域名是 .cn,这是网络常识题,直接记忆即可。

2. 2019 第 15 题

  • 出处:CSP-J1 2019 入门级第一轮第 15 题
  • 知识点:计算机发展史;图灵奖;信息学常识
  • 分值:2
  1. 以下哪个奖项是计算机科学领域的最高奖?() A. 图灵奖 B. 鲁班奖 C. 诺贝尔奖 D. 普利策奖

答案:A(图灵奖) 解析:图灵奖是计算机科学领域最重要的奖项之一,常被称为“计算机界的诺贝尔奖”。

3. 2020 第 2 题

  • 出处:CSP-J1 2020 入门级第一轮第 2 题
  • 知识点:编译原理基础;编译器功能;源程序与目标代码
  • 分值:2
  1. 编译器的主要功能是( )。 A. 将源程序翻译成机器指令代码 B. 将源程序重新组合 C. 将低级语言翻译成高级语言 D. 将一种高级语言翻译成另一种高级语言

答案:A(将源程序翻译成机器指令代码) 解析:编译器的主要作用是把源程序翻译成机器能够执行的目标代码或机器指令代码。

4. 2020 第 13 题

  • 出处:CSP-J1 2020 入门级第一轮第 13 题
  • 知识点:模运算;表格查找;干支纪年;数学建模
  • 分值:2
  1. 干支纪年法是中国传统的纪年方法,由 1010 个天干和 1212 个地支组合成 6060 个天干地支。由公历年份可以根据以下公式和表格换算出对应的天干地支。
  • 天干 =(公历年份)除以 1010 所得余数
  • 地支 =(公历年份)除以 1212 所得余数

例如,今年是 20202020 年,20202020 除以 1010 余数为 00,查表为"庚”;20202020 除以 1212,余数为 44,查表为“子” 所以今年是庚子年。

请问 19491949 年的天干地支是( ) A. 己酉 B. 己亥 C. 己丑 D. 己卯

答案:C(己丑) 解析:按题中表格,1949 分别对 10 和 12 取余后查天干地支,得到己丑。

5. 2021 第 1 题

  • 出处:CSP-J1 2021 入门级第一轮第 1 题
  • 知识点:程序设计语言分类;面向对象语言;C/C++/Python/Java 常识
  • 分值:2
  1. 以下不属于面向对象程序设计语言的是( )。 A. C++ B. Python C. Java D. C

答案:D(C) 解析:C 是过程式语言,不属于面向对象程序设计语言;C++、Python、Java 都支持面向对象。

6. 2021 第 2 题

  • 出处:CSP-J1 2021 入门级第一轮第 2 题
  • 知识点:计算机发展史;图灵奖;信息学常识
  • 分值:2
  1. 以下奖项与计算机领域最相关的是( )。 A. 奥斯卡奖 B. 图灵奖 C. 诺贝尔奖 D. 普利策奖

答案:B(图灵奖) 解析:图灵奖是计算机领域最相关的奖项。

7. 2022 第 1 题

  • 出处:CSP-J1 2022 入门级第一轮第 1 题
  • 知识点:C++ 面向对象;类与结构体;继承与多态;语言特性辨析
  • 分值:2
  1. 以下哪种功能没有涉及 C++ 语言的面向对象特性支持:( )。 A. C++ 中调用 printf 函数 B. C++ 中调用用户定义的类成员函数 C. C++ 中构造一个 classstruct D. C++ 中构造来源于同一基类的多个派生类

答案:A(C++ 中调用 printf 函数) 解析:调用 printf 是普通函数调用,不体现 C++ 面向对象特性。

8. 2023 第 15 题

  • 出处:CSP-J1 2023 入门级第一轮第 15 题
  • 知识点:操作系统常识;系统软件辨析
  • 分值:2
  1. 以下哪个不是操作系统?() A. Linux B. Windows C. Android D. HTML

答案:D(HTML) 解析:HTML 是超文本标记语言,不是操作系统。

9. 2024 第 10 题

  • 出处:CSP-J1 2024 入门级第一轮第 10 题
  • 知识点:操作系统常识;应用软件与系统软件辨析
  • 分值:2
  1. 下面的哪一个不是操作系统名字?( ) A. Notepad B. Linux C. Windows D. macOS

答案:A(Notepad) 解析:Linux、Windows、macOS 是操作系统,Notepad 是应用程序。

10. 2024 第 15 题

  • 出处:CSP-J1 2024 入门级第一轮第 15 题
  • 知识点:编译器;源代码到机器代码;程序执行流程
  • 分值:2
  1. 编译器的主要作用是什么?( ) A. 直接执行源代码 B. 将源代码转换为机器代码 C. 进行代码调试 D. 管理程序运行时的内存

答案:B(将源代码转换为机器代码) 解析:编译器的主要作用是把源代码转换为机器代码或目标代码。

计算机基础知识

1. 2019 第 3 题

  • 出处:CSP-J1 2019 入门级第一轮第 3 题
  • 知识点:整型存储;位与字节换算;数据类型基础
  • 分值:2
  1. 一个 3232 位整型变量占用()个字节。 A. 32 B. 128 C. 4 D. 8

答案:C(4) 解析:1 字节等于 8 位,32 位整型占用 32 / 8 = 4 字节。

2. 2020 第 1 题

  • 出处:CSP-J1 2020 入门级第一轮第 1 题
  • 知识点:计算机组成;内存地址;存储单元
  • 分值:2
  1. 在内存储器中每个存储单元都被赋予一个唯一的序号,称为()。 A. 地址 B. 序号 C. 下标 D. 编号

答案:A(地址) 解析:内存中每个存储单元都有唯一编号,这个编号称为地址。

3. 2020 第 4 题

  • 出处:CSP-J1 2020 入门级第一轮第 4 题
  • 知识点:图像存储;像素;位深;容量换算
  • 分值:2
  1. 现有一张分辨率为 2048×10242048\times 1024 像素的 3232 位真彩色图像。请问要存储这张图像,需要多大的存储空间?( )。 A. 16MB B. 4MB C. 8MB D. 2MB

答案:C(8MB) 解析:像素数为 2048*1024,每像素 32 bit,即 4 Byte,总空间为 2048*1024*4=8MB

4. 2020 第 9 题

  • 出处:CSP-J1 2020 入门级第一轮第 9 题
  • 知识点:进制转换;二进制转十进制
  • 分值:2
  1. 二进制数 10111011 转换成十进制数是( )。 A. 11 B. 10 C. 13 D. 12

答案:A(11) 解析:二进制 1011 等于 1*8+0*4+1*2+1=11

5. 2021 第 3 题

  • 出处:CSP-J1 2021 入门级第一轮第 3 题
  • 知识点:信息编码;二进制存储;计算机基础
  • 分值:2
  1. 目前主流的计算机储存数据最终都是转换成( )数据进行储存。 A. 二进制 B. 十进制 C. 八进制 D. 十六进制

答案:A(二进制) 解析:计算机底层用二进制表示和存储数据。

6. 2021 第 7 题

  • 出处:CSP-J1 2021 入门级第一轮第 7 题
  • 知识点:二进制小数;进制转换
  • 分值:2
  1. 二进制数 101.11101.11 对应的十进制数是( )。 A. 6.5 B. 5.5 C. 5.75 D. 5.25

答案:C(5.75) 解析:101.11_2 = 1*4+0*2+1 + 1/2 + 1/4 = 5.75

7. 2022 第 13 题

  • 出处:CSP-J1 2022 入门级第一轮第 13 题
  • 知识点:八进制小数;进制转换
  • 分值:2
  1. 八进制数 32.132.1 对应的十进制数是( )。 A. 24.12524.125 B. 24.25024.250 C. 26.12526.125 D. 26.25026.250

答案:C(26.12526.125) 解析:32.1_8 = 3*8 + 2 + 1/8 = 26.125

8. 2023 第 2 题

  • 出处:CSP-J1 2023 入门级第一轮第 2 题
  • 知识点:八进制运算;进制加法;数位进位
  • 分值:2
  1. 八进制数 12345670812345670_807654321807654321_8 的和为 A. 22222221822222221_8 B. 21111111821111111_8 C. 22111111822111111_8 D. 22222211822222211_8

答案:D(22222211822222211_8) 解析:八进制逐位相加并处理进位,结果为 22222211_8

9. 2023 第 9 题

  • 出处:CSP-J1 2023 入门级第一轮第 9 题
  • 知识点:二进制/八进制运算;进制转换
  • 分值:2
  1. 1010102101010_21668166_8 的和为 ( ) A. (10110000)2(10110000)_2 B. (236)8(236)_8 C. (158)10(158)_{10} D. (A0)16(A0)_{16}

答案:D((A0)16(A0)_{16}) 解析:101010_2=42166_8=118,和为 160,即十六进制 A0

10. 2023 第 13 题

  • 出处:CSP-J1 2023 入门级第一轮第 13 题
  • 知识点:数据存储单位;容量比较;bit/Byte/KB 换算
  • 分值:2
  1. 在计算机中,以下哪个选项描述的数据存储容量最小() A. 字节 (byte) B. 比特 (bit) C. 字 (word) D. 千字节 (kilobyte)

答案:B(比特 (bit)) 解析:bit 是最小的数据单位,Byte、KB、MB 都比 bit 大。

11. 2024 第 1 题

  • 出处:CSP-J1 2024 入门级第一轮第 1 题
  • 知识点:int 范围;补码;有符号整数
  • 分值:2
  1. 32 位 int 类型的存储范围是( )? A. -2147483647 ~ +2147483647 B. -2147483647 ~ +2147483648 C. -2147483648 ~ +2147483647 D. -2147483648 ~ +2147483648

答案:C(-2147483648 ~ +2147483647) 解析:32 位有符号 int 通常范围是 -2^312^31-1,即 -21474836482147483647

12. 2024 第 2 题

  • 出处:CSP-J1 2024 入门级第一轮第 2 题
  • 知识点:二/八/十六进制混合运算;进制转换
  • 分值:2
  1. 计算 (14810102)×D1611012(14_8 - 1010_2) \times D_{16} - 1101_2 的结果,并选择答案的十进制值:( ) A. 13 B. 14 C. 15 D. 16

答案:A(13) 解析:先转十进制:14_8=121010_2=10D_16=131101_2=13,所以 (12-10)*13-13=13

13. 2024 第 4 题

  • 出处:CSP-J1 2024 入门级第一轮第 4 题
  • 知识点:格雷码;二进制编码;相邻码性质
  • 分值:2
  1. 以下哪个序列对应数字 007744 位二进制格雷码(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(0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100) 解析:格雷码相邻两个编码只变化一位。选项列出 8 个编码,对应数字 0 至 7;逐项检查相邻编码的变化位数,只有选项 D 的相邻两项均只差 1 位。

14. 2024 第 5 题

  • 出处:CSP-J1 2024 入门级第一轮第 5 题
  • 知识点:存储单位换算;KB/MB/Byte/bit
  • 分值:2
  1. 记 1KB 为 1024 字节(byte),1MB 为 1024KB,那么 1MB 是多少二进制位(bit)?( ) A. 1000000 B. 1048576 C. 8000000 D. 8388608

答案:D(8388608) 解析:1MB=1024*1024 Byte,每 Byte 为 8 bit,所以为 8388608 bit。

15. 2025 第 1 题

  • 出处:CSP-J1 2025 入门级第一轮第 1 题
  • 知识点:无符号整数;32 位范围;数量级估算
  • 分值:2
  1. 一个 3232 位无符号整数可以表示的最大值,最接近下列哪个选项? A. 4×1094 \times 10^9 B. 3×10103 \times 10^{10} C. 2×1092 \times 10^9 D. 2×10102 \times 10^{10}

答案:A(4×1094 \times 10^9) 解析:32 位无符号整数最大值为 2^32-1,约为 4.29*10^9,最接近 4*10^9

16. 2025 第 13 题

  • 出处:CSP-J1 2025 入门级第一轮第 13 题
  • 知识点:十进制/八进制/十六进制转换;进制运算
  • 分值:2
  1. 十进制数 72010720_{10} 和八进制数 2708270_8 的和用十六进制表示是多少? A. 38816388_{16} B. 3DE163DE_{16} C. 28816288_{16} D. 99016990_{16}

答案:A(38816388_{16}) 解析:270_8=184720+184=904,904 转十六进制为 388_16

语法补强

1. 2019 第 2 题

  • 出处:CSP-J1 2019 入门级第一轮第 2 题
  • 知识点:二进制表示;位运算;按位与
  • 分值:2
  1. 二进制数 11 1011 1001 0111\text{11 1011 1001 0111}01 0110 1110 1011\text{01 0110 1110 1011} 进行按位与运算的结果是()。

编者注:原题为“逻辑与”,但是根据题意应当是按位与。 A. 01 0010 1000 1011\text{01 0010 1000 1011} B. 01 0010 1001 0011\text{01 0010 1001 0011} C. 01 0010 1000 0001\text{01 0010 1000 0001} D. 01 0010 1000 0011\text{01 0010 1000 0011}

答案:D(01 0010 1000 0011\text{01 0010 1000 0011}) 解析:按位与逐位计算,只有两个二进制位都为 1 时结果才为 1,计算得到 01 0010 1000 0011

2. 2019 第 4 题

  • 出处:CSP-J1 2019 入门级第一轮第 4 题
  • 知识点:C/C++ 循环语句;变量变化追踪;程序段等价变换
  • 分值:2
  1. 若有如下程序段,其中 sabc 均已定义为整型变量,且 ac 均已赋值(c 大于 00
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(s = a - c;) 解析:循环从 b=1b=c 共执行 c 次,每次让 s 减 1,初值为 a,所以最终 s=a-c

3. 2020 第 3 题

  • 出处:CSP-J1 2020 入门级第一轮第 3 题
  • 知识点:布尔代数;逻辑与/或;表达式求值
  • 分值:2
  1. 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((x∧y)∨(z∨x)) 解析:代入 x=true,y=true,z=false 逐项计算,只有 (x∧y)∨(z∨x) 为真。

4. 2022 第 3 题

  • 出处:CSP-J1 2022 入门级第一轮第 3 题
  • 知识点:指针;地址赋值;变量与指针关系
  • 分值:2
  1. 运行以下代码片段的行为是( )。
int x = 101;
int y = 201;
int *p = &x;
int *q = &y;
p = q;

A. 将 xx 的值赋为 201201 B. 将 yy 的值赋为 101101 C. 将 qq 指向 xx 的地址 D. 将 pp 指向 yy 的地址

答案:D(将 pp 指向 yy 的地址) 解析:p=q 改变的是指针 p 保存的地址,使 p 指向 y,并不会把 y 的值赋给 x。

5. 2022 第 14 题

  • 出处:CSP-J1 2022 入门级第一轮第 14 题
  • 知识点:字符串;子串计数;去重计数
  • 分值:2
  1. 一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab\tt abcab 有( )个内容互不相同的子串。 A. 1212 B. 1313 C. 1414 D. 1515

答案:B(1313) 解析:枚举 abcab 的所有连续子串并去重,共 13 个。

6. 2023 第 1 题

  • 出处:CSP-J1 2023 入门级第一轮第 1 题
  • 知识点:C++ 关键字;const 常量;变量可修改性
  • 分值:2
  1. 在 C++ 中,下面哪个关键字用于声明一个变量, 其值不能被修改? A. unsigned B. const C. static D. mutable

答案:B(const) 解析:const 声明常量,其值初始化后不能被修改。

7. 2023 第 3 题

  • 出处:CSP-J1 2023 入门级第一轮第 3 题
  • 知识点:union 联合体;成员访问;结构体/联合体语法
  • 分值:2
  1. 阅读下述代码,请问修改 datavalue 成员以存储 3.143.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.value = 3.14;) 解析:变量 data 是 union 对象,访问成员使用点运算符,所以写 data.value = 3.14;

8. 2024 第 6 题

  • 出处:CSP-J1 2024 入门级第一轮第 6 题
  • 知识点:C++ 基本数据类型;struct 与内置类型辨析
  • 分值:2
  1. 以下哪个不是 C++ 中的基本数据类型?( ) A. int B. float C. struct D. char

答案:C(struct) 解析:intfloatchar 是基本数据类型,struct 是构造类型。

9. 2024 第 7 题

  • 出处:CSP-J1 2024 入门级第一轮第 7 题
  • 知识点:C++ 控制语句;循环语句辨析
  • 分值:2
  1. 以下哪个不是 C++ 中的循环语句?( ) A. for B. while C. do-while D. repeat-until

答案:D(repeat-until) 解析:C++ 中有 forwhiledo-while,没有 repeat-until

10. 2024 第 8 题

  • 出处:CSP-J1 2024 入门级第一轮第 8 题
  • 知识点:字符编码;ASCII;char 类型运算
  • 分值:2
  1. 在 C/C++ 中,(char)('a' + 13) 与下面的哪一个值相等?( ) A. 'm' B. 'n' C. 'z' D. 'l'

答案:B('n') 解析:字符 'a' 后移 13 位得到 'n'

11. 2025 第 2 题

  • 出处:CSP-J1 2025 入门级第一轮第 2 题
  • 知识点:位运算;x & (x - 1);二进制性质
  • 分值:2
  1. 在 C++ 中,执行 int x = 255; cout << (x & (x - 1)); 后,输出的结果是? A. 255255 B. 254254 C. 128128 D. 00

答案:B(254254) 解析:255 的二进制低 8 位全为 1,x&(x-1) 会去掉最低位的 1,结果为 254。

12. 2025 第 7 题

  • 出处:CSP-J1 2025 入门级第一轮第 7 题
  • 知识点:布尔代数;逻辑表达式等价;德摩根律
  • 分值:2
  1. 假设 a,b,ca, 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(a && (!b || c)) 解析:原式可化为 a && (b || !c);选项 C 为 a && (!b || c),并不恒等。

13. 2025 第 9 题

  • 出处:CSP-J1 2025 入门级第一轮第 9 题
  • 知识点:C++ string;标准库;字符串长度与连接
  • 分值:2
  1. 下列关于 C++ string 类的说法,正确的是? A. string 对象的长度在创建后不能改变。 B. 可以使用 + 运算符直接连接一个 string 对象和一个 char 类型的字符。 C. string 的 length() 和 size() 方法返回的值可能不同。 D. string 对象必须以 '\0' 结尾,且这个结尾符计入 length()。

答案:B(可以使用 + 运算符直接连接一个 string 对象和一个 char 类型的字符。) 解析:C++ string 支持 + 拼接字符或字符串,长度可变,size()length() 等价。

14. 2025 第 10 题

  • 出处:CSP-J1 2025 入门级第一轮第 10 题
  • 知识点:引用参数;值传递;函数调用后变量变化
  • 分值:2
  1. 考虑以下 C++ 函数:
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);
}

在 main 函数调用 solve 后,xxyy 的值分别是? A. 5,105,10 B. 10,510,5 C. 10,1010,10 D. 5,55,5

答案:C(10,1010,10) 解析:a 是引用会修改 x,b 是值传递不会修改 y;执行后 x 被改成 10,y 仍为 10。

算法基础

1. 2019 第 5 题

  • 出处:CSP-J1 2019 入门级第一轮第 5 题
  • 知识点:折半查找;查找复杂度;最坏比较次数
  • 分值:2
  1. 设有 100100 个已排好序的数据元素,采用折半查找时,最大比较次数为() A. 7 B. 10 C. 6 D. 8

答案:A(7) 解析:折半查找最多比较次数约为 ceil(log2(n+1))2^6 < 100 <= 2^7,所以最多 7 次。

2. 2019 第 11 题

  • 出处:CSP-J1 2019 入门级第一轮第 11 题
  • 知识点:枚举优化;约束条件下最值;简单规划思想
  • 分值:2
  1. 新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。
  • 方案一:每次连续跑 33 公里可以消耗 300300 千卡(耗时半小时);
  • 方案二:每次连续跑 55 公里可以消耗 600600 千卡(耗时 11 小时)。

小胖每周周一到周四能抽出半小时跑步,周五到周日能抽出一小时跑步。
另外,教练建议小胖每周最多跑21公里,否则会损伤膝盖。
请问如果小胖想严格执行教练的训练方案,并且不想损伤膝盖,每周最多通过跑步消耗多少千卡?() A. 3000 B. 2500 C. 2400 D. 2520

答案:C(2400) 解析:周一到周四只能选 3 公里方案,周五到周日可选 3 公里或 5 公里方案。选 3 次 5 公里和 2 次 3 公里时,总里程 21 公里,消耗 3*600+2*300=2400 千卡,为最大值。

3. 2020 第 5 题

  • 出处:CSP-J1 2020 入门级第一轮第 5 题
  • 知识点:冒泡排序;最好情况;比较次数;算法分析
  • 分值:2
  1. 冒泡排序算法的伪代码如下:
输入:数组L, n ≥ k。输出:按非递减顺序排序的 L。
算法 BubbleSort:
   1. FLAG ← n //标记被交换的最后元素位置
   2. while FLAG > 1 do
   3.     k ← FLAG -1
   4.     FLAG ← 1
   5.     for j=1 to k do
   6.         if L(j) > L(j+1) then do
   7.              L(j)  ↔ L(j+1)
   8.              FLAG ← j

nn 个数用以上冒泡排序算法进行排序,最少需要比较多少次?( )。 A. n2n^2 B. n2n-2 C. n1n-1 D. nn

答案:C(n1n-1) 解析:优化冒泡排序在已有序时只需一轮扫描,比较 n-1 次后发现无需交换即可结束。

4. 2020 第 6 题

  • 出处:CSP-J1 2020 入门级第一轮第 6 题
  • 知识点:递归算法;数组最值;递归返回值分析
  • 分值:2
  1. AAnn 个实数的数组,考虑下面的递归算法:
XYZ (A[1..n])
1.  if n=1 then return A[1]
2.  else temp ← XYZ (A[1..n-1])
3.  if temp < A[n]
4.  then return temp
5.  else return A[n]

请问算法 XYZ 的输出是什么?()。 A. A 数组的平均 B. A 数组的最小值 C. A 数组的中值 D. A 数组的最大值

答案:B(A 数组的最小值) 解析:递归先求前 n-1 个数的结果,再和 A[n] 比较并返回较小者,所以输出数组最小值。

5. 2021 第 4 题

  • 出处:CSP-J1 2021 入门级第一轮第 4 题
  • 知识点:比较模型;最值查找;最少比较次数
  • 分值:2
  1. 以比较作为基本运算,在 NN 个数中找出最大数,最坏情况下所需要的最少的比较次数为 ( )。 A. N2N^{2} B. NN C. N1N-1 D. N+1N+1

答案:C(N1N-1) 解析:找最大值至少要让除第一个数外的每个数都与当前最大值比较一次,最少需要 N-1 次。

6. 2021 第 13 题

  • 出处:CSP-J1 2021 入门级第一轮第 13 题
  • 知识点:递归;分段递归函数;函数值计算
  • 分值:2
  1. 考虑如下递归算法
solve(n)  
     if n<=1 return 1  
      else if n>=5 return n*solve(n-2)  
      else return n*solve(n-1)  

则调用 solve(7) 得到的返回结果为( )。 A. 105 B. 840 C. 210 D. 420

答案:C(210) 解析:solve(7)=7*solve(5)=7*5*solve(3)=35*3*solve(2)=105*2*solve(1)=210

7. 2021 第 15 题

  • 出处:CSP-J1 2021 入门级第一轮第 15 题
  • 知识点:贪心;过河问题;状态调度;最短时间
  • 分值:2
  1. 有四个人要从 A 点坐一条船过河到 B 点,船一开始在 A 点。该船一次最多可坐两个人。 已知这四个人中每个人独自坐船的过河时间分别为 1,2,4,81, 2, 4, 8,且两个人坐船的过河时间为两人独自过河时间的较大者。则最短( )时间可以让四个人都过河到 B 点(包括从 B 点把船开回 A 点的时间)。 A. 14 B. 15 C. 16 D. 17

答案:B(15) 解析:经典过河贪心:1、2 先过,1 回;4、8 过,2 回;1、2 再过,总时间 15。

8. 2022 第 12 题

  • 出处:CSP-J1 2022 入门级第一轮第 12 题
  • 知识点:排序算法;常见实现;稳定性/复杂度/适用性辨析
  • 分值:2
  1. 以下排序算法的常见实现中,哪个选项的说法是错误的:( )。 A. 冒泡排序算法是稳定的 B. 简单选择排序是稳定的 C. 简单插入排序是稳定的 D. 归并排序算法是稳定的

答案:B(简单选择排序是稳定的) 解析:简单选择排序会把后面的最小元素换到前面,可能破坏相等元素相对顺序,因此不是稳定排序。

9. 2022 第 15 题

  • 出处:CSP-J1 2022 入门级第一轮第 15 题
  • 知识点:递归概念;递归边界;自调用;问题分解
  • 分值:2
  1. 以下对递归方法的描述中,正确的是:( )。 A. 递归是允许使用多组参数调用函数的编程技术 B. 递归是通过调用自身来求解问题的编程技术 C. 递归是面向对象和数据而不是功能和逻辑的编程语言模型 D. 递归是将用某种高级语言转换为机器代码的编程技术

答案:B(递归是通过调用自身来求解问题的编程技术) 解析:递归的核心是函数调用自身,并用边界条件终止递归。

10. 2023 第 7 题

  • 出处:CSP-J1 2023 入门级第一轮第 7 题
  • 知识点:高精度运算;大整数表示;进位与复杂度
  • 分值:2
  1. 以下关于高精度运算的说法错误的是() A. 高精度计算主要是用来处理大整数或需要保留多位小数的运算 B. 大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商 C. 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关 D. 高精度加法运算的关键在于逐位相加并处理进位

答案:C(高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关) 解析:高精度乘法复杂度通常与两个数位数都有关,不只取决于较长者长度。

11. 2024 第 9 题

  • 出处:CSP-J1 2024 入门级第一轮第 9 题
  • 知识点:二分查找;比较次数;对数复杂度
  • 分值:2
  1. 假设有序表中有 10001000 个元素,则用二分法查找元素 XX 最多需要比较( )次。 A. 25 B. 10 C. 7 D. 1

答案:B(10) 解析:二分查找最多比较次数约为 ceil(log2(1000+1))=10

12. 2025 第 3 题

  • 出处:CSP-J1 2025 入门级第一轮第 3 题
  • 知识点:递归函数;分支递归;函数值计算
  • 分值:2
  1. 函数 calc(n) 的定义如下,则 calc(5) 的返回值是多少?( )
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. 55 B. 66 C. 77 D. 88

答案:B(66) 解析:递归计算:calc(2)=2calc(3)=calc(2)+calc(1)=3calc(4)=3calc(5)=calc(4)+calc(3)=6

13. 2025 第 8 题

  • 出处:CSP-J1 2025 入门级第一轮第 8 题
  • 知识点:递推数列;模运算;周期性
  • 分值:2
  1. 已知 f[0]=1f[0] = 1, f[1]=1f[1] = 1,并且对于所有 n2n \geq 2f[n]=(f[n1]+f[n2])%7f[n] = (f[n-1] + f[n-2]) \% 7。那么 f[2025]f[2025] 的值是多少? A. 22 B. 44 C. 55 D. 66

答案:D(66) 解析:序列模 7 从 1,1 开始每 16 项循环一次,2025 mod 16 = 9,而 f[9]=6

14. 2025 第 12 题

  • 出处:CSP-J1 2025 入门级第一轮第 12 题
  • 知识点:冒泡排序;逆序对;交换次数
  • 分值:2
  1. 某同学用冒泡排序对数组 {6,1,5,2,4}\{6, 1, 5, 2, 4\} 进行升序排序,请问需要进行多少次元素交换? A. 55 B. 66 C. 77 D. 88

答案:B(66) 解析:冒泡排序交换次数等于逆序对数量;数组 {6,1,5,2,4} 有 6 个逆序对。

数据结构

1. 2019 第 6 题

  • 出处:CSP-J1 2019 入门级第一轮第 6 题
  • 知识点:线性表;链表特点;随机访问与顺序访问
  • 分值:2
  1. 链表不具有的特点是() A. 插入删除不需要移动元素 B. 不必事先估计存储空间 C. 所需空间与线性表长度成正比 D. 可随机访问任一元素

答案:D(可随机访问任一元素) 解析:链表通过指针或下标连接结点,插入删除方便,但不能像数组一样 O(1) 随机访问任意元素。

2. 2019 第 8 题

  • 出处:CSP-J1 2019 入门级第一轮第 8 题
  • 知识点:二叉树;顺序存储;完全二叉树下标关系
  • 分值:2
  1. 一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为 11,若某结点的下标为 ii,则其左孩子位于下标 2i2i 处、右孩子位于下标 2i+12i+1 处),则该数组的最大下标至少为()。
    A. 6 B. 10 C. 15 D. 12

答案:C(15) 解析:二叉树顺序存储中,左儿子下标为 2i,右儿子下标为 2i+1;根据图中最深结点位置可得最大下标至少为 15。

3. 2019 第 14 题

  • 出处:CSP-J1 2019 入门级第一轮第 14 题
  • 知识点:二叉树遍历;前序/中序/后序还原
  • 分值:2
  1. 假设一棵二叉树的后序遍历序列为 DGJHEBIFCA\texttt{DGJHEBIFCA},中序遍历序列为 DBGEHJACIF\texttt{DBGEHJACIF},则其前序遍历序列为()。 A. ABCDEFGHIJ\texttt{ABCDEFGHIJ} B. ABDEGHJCFI\texttt{ABDEGHJCFI} C. ABDEGJHCFI\texttt{ABDEGJHCFI} D. ABDEGHJFIC\texttt{ABDEGHJFIC}

答案:B(ABDEGHJCFI\texttt{ABDEGHJCFI}) 解析:后序最后一个字符 A 是根;在中序中按 A 分左右子树,递归还原左右子树,得到前序 ABDEGHJCFI

4. 2020 第 7 题

  • 出处:CSP-J1 2020 入门级第一轮第 7 题
  • 知识点:链表特点;随机访问;线性结构
  • 分值:2
  1. 链表不具有的特点是()。 A. 可随机访问任一元素 B. 不必事先估计存储空间 C. 插入删除不需要移动元素 D. 所需空间与线性表长度成正比

答案:A(可随机访问任一元素) 解析:链表不支持随机访问,访问第 i 个元素必须从头或尾逐个移动。

5. 2020 第 8 题

  • 出处:CSP-J1 2020 入门级第一轮第 8 题
  • 知识点:图论;连通图;最少边数;树结构
  • 分值:2
  1. 1010 个顶点的无向图至少应该有( )条边才能确保是一个连通图。 A. 9 B. 10 C. 11 D. 12

答案:A(9) 解析:10 个顶点要连通,至少需要形成一棵树,树有 n-1=9 条边。

6. 2020 第 11 题

  • 出处:CSP-J1 2020 入门级第一轮第 11 题
  • 知识点:栈;队列;二叉树;哈希表;数据结构识图
  • 分值:2
  1. 下图中所使用的数据结构是( )。

A. 栈 B. 队列 C. 二叉树 D. 哈希表

答案:A(栈) 解析:图中若表现出后进先出,即最后进入的最先出去,对应的数据结构是栈。

7. 2020 第 12 题

  • 出处:CSP-J1 2020 入门级第一轮第 12 题
  • 知识点:完全二叉树;树高;结点数范围
  • 分值:2
  1. 独根树的高度为 11。具有 6161 个结点的完全二叉树的高度为( )。 A. 7 B. 8 C. 5 D. 6

答案:D(6) 解析:高度为 h 的完全二叉树结点数范围为 [2^{h-1}, 2^h-1],61 落在 [32,63],高度为 6。

8. 2021 第 5 题

  • 出处:CSP-J1 2021 入门级第一轮第 5 题
  • 知识点:栈;入栈出栈序列;合法性判断
  • 分值:2
  1. 对于入栈顺序为 a,b,c,d,ea, b, c, d, e 的序列,下列( )不是合法的出栈序列。 A. a,b,c,d,ea, b, c, d, e B. e,d,c,b,ae, d, c, b, a C. b,a,c,d,eb, a, c, d, e D. c,d,a,e,bc, d, a, e, b

答案:D(c,d,a,e,bc, d, a, e, b) 解析:若先弹出 c,则栈内从底到顶为 a、b,之后 d 入栈并弹出。此时栈顶是 b,不能先弹出 a,所以该序列非法。

9. 2021 第 6 题

  • 出处:CSP-J1 2021 入门级第一轮第 6 题
  • 知识点:图论;连通图;生成树;删边数量
  • 分值:2
  1. 对于有 nn 个顶点、mm 条边的无向连通图 (m>n)(m>n),需要删掉( )条边才能使其成为一棵树。 A. n1n-1 B. mnm-n C. mn1m-n-1 D. mn+1m-n+1

答案:D(mn+1m-n+1) 解析:连通图变成树需要保留 n-1 条边,需删去 m-(n-1)=m-n+1 条边。

10. 2021 第 8 题

  • 出处:CSP-J1 2021 入门级第一轮第 8 题
  • 知识点:完全二叉树;树高;不同形态计数
  • 分值:2
  1. 如果一棵二叉树只有根结点,那么这棵二叉树高度为 11。请问高度为 55 的完全二叉树有 ( )种不同的形态? A. 16 B. 15 C. 17 D. 32

答案:A(16) 解析:高度 5 的完全二叉树前 4 层满,最后一层可以有 1 到 16 个结点,所以有 16 种形态。

11. 2021 第 9 题

  • 出处:CSP-J1 2021 入门级第一轮第 9 题
  • 知识点:表达式转换;中缀表达式;后缀表达式;栈思想
  • 分值:2
  1. 表达式 a*(b+c)*d\texttt{a*(b+c)*d} 的后缀表达式为( ),其中 *\texttt{*} + \texttt{ + } 是运算符。 A. **a+bcd\texttt{**a+bcd} B. abc+*d*\texttt{abc+*d*} C. abc+d\texttt{abc+d} D. *a*+bcd\texttt{*a*+bcd}

答案:B(abc+*d*\texttt{abc+*d*}) 解析:先算括号内 b+c,再乘 a 和 d,后缀表达式为 abc+*d*

12. 2021 第 11 题

  • 出处:CSP-J1 2021 入门级第一轮第 11 题
  • 知识点:哈夫曼编码;贪心策略;数据压缩
  • 分值:2
  1. 在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )的策略。 A. 枚举 B. 贪心 C. 递归 D. 动态规划

答案:B(贪心) 解析:哈夫曼编码每次合并最小权值,本质是贪心策略。

13. 2021 第 14 题

  • 出处:CSP-J1 2021 入门级第一轮第 14 题
  • 知识点:图论;深度优先搜索;遍历顺序可能性
  • 分值:2
  1. aa 为起点,对下边的无向图进行深度优先遍历,则 b,c,d,eb,c,d,e 四个点中有可能作为最后一个遍历到的点的个数为( )。 A. 1 B. 2 C. 3 D. 4

答案:B(2) 解析:从 a 开始 DFS 时,受邻接点选择顺序影响,最后访问点有 2 种可能。

14. 2022 第 2 题

  • 出处:CSP-J1 2022 入门级第一轮第 2 题
  • 知识点:栈;出栈序列;模拟判断
  • 分值:2
  1. 66 个元素,按照 6,5,4,3,2,16,5,4,3,2,1 的顺序进入栈 SS,请问下列哪个出栈序列是非法的( )。 A. 5,4,3,6,1,25,4,3,6,1,2 B. 4,5,3,1,2,64,5,3,1,2,6 C. 3,4,6,5,2,13,4,6,5,2,1 D. 2,3,4,1,5,62,3,4,1,5,6

答案:C(3,4,6,5,2,13,4,6,5,2,1) 解析:按给定入栈顺序模拟,3,4,6,5,2,1 会在栈顶顺序上产生矛盾,因此非法。

15. 2022 第 4 题

  • 出处:CSP-J1 2022 入门级第一轮第 4 题
  • 知识点:数组与链表;顺序存储;动态结构
  • 分值:2
  1. 链表和数组的区别包括( )。 A. 数组不能排序,链表可以 B. 链表比数组能存储更多的信息 C. 数组大小固定,链表大小可动态调整 D. 以上均正确

答案:C(数组大小固定,链表大小可动态调整) 解析:数组通常大小固定并连续存储,链表可按结点动态扩展,大小更灵活。

16. 2022 第 5 题

  • 出处:CSP-J1 2022 入门级第一轮第 5 题
  • 知识点:栈与队列综合;操作交错;最小容量分析
  • 分值:2
  1. 对假设栈 SS 和队列 QQ 的初始状态为空。存在 e1e6e_1\sim e_6 六个互不相同的数据,每个数据按照进栈 SS、出栈 SS、进队列 QQ、出队列 QQ 的顺序操作,不同数据间的操作可能会交错。已知栈 SS 中依次有数据 e1e_1e2e_2e3e_3e4e_4e5e_5e6e_6 进栈,队列 QQ 依次有数据 e2e_2e4e_4e3e_3e6e_6e5e_5e1e_1 出队列。则栈 SS 的容量至少是( )个数据。 A. 22 B. 33 C. 44 D. 66

答案:B(33) 解析:为使 e2 先进入队列,e1、e2 需先入栈,再弹出 e2,栈中暂存 e1;随后为得到 e4、e3,最多需同时保留 e1、e3、e4 共 3 个元素,因此容量至少为 3。

17. 2022 第 6 题

  • 出处:CSP-J1 2022 入门级第一轮第 6 题
  • 知识点:表达式转换;前缀表达式;运算符优先级
  • 分值:2
  1. 对表达式 a+(b-c)*d 的前缀表达式为( ),其中 +、-、* 是运算符。 A. *+a-bcd B. +a*-bcd C. abc-d*+ D. abc-+d

答案:B(+a*-bcd) 解析:表达式 a+(b-c)*d 的根运算是 +,右子表达式为 * (- b c) d,前缀为 +a*-bcd

18. 2022 第 7 题

  • 出处:CSP-J1 2022 入门级第一轮第 7 题
  • 知识点:哈夫曼编码;编码长度;贪心合并
  • 分值:2
  1. 假设字母表 {a,b,c,d,e}\{a,b,c,d,e\} 在字符串出现的频率分别为 10%10\%15%15\%30%30\%16%16\%29%29\%。若使用哈夫曼编码方式对字母进行不定长的二进制编码,字母 dd 的编码长度( )位。 A. 11 B. 22 C. 2233 D. 33

答案:B(22) 解析:按权值合并:10 和 15 合成 25,16 和 25 合成 41,29 和 30 合成 59,41 和 59 合成根;d 的权值 16 位于深度 2,所以编码长度为 2。

19. 2022 第 8 题

  • 出处:CSP-J1 2022 入门级第一轮第 8 题
  • 知识点:完全二叉树;数组存储;父子兄弟下标关系
  • 分值:2
  1. 一棵有 nn 个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第 11 个位置。若存储在数组第 99 个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是( )。 A. 881818 B. 10101818 C. 881919 D. 10101919

答案:C(881919) 解析:数组下标 9 的兄弟是 8,右孩子是 2*9+1=19

20. 2022 第 9 题

  • 出处:CSP-J1 2022 入门级第一轮第 9 题
  • 知识点:图论;邻接矩阵;有向连通图;边数下界
  • 分值:2
  1. 考虑由 NN 个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在( )个非零元素。 A. N1N-1 B. NN C. N+1N+1 D. N2N^2

答案:B(NN) 解析:题目中的有向连通按强连通理解。要让任意点都能沿有向边到达其他点,最少可以把 N 个点连成一个有向环,需要 N 条有向边;邻接矩阵中每条有向边对应一个非零元素,所以至少 N 个非零元素。

21. 2022 第 10 题

  • 出处:CSP-J1 2022 入门级第一轮第 10 题
  • 知识点:数据结构概念;逻辑结构与存储结构;基本操作
  • 分值:2
  1. 以下对数据结构的表述不恰当的一项为:( )。 A. 图的深度优先遍历算法常使用的数据结构为栈。 B. 栈的访问原则后进先出,队列的访问原则是先进先出。 C. 队列常常被用于广度优先搜索算法。 D. 栈与队列存在本质不同,无法用栈实现队列。

答案:D(栈与队列存在本质不同,无法用栈实现队列。) 解析:栈和队列虽然逻辑规则不同,但可以通过栈实现队列,所以“无法用栈实现队列”错误。

22. 2022 第 11 题

  • 出处:CSP-J1 2022 入门级第一轮第 11 题
  • 知识点:双向循环链表;指针修改顺序;插入操作
  • 分值:2
  1. 以下哪组操作能完成在双向循环链表结点 pp 之后插入结点 ss 的效果(其中,next 域为结点的直接后继,prev 域为结点的直接前驱):( )。 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->next->prev=s; s->prev=p; p->next=s;) 解析:在 p 后插入 s,需要先接好 s 的 next 与 prev,再修改后继结点 prev 和 p 的 next,选项 D 顺序正确。

23. 2023 第 4 题

  • 出处:CSP-J1 2023 入门级第一轮第 4 题
  • 知识点:链表;头插法;指针赋值顺序
  • 分值:2
  1. 假设有一个链表的节点定义如下:
struct Node { int data; Node* next; }

现在有一个指向链表头部的指针:Node* head。如果想要在链表中插入一个新节点,其成员 data 的值为 4242,并使新节点成为链表的第一个节点,下面哪个操作是正确的? 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(Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;) 解析:头插法需先让新结点指向原 head,再把 head 改成新结点,选项 A 顺序正确。

24. 2023 第 5 题

  • 出处:CSP-J1 2023 入门级第一轮第 5 题
  • 知识点:多叉树;树高;结点数上界
  • 分值:2
  1. 根节点的高度为 11,一棵拥有 20232023个节点的三叉树高度至少为()。 A. 6 B. 7 C. 8 D. 9

答案:C(8) 解析:高度 h 的三叉树最多结点为 (3^h-1)/2;h=7 不足 2023,h=8 足够。

25. 2023 第 8 题

  • 出处:CSP-J1 2023 入门级第一轮第 8 题
  • 知识点:后缀表达式;中缀表达式;栈求值;运算符优先级
  • 分值:2
  1. 后缀表达式 6 2 3 + - 3 8 2 / + * 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(((6-(2+3))*(3+8/2))^2+3) 解析:用栈还原后缀表达式:遇数入栈,遇运算符弹出两个数合成表达式,得到选项 A。

26. 2023 第 10 题

  • 出处:CSP-J1 2023 入门级第一轮第 10 题
  • 知识点:哈夫曼编码;频率合并;前缀编码
  • 分值:2
  1. 假设有一组字符 {a,b,c,d,e,f}, 对应的频率分别为 5%,9%,12%,13%,16%,45%5\%,9\%,12\%,13\%,16\%,45\%。请问以下哪个选项是字符abcdef分别对应的一组哈夫曼编码? 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(1111,1110,101,100,110,0) 解析:按频率构造哈夫曼树,高频字符编码更短,并且所有编码应满足前缀编码性质,选项 A 符合。

27. 2023 第 11 题

  • 出处:CSP-J1 2023 入门级第一轮第 11 题
  • 知识点:二叉树遍历;前序/中序推后序
  • 分值:2
  1. 给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么? A. EDBGFCA B. EDGBFCA C. DEBGFCA D. DBEGFCA

答案:A(EDBGFCA) 解析:前序首字符 A 为根,在中序中分左右子树递归还原,后序为 EDBGFCA

28. 2023 第 12 题

  • 出处:CSP-J1 2023 入门级第一轮第 12 题
  • 知识点:有向无环图;拓扑排序;偏序关系
  • 分值:2
  1. 考虑一个有向无环图,该图包含 44 条有向边:(1,2),(1,3),(2,4)(1,2),(1,3),(2,4)(3,4)(3,4)。以下哪个选项是这个有向无环图的一个有效的拓扑排序? A. 4,2,3,1 B. 1,2,3,4 C. 1,2,4,3 D. 2,1,3,4

答案:B(1,2,3,4) 解析:拓扑序要求每条有向边的起点都在终点之前,1,2,3,4 满足所有约束。

29. 2024 第 11 题

  • 出处:CSP-J1 2024 入门级第一轮第 11 题
  • 知识点:图论;无向图度数和;握手定理
  • 分值:2
  1. 在无向图中,所有顶点的度数之和等于( )。 A. 图的边数 B. 图的边数的两倍 C. 图的顶点数 D. 图的顶点数的两倍

答案:B(图的边数的两倍) 解析:无向图所有顶点度数之和等于边数的两倍,这是握手定理。

30. 2024 第 12 题

  • 出处:CSP-J1 2024 入门级第一轮第 12 题
  • 知识点:二叉树遍历;前序/中序推后序
  • 分值:2
  1. 已知二叉树的前序遍历为 [A,B,D,E,C,F,G][A, B, D, E, C, F, G],中序遍历为 [D,B,E,A,F,C,G][D, B, E, A, F, C, G],请问该二叉树的后序遍历结果是?( ) A. [D,E,B,F,G,C,A][D, E, B, F, G, C, A] B. [D,E,B,F,G,A,C][D, E, B, F, G, A, C] C. [D,B,E,F,G,C,A][D, B, E, F, G, C, A] D. [D,B,E,F,G,A,C][D, B, E, F, G, A, C]

答案:A([D,E,B,F,G,C,A][D, E, B, F, G, C, A]) 解析:由前序确定根,再用中序分左右子树递归还原,后序为 [D,E,B,F,G,C,A]

31. 2024 第 13 题

  • 出处:CSP-J1 2024 入门级第一轮第 13 题
  • 知识点:栈;入栈出栈序列;合法性判断
  • 分值:2
  1. 给定一个空栈,支持入栈和出栈操作。若入栈操作的元素依次是 1 2 3 4 5 61\ 2\ 3\ 4\ 5\ 6,其中 11 最先入栈,66 最后入栈,下面哪种出栈顺序是不可能的?( ) 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(1 3 5 2 4 6) 解析:按栈后进先出模拟,选项 D 的出栈顺序会要求被压在下面的元素先出,无法实现。

32. 2025 第 4 题

  • 出处:CSP-J1 2025 入门级第一轮第 4 题
  • 知识点:哈夫曼树;带权路径长度;贪心合并
  • 分值:2
  1. 55 个权值 10,12,15,20,2510, 12, 15, 20, 25 构造哈夫曼树,该树的带权路径长度是多少? A. 176176 B. 186186 C. 196196 D. 206206

答案:B(186186) 解析:哈夫曼合并权值:10+12=22,15+20=35,22+25=47,35+47=82,总带权路径长度为 22+35+47+82=186

33. 2025 第 5 题

  • 出处:CSP-J1 2025 入门级第一轮第 5 题
  • 知识点:有向图;入度出度;边数关系
  • 分值:2
  1. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和,这个总和等于? A. 顶点数 B. 边数 C. 顶点数 + 边数 D. 顶点数 ×2\times 2

答案:B(边数) 解析:每条有向边贡献 1 个出度和 1 个入度,因此入度和、出度和都等于边数。

34. 2025 第 14 题

  • 出处:CSP-J1 2025 入门级第一轮第 14 题
  • 知识点:完全二叉树;叶子结点数量;结点编号性质
  • 分值:2
  1. 一棵包含 10001000 个结点的完全二叉树,其叶子结点的数量是多少? A. 499499 B. 512512 C. 500500 D. 501501

答案:C(500500) 解析:完全二叉树中叶子结点数为 ceil(n/2)ceil(1000/2)=500

35. 2025 第 15 题

  • 出处:CSP-J1 2025 入门级第一轮第 15 题
  • 知识点:栈与队列;混合模拟;先进后出/先进先出
  • 分值:2
  1. 给定一个初始为空的整数栈 SS 和一个空的队列 PP。我们按顺序处理输入的整数队列 A:7,5,8,3,1,4,2A: 7, 5, 8, 3, 1, 4, 2。对于队列 AA 中的每一个数,执行以下规则:如果该数是奇数,则将其压入栈 SS;如果该数是偶数,且栈 SS 非空,则弹出一个栈顶元素,并加入到队列 PP 的末尾;如果该数是偶数,且栈 SS 为空,则不进行任何操作。当队列 AA 中的所有数都处理完毕后,队列 PP 的内容是什么? A. 5,1,35,1,3 B. 7,5,37,5,3 C. 3,1,53,1,5 D. 5,1,3,75,1,3,7

答案:A(5,1,35,1,3) 解析:按规则模拟:7、5 入栈;8 弹出 5;3、1 入栈;4 弹出 1;2 弹出 3,所以队列为 5,1,3

数学相关

1. 2019 第 7 题

  • 出处:CSP-J1 2019 入门级第一轮第 7 题
  • 知识点:组合计数;整数拆分;相同球放相同盒
  • 分值:2
  1. 88 个同样的球放在 55 个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法?()

提示:如果 88 个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法。 A. 22 B. 24 C. 18 D. 20

答案:C(18) 解析:这是相同球放相同袋的整数拆分问题,按非增正整数拆分 8 且最多 5 份统计,共 18 种。

2. 2019 第 9 题

  • 出处:CSP-J1 2019 入门级第一轮第 9 题
  • 知识点:素数判断;数论基础
  • 分值:2
  1. 100100 以内最大的素数是()。 A. 89 B. 97 C. 91 D. 93

答案:B(97) 解析:100 以内最大素数为 97;98 是偶数,99 可被 3 整除,100 是合数。

3. 2019 第 10 题

  • 出处:CSP-J1 2019 入门级第一轮第 10 题
  • 知识点:最大公约数;欧几里得算法;数论基础
  • 分值:2
  1. 319319377377 的最大公约数是()。 A. 27 B. 33 C. 29 D. 31

答案:C(29) 解析:用欧几里得算法:377 mod 319=58319 mod 58=2958 mod 29=0,所以 gcd 为 29。

4. 2019 第 12 题

  • 出处:CSP-J1 2019 入门级第一轮第 12 题
  • 知识点:抽屉原理;组合数学
  • 分值:2
  1. 一副纸牌除掉大小王有 5252 张牌,四种花色,每种花色 1313 张。

假设从这 5252 张牌中随机抽取 1313 张纸牌,则至少()张牌的花色一致。 A. 4 B. 2 C. 3 D. 5

答案:A(4) 解析:13 张牌分到 4 种花色,按抽屉原理至少有 ceil(13/4)=4 张同花色。

5. 2019 第 13 题

  • 出处:CSP-J1 2019 入门级第一轮第 13 题
  • 知识点:计数原理;对称数;分类讨论
  • 分值:2
  1. 一些数字可以颠倒过来看,例如 0,1,80,1,8 颠倒过来还是本身,66 颠倒过来是 9999 颠倒过来看还是 66,其他数字颠倒过来都不构成数字。
    类似的,一些多位数也可以颠倒过来看,比如 106106 颠倒过来是 901901。假设某个城市的车牌只由 55 位数字组成,每一位都可以取 0099
    请问这个城市最多有多少个车牌倒过来恰好还是原来的车牌?() A. 60 B. 125 C. 75 D. 100

答案:C(75) 解析:5 位倒置仍相同的车牌由前两位和中间位决定:前两位各有 5 种选择,中间位有 3 种选择,共 5*5*3=75

6. 2020 第 10 题

  • 出处:CSP-J1 2020 入门级第一轮第 10 题
  • 知识点:排列组合;捆绑法;相邻约束
  • 分值:2
  1. 55 个小朋友并排站成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有( )种不同排列方法? A. 48 B. 36 C. 24 D. 72

答案:A(48) 解析:把双胞胎看成一个整体,与另外 3 人共 4 个对象排列有 4! 种,双胞胎内部有 2 种,共 4!*2=48

7. 2020 第 14 题

  • 出处:CSP-J1 2020 入门级第一轮第 14 题
  • 知识点:插板法;正整数分配;组合计数
  • 分值:2
  1. 1010 个三好学生名额分配到 77 个班级,每个班级至少有一个名额,一共有( )种不同的分配方案。 A. 84 B. 72 C. 56 D. 504

答案:A(84) 解析:10 个名额分给 7 个班且每班至少 1 个,相当于把 10 拆成 7 个正整数,用插板法为 C(9,6)=84

8. 2020 第 15 题

  • 出处:CSP-J1 2020 入门级第一轮第 15 题
  • 知识点:组合计数;配对问题;分类讨论
  • 分值:2
  1. 有五副不同颜色的手套(共 1010 只手套,每副手套左右手各 11 只),一次性从中取 66 只手套,请问恰好能配成两副手套的不同取法有( )种。 A. 120 B. 180 C. 150 D. 30

答案:A(120) 解析:恰好两副手套:先选出成对的 2 种颜色,有 C(5,2) 种;再从剩下 3 种颜色中选 2 种各取一只手套,且每种颜色可取左手或右手,有 C(3,2)*2^2 种。总数为 C(5,2)*C(3,2)*2^2=120

9. 2021 第 10 题

  • 出处:CSP-J1 2021 入门级第一轮第 10 题
  • 知识点:组合数学;配对分组;重复计数消除
  • 分值:2
  1. 66 个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )种。 A. 10 B. 15 C. 30 D. 20

答案:B(15) 解析:6 人两两配对且队伍不编号,方案数为 6!/(2!^3*3!)=15

10. 2021 第 12 题

  • 出处:CSP-J1 2021 入门级第一轮第 12 题
  • 知识点:排列组合;含重复元素排列;分类计数
  • 分值:2
  1. 1,1,2,2,31,1,2,2,3 这五个数字组成不同的三位数有( )种。 A. 18 B. 15 C. 12 D. 24

答案:A(18) 解析:从多重集合 {1,1,2,2,3} 中分类选 3 位并排列,去除重复后共有 18 个。

11. 2023 第 6 题

  • 出处:CSP-J1 2023 入门级第一轮第 6 题
  • 知识点:组合计数;间隔限制;状态枚举/递推
  • 分值:2
  1. 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有()种选择时间段的方案。 A. 31 B. 18 C. 21 D. 33

答案:B(18) 解析:选出的时间段之间至少隔两个空闲段,可用分类枚举或递推统计,共 18 种。

12. 2023 第 14 题

  • 出处:CSP-J1 2023 入门级第一轮第 14 题
  • 知识点:组合数学;至少包含条件;补集计数
  • 分值:2
  1. 一个班级有 1010 个男生和 1212 个女生。如果要选出一个 33 人的小组,并且小组中必须至少包含 11 个女生,那么有多少种可能的组合?() A. 14201420 B. 17701770 C. 15401540 D. 22002200

答案:A(14201420) 解析:总选法 C(22,3),减去全为男生的 C(10,3),得到 1420。

13. 2024 第 3 题

  • 出处:CSP-J1 2024 入门级第一轮第 3 题
  • 知识点:组合数学;分组选择;容斥/分类讨论
  • 分值:2
  1. 某公司有 1010 名员工,分为 33 个部门:A 部门有 44 名员工,B 部门有 33 名员工,C 部门有 33 名员工。现需要从这 1010 名员工中选出 44 名组成一个工作小组,且每个部门至少要有 11 人。问有多少种选择方式?( ) A. 120 B. 126 C. 132 D. 238

答案:B(126) 解析:每个部门至少 1 人,按人数分配 (2,1,1) 分类:多选的 1 人可来自 A、B、C,方案数为 C(4,2)*3*3 + 4*C(3,2)*3 + 4*3*C(3,2)=126

14. 2024 第 14 题

  • 出处:CSP-J1 2024 入门级第一轮第 14 题
  • 知识点:排列组合;捆绑法;阶乘计数
  • 分值:2
  1. 55 个男生和 33 个女生站成一排,规定 33 个女生必须相邻。问有多少种不同的排列方式?( ) A. 43204320 种 B. 50405040 种 C. 36003600 种 D. 28802880

答案:A(43204320 种) 解析:把 3 个女生捆成一个整体,与 5 个男生共 6 个对象排列,再乘女生内部 3!,共 6!*3!=4320

15. 2025 第 6 题

  • 出处:CSP-J1 2025 入门级第一轮第 6 题
  • 知识点:组合数学;至少一男一女;补集计数
  • 分值:2
  1. 55 位男生和 44 位女生中选出 44 人组成一个学习小组,要求学习小组中男生和女生都有。有多少种不同的选法? A. 126126 B. 121121 C. 120120 D. 100100

答案:C(120120) 解析:总选法 C(9,4)=126,减去全男 C(5,4)=5 和全女 C(4,4)=1,得到 120。

16. 2025 第 11 题

  • 出处:CSP-J1 2025 入门级第一轮第 11 题
  • 知识点:网格路径;组合计数;排列组合
  • 分值:2
  1. 一个 8×88 \times 8 的棋盘,左上角坐标为 (1,1)(1,1),右下角为 (8,8)(8,8)。一个机器人从 (1,1)(1,1) 出发,每次只能向右或向下走一格。要到达 (4,5)(4,5),有多少种不同的路径? A. 2020 B. 3535 C. 5656 D. 7070

答案:B(3535) 解析:从 (1,1)(4,5) 需向下 3 次、向右 4 次,共 7 步,方案数 C(7,3)=35

分类: 分享 · 更新时间 2026-8-18 6:06:59