跳转至

题库索引

本页最后更新于 ,内容可能过时

本页是题库的总索引。题目按教材章节和讲课顺序排列,每道题只归入一个章节,归入的是该题主要考查的最高知识点。「原编号」列是整理前的位置(原文件前缀 · 原题号),仅供对照。

章节概览

章节 文件 题数
第1章 · 程序设计基础 01-basics.md 9
第2章 · 基本数据类型及其运算 02-data-and-expressions.md 23
第3章 · 结构化程序设计 03-control-flow.md 13
第4章 · 数组 04-arrays.md 23
第5章 · 函数 05-functions.md 17
第6章 · 指针和引用 06-pointers.md 25
第7章 · 结构和链表 07-structs-linked-list.md 22
第8章 · 数据文件处理技术 08-file-io.md 6
第9章 · 算法设计技术基础 09-algorithms.md 14

第1章 · 程序设计基础(9 题)

编号 原编号 题目 主要知识点
1 01 · 1 标识符合法性 标识符命名规则、关键字、大小写敏感
2 01 · 2 标识符合法性 标识符命名规则、关键字
3 01 · 3 标识符合法性 标识符命名规则、大小写敏感
4 01 · 4 标识符合法性 标识符命名规则、关键字
5 01 · 5 标识符合法性 标识符命名规则、数字开头
6 01 · 6 标识符合法性 标识符命名规则、非法字符
7 01 · 7 常量与转义字符 整型/字符/字符串常量、八进制与十六进制转义
8 01 · 11 变量定义的正误(后缀与多字符常量) 长整型后缀、多字符常量、浮点常量词法
9 01 · 12 变量定义的正误(浮点常量) 浮点常量词法、整型后缀、指针与字符数组定义

第2章 · 基本数据类型及其运算(23 题)

编号 原编号 题目 主要知识点
1 01 · 15 类型转换与整除 整型/浮点型除法、赋值转换
2 01 · 16 类型转换与整除 强制类型转换、取模运算、运算符优先级
3 01 · 10 转义字符与混合类型表达式 八进制转义、混合类型表达式、强制转换
4 02 · 1 double 配 %f:格式串类型不匹配 scanf 格式串与参数类型、double 用 %lf
5 02 · 2 同一段程序换一组输入数字 scanf 格式串与参数类型、double 用 %lf
6 02 · 3 四个输入输出语句谁不会出错 scanf 取地址、字符数组结束符、格式串与参数类型
7 02 · 4 能正确输出内容的代码片段 字符常量运算、scanf 地址、字符串结束符、格式串类型
8 03 · 1 自增自减与短路求值 自增自减、逻辑运算优先级、短路求值
9 03 · 2 自增自减与短路求值 条件运算符、自增自减
10 03 · 3 求值顺序与未定义行为 序列点、未定义行为
11 03 · 4 求值顺序与未定义行为 函数实参求值顺序、未定义行为
12 03 · 5 逗号运算符与优先级 逗号运算符、赋值优先级
13 03 · 6 浮点数比较 浮点数精度、关系运算、自增
14 03 · 8 运算符优先级 单目与二元运算符优先级
15 03 · 9 逗号与关系运算符左结合 关系运算符左结合、逻辑表达式
16 03 · 10 自增运算符与求值顺序 前置/后置自增、序列点
17 03 · 11 逻辑运算与德摩根定律 德摩根定律、逻辑运算
18 03 · 12 逻辑运算与德摩根定律 德摩根定律、逻辑等价
19 03 · 13 绝对值的逻辑表达式(德摩根) 绝对值区间、德摩根定律
20 03 · 14 复合赋值的右结合 复合赋值、右结合、求值顺序
21 03 · 15 逻辑短路求值(&& 高于 ||) 逻辑优先级、短路求值
22 03 · 16 复合赋值与取余 复合赋值、取模、优先级
23 03 · 17 逗号表达式与复合赋值 逗号表达式、复合赋值、嵌套赋值

第3章 · 结构化程序设计(13 题)

编号 原编号 题目 主要知识点
1 04 · 1 switch 穿透(fall-through) switch 穿透、default 位置、do-while
2 04 · 2 switch 穿透(fall-through) switch 穿透、break、循环
3 04 · 3 switch 穿透(fall-through) switch 穿透、continue、do-while
4 04 · 10 悬挂 if(dangling if) 嵌套 if、else 配对、语句体
5 04 · 13 嵌套 switch 的穿透 嵌套 switch、break 作用范围、穿透
6 04 · 4 do-while 与"循环条件恒真" do-while、关系运算符左结合
7 04 · 5 do-while 与"循环条件恒真" do-while、关系运算符左结合、break
8 04 · 6 循环体内修改循环变量 for 执行顺序、循环变量修改
9 04 · 7 continue 与 break continue/break、数组遍历
10 04 · 8 continue 与 break for 循环、循环体顺序、等差数列
11 04 · 9 循环 + 累加(填空) 循环累加、通项、精度控制、函数返回
12 04 · 11 for 循环的终止值 for 增量表达式、循环终止值
13 04 · 12 死循环的判定 while/do-while/for、空条件、循环变量

第4章 · 数组(23 题)

编号 原编号 题目 主要知识点
1 05 · 1 数组名不可修改(赋值与自增) 数组名非左值、数组整体赋值、指针赋值
2 05 · 2 数组名不可修改(比较与取地址) 数组名、左值、取地址运算
3 05 · 4 数组初始化与自动补 0 数组初始化、自动补 0
4 05 · 5 数组大小、sizeof 与 VLA 数组定义、VLA、sizeof、数组名
5 05 · 9 冒泡排序的边界与升降序(改错) 一维数组、循环边界、冒泡排序、元素访问
6 05 · 12 字符(ASCII 码)作数组下标 数组下标、字符 ASCII 码
7 05 · 18 sizeof 与字符数组的“长度” 字符数组初始化、sizeof/strlen、\0
8 01 · 13 sizeof 的用法 二维数组初始化、行优先、sizeof
9 01 · 14 sizeof 的用法 二维数组初始化、自动补 0、sizeof
10 05 · 7 矩阵操作 二维数组、矩阵转置与乘法、嵌套循环
11 05 · 11 二维数组定义只能省略第一维 二维数组定义、初始化、省略维度
12 05 · 19 二维数组的反对角线访问 二维数组、行优先、副对角线下标
13 05 · 20 矩阵原地转置 · 逗号表达式 二维数组、原地交换、逗号表达式
14 06 · 1 \0 与 strlen 转义序列、字符串结束符、strlen
15 01 · 9 strlen 与八进制转义 八进制转义、strlen
16 01 · 8 转义序列与字符串字节数 转义序列、字符串字面量、\0、字节数
17 06 · 12 字符串里的转义与截断 转义序列、%s 截断、字符串字面量
18 06 · 4 字符串原地逆序(填空) strlen、双指针交换、字符串原地逆序
19 06 · 16 字符串原地逆序 字符串逆序、双指针、循环边界
20 06 · 5 原地删除指定字符 字符串遍历、原地删除、函数实现、\0
21 06 · 9 字符计数与统计 字符数组、计数桶、scanf、求最小值
22 06 · 13 二维字符数组与 %6s 对齐 二维字符数组、\0、格式宽度
23 06 · 15 字符串比较 · 首个不同字符之差 字符串逐字符比较、ASCII 差值、循环条件

第5章 · 函数(17 题)

编号 原编号 题目 主要知识点
1 07 · 1 值传递与地址传递 值传递、地址传递、数组作参数、结构体指针
2 05 · 17 二维数组作函数参数 · 按列求最值 二维数组形参、函数调用、按列遍历
3 07 · 4 递归的执行顺序(回溯) 递归调用、回溯、指针形参
4 07 · 5 递归的执行顺序(回溯) 递归调用、回溯
5 07 · 7 递归出口与无限递归 递归出口、参数收敛、字符常量
6 07 · 15 递归辗转相减求最大公约数 递归、辗转相减法、最大公约数
7 07 · 6 static 局部变量 + 递归 static 局部变量、递归、生命周期
8 07 · 8 static / 存储类别 static 局部变量、作用域、生命周期
9 07 · 9 按需求选择存储类别 auto/register/static/extern、作用域
10 07 · 10 extern 与全局变量 extern 声明、全局变量、条件运算符
11 07 · 11 全局变量的作用域 全局变量、作用域
12 07 · 12 默认存储类别 默认存储类别 auto
13 07 · 13 static 局部变量跨调用保留 static 局部变量、跨调用保留、格式宽度
14 07 · 14 值传递与全局变量 值传递、全局变量、形参副本
15 07 · 16 static 变量与自动变量对照 static 与 auto、生命周期
16 08 · 1 宏展开:函数式宏必须加括号 宏定义、文本替换、运算符优先级
17 08 · 2 宏展开(第二道):展开后完全按运算符优先级走 宏展开、运算符优先级、整体括号

第6章 · 指针和引用(25 题)

编号 原编号 题目 主要知识点
1 09 · 1 指针能做什么、不能做什么 指针运算、函数指针、指针作参数
2 09 · 8 指针与数组的关系 数组名退化、指针类型、sizeof
3 09 · 9 野指针 指针初始化、野指针、scanf 地址
4 05 · 3 数组名与指针 指针类型、数组名、sizeof、字符串比较
5 06 · 2 字符数组 vs char * 字符数组、字符串字面量只读、指针类型
6 05 · 10 数组名退化与行优先存储 数组名退化、行优先存储、指针下标
7 05 · 16 数组初始化补 0 与指针遍历 数组补 0、指针遍历、字符编码
8 05 · 8 数组元素访问与循环边界 循环边界、取模、指针解引用
9 06 · 10 指针遍历字符串(putchar) 指针遍历、*p++、字符串结束符
10 06 · 11 指针遍历字符串(printf) 指针遍历、*p++、字符串结束符
11 06 · 14 指针与下标两个游标 指针与下标、(*p)++、字符偏移
12 09 · 3 指针的自增自减(*p++) *p++、指针交换、字符串逆序
13 09 · 4 指针与数组的等价写法(6 分) 指针遍历、指针相减、数组形参
14 09 · 5 指针操作字符串(删除小写字母)(6 分) 字符指针、只读字面量、原地删除
15 09 · 6 指针与字符串的插入/维护有序 字符串插入、元素后移、指针与下标
16 09 · 7 指针操作字符串 ↔ 数值转换(12 分) 指针遍历、字符转数字、秦九韶迭代
17 09 · 2 指针作函数参数 指针形参、值传递、交换
18 07 · 2 值传递与地址传递(改错) 指针形参、取地址、暂存变量
19 07 · 3 值传递与地址传递(改错) 指针形参、取地址、printf 格式
20 05 · 6 二维数组的地址表达式 二维数组、行指针、元素地址
21 05 · 14 行指针的元素访问 行指针、解引用、元素访问
22 05 · 15 元素地址的写法 二维数组地址、行指针、解引用
23 06 · 3 指针数组与只读字面量 指针数组、只读字面量、*(p+i)
24 06 · 8 字符串比较 指针数组、strcmp、%s
25 03 · 7 宏展开与运算符结合性 字符串结束符、数组、宏展开、关系左结合、指针解引用、字符常量

第7章 · 结构和链表(22 题)

编号 原编号 题目 主要知识点
1 10 · 3 结构体变量与成员(说法辨析) 结构体定义、匿名结构体、整体赋值与比较、->
2 10 · 1 结构体的定义与访问(12 分) typedef、结构体数组、数组成员、指针、整数除法
3 10 · 2 结构体成员的访问(. 与 ->) 结构体指针、. 与 -> 的优先级、静态链表
4 10 · 14 结构体指针成员的访问(typedef 指针) typedef 指针类型、-> 访问
5 05 · 13 数组与结构体的整体操作 数组整体 I/O、字符数组、结构体整体赋值
6 10 · 4 链表 vs 数组(效率辨析) 链表与数组的插入删除效率、动态分配、遍历
7 10 · 15 链表与数组的对比(随机访问) 链表与数组、随机访问、插入删除
8 10 · 5 链表结点与指针(删除结点·改错) 结构体自引用、链表删除、=/==、辅助表元
9 10 · 6 链表插入到末尾(结点 vs 指针)(6 分) malloc、链表尾插、next 指针、空链表
10 10 · 7 辅助表元(升序链表删除区间)(8 分) 辅助表元、链表删除、free、指针顺序
11 10 · 8 辅助表元(升序链表的插入) 辅助表元、有序插入、指针顺序
12 10 · 9 链表算法 · 去重(4 分) 链表遍历、删除相邻重复、free
13 10 · 10 链表算法 · 反转 链表反转、三指针、保存后继
14 10 · 11 链表算法 · 插入排序(阅读·不带辅助表元) 链表插入排序、头指针更新、摘链
15 10 · 12 链表删除结点(填空·不带辅助表元)(12 分) 双指针删除、首结点特判、free 顺序
16 10 · 13 链表算法 · 插入排序(编程·带辅助表元)(13 分) 链表插入排序、辅助表元、稳定性
17 11 · 1 malloc / calloc / free 的用法 malloc/calloc/realloc/free、初始化、强制转换
18 11 · 4 动态内存分配的四个说法辨析 动态内存生命周期、free、NULL
19 11 · 2 动态数组 · 分配 + 判空 malloc、sizeof、判空、指针形参、异或
20 11 · 3 动态数组 · 分配 + 判空(升序插入) malloc、判空、有序插入、指针传参
21 06 · 6 压缩连续空格 字符串压缩、malloc/free、双下标
22 06 · 7 子串与分割 字符串分割、指针数组、malloc、strncpy、传出参数

第8章 · 数据文件处理技术(6 题)

编号 原编号 题目 主要知识点
1 12 · 1 文件读写函数 fopen 返回值、fread/fwrite、fseek、fprintf
2 12 · 2 文件读写小工具 · 逐字符统计 fopen/fgetc/fclose、EOF、字符判断
3 12 · 3 读写交替与 fseek · 就地改写文件 r+ 模式、fseek、fputc、更新流定位
4 12 · 4 文件打开模式与输出 w 模式、fprintf、fclose、#define、链表辅助表元
5 12 · 5 文件打开模式的选择 r/w/a/r+/ab+ 打开模式
6 12 · 6 文件写入代码片段的正误判断 w 模式、fprintf、文件覆盖与新建

第9章 · 算法设计技术基础(14 题)

编号 原编号 题目 主要知识点
1 13 · 1 数组原地插入(保持有序) 数组插入、元素后移、边界处理
2 13 · 3 二分查找 二分查找、区间收缩、边界
3 13 · 4 数组双指针划分(快排 partition · 程序补完) 双指针划分、交换、sizeof
4 13 · 8 合并两个有序数组 归并、双指针、输出格式
5 13 · 9 二维前缀和(程序填空) 二维前缀和、容斥原理、边界
6 13 · 12 数组算法 · 多数投票(抵消法) Boyer–Moore 多数投票、抵消法
7 13 · 2 链表冒泡排序(读文件建表 + 冒泡) 文件读取、链表建表、冒泡排序
8 13 · 5 两个有序链表归并 链表归并、辅助表元、尾指针
9 13 · 11 两个多项式的加法 链表归并、同类项合并、尾插法、结构体
10 13 · 6 综合算法 kmeans 结构体数组、距离计算、聚类、迭代终止
11 13 · 7 矩阵范数 二维数组、行和/列和范数、strcmp、宏
12 13 · 10 冒泡降序 + 递归阶乘 冒泡排序、递归阶乘、函数声明
13 13 · 13 级数求和(递推项防溢出) 循环、递推通项、浮点除法、阶乘溢出
14 13 · 14 字符串处理 · 最大字符与末位交换 strlen、最大字符、交换、边界