一、指针与函数(重中之重)
为什么是重点?
区分度最高:指针是C语言的灵魂,也是学生最容易出错的地方。专升本考试需要筛选出真正理解内存管理的学生。
与数据结构紧密相关:链表、树、图的实现几乎都离不开指针(地址操作)。
函数参数传递:值传递 vs 地址传递,是理解“形参修改影响实参”的关键。
典型考法
指针作为函数参数,实现交换两个数、返回多个结果。
指针与数组的等价关系:*(p+i) 与 a[i]。
函数指针、指向指针的指针(中级难度)。
二、数组与字符串处理(基础但高频)
为什么是重点?
几乎每一届考试都会出:数组是批量数据处理的入门结构。
字符串是字符数组的特例:字符串处理函数(如strcpy、strlen)是必考内容。
与循环结构强耦合:数组遍历 + 分支/循环 = 经典考题。
典型考法
一维/二维数组的初始化、输入输出、求最大/最小值、排序。
字符串反转、统计字符出现次数、字符串连接(不使用库函数)。
二维数组的“行优先”存储理解(与指针结合可出难题)。
三、结构体与链表(数据结构入门核心)
为什么是重点?
从C语言过渡到数据结构的桥梁:结构体是链表的载体。
线性表的链式存储:大纲明确要求“掌握单链表插入、删除算法”。
实际编程中极常用:学生需理解动态内存分配(malloc/free)。
典型考法
定义学生结构体,输入输出信息。
单链表的创建、遍历、插入、删除、反转(几乎是必考题)。
结构体数组与结构体指针的区别。
四、排序与查找(算法核心)
为什么是重点?
考查算法思维:排序和查找是所有算法的基础。
时间复杂度分析:大纲要求“会根据最大频度计算时间复杂度”。
稳定性和适用场景:不同排序的优缺点对比是选择题/填空题常客。
典型考法
快速排序、直接插入排序、简单选择排序(手写算法或写出每趟结果)。
二分查找(要求递归或非递归实现)。
哈希表的构造方法(除留余数法 + 线性探测再散列)。
五、树与二叉树(数据结构难点)
为什么是重点?
递归思想的最佳载体:树的遍历天然适合递归。
考点集中:前/中/后序遍历、层次遍历、哈夫曼树等。
分值高:往往是一道10~15分的应用题或函数题。
典型考法
根据前序+中序重建二叉树。
编写递归函数计算二叉树深度或叶子结点数。
哈夫曼编码的构造与带权路径长度计算。
六、栈与队列(线性结构进阶)
为什么是重点?
操作系统、表达式求值的底层结构。
与递归的关系:递归本质是系统栈。
循环队列的队空/队满判断是易错点。
典型考法
用栈实现括号匹配、表达式求值(中缀转后缀)。
用队列实现约瑟夫环问题。
循环队列的入队、出队算法(注意rear和front的移动)。
七、基础算法(枚举、递归、分治)
为什么是重点?
体现编程解决问题的能力,而非死记硬背。
递归与树、排序(如快速排序)深度绑定。
枚举和贪心适合出“应用题”。
典型考法
枚举:百钱百鸡、水仙花数。
递归:斐波那契数列、汉诺塔、全排列。
分治:归并排序或快速排序的划分过程。
八、文件与输入输出(容易被忽视但必考)
为什么是重点?
大纲明确要求fscanf/fprintf、fopen/fclose。
实际程序离不开文件读写,考查学生对输入流的控制能力。
典型考法
从文件中读取整数并排序后输出到另一个文件。
从键盘读取字符串并写入文件。