题库索引
本页最后更新于 ,内容可能过时
本页是题库的总索引。题目按教材章节和讲课顺序排列,每道题只归入一个章节,归入的是该题主要考查的最高知识点。「原编号」列是整理前的位置(原文件前缀 · 原题号),仅供对照。
章节概览
| 章节 |
文件 |
题数 |
| 第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、最大字符、交换、边界 |