参考教材:谭浩强著,《C 语言程序设计》(第三版),清华大学出版社,2005年第3版
考试内容与要求
1.C语言概述
了解C语言的特点和发展历史,理解C程序的格式及结构。
2.算法
掌握算法的概念,理解结构化程序设计的思想和方法,应用N-S流程图表示实际问题的算法。
3.基本数据类型、运算与表达式
掌握基本数据类型和类型关键字,各种常量的表示,变量的定义,符号常量的定义,各类型数据的输出,赋值表达式、算术表达式、逗号表达式的书写方法和求值规则。理解基本数据类型常量和变量的使用方法,符号常量的使用方法,不同类型数据间的转换和运算规则。在程序中设计输出基本类型常量和变量的语句。
4.简单C程序设计
熟练使用赋值语句和输入输出语句,设计顺序结构的程序。
5.选择结构程序设计
熟练使用if语句实现选择结构,熟练使用switch与break语句实现多分支选择结构,应用选择结构编写程序来解决实际问题。
6.循环控制
熟练使用for、do-while和while实现循环结构,掌握循环结构的嵌套使用,掌握break语句和continue语句在循环结构中的作用,用循环结构编写程序来解决实际问题。
7.数组
掌握数组的定义、初始化和引用方法,熟练掌握一维、二维数组的输入/输出方法,掌握常用的字符处理函数和字符串输入/输出函数,掌握数组在数值计算、数据统计、排序和数据检索方面的应用,使用数组编写程序来解决实际问题。
8.函数
理解函数在模块化程序设计中的作用;掌握函数的定义方法(数据类型、存储类型、形式参数、函数体);掌握有参函数和无参函数的的调用方法,以及对被调用函数的类型说明;通过形参和实参的结合方法实现函数间的数据传递,掌握通过返回值实现函数间的数据传递,了解通过全局变量的方法实现函数间的数据传递;掌握函数的嵌套调用和递归函数的定义与调用;了解内部函数和外部函数的概念;应用函数编写程序解决实际问题。
9.预处理命令
掌握带参数和不带参数的宏定义的功能和使用方法;掌握文件包含命令的使用方法,包括正确使用头文件;了解条件编译的作用和使用方法;在程序中使用宏定义、文件包含和条件编译。
10.指针
理解指针与指针变量的概念;掌握指针与地址运算符(&、*、[])的使用;掌握指针的运算、指针作为函数参数、指针作为函数值;掌握用指针访问变量、一维数组和二维数组的方法;掌握用指针处理字符串的方法;了解用指针进行内存动态分配的方法和内存动态分配函数的使用;了解用二级指针访问一维和二维数组的方法;应用指针编写程序。
11.结构体
掌握结构体类型数据的定义和引用方法;掌握结构体数据在函数间的传递方式;掌握用指针访问结构体数据的方法;了解枚举类型数据的定义和引用方法;掌握类型定义的作用和使用方法;应用结构体编写程序。
12.位运算
掌握位运算符功能,了解位运算的意义和作用。
13.文件
理解文件和文件类型指针的概念;掌握文件的打开与关闭操作;掌握主要文件读写函数的使用;掌握文件检测和定位函数的使用;掌握文件的顺序存取和随机存取方法;应用文件操作编写程序来解决实际问题。
参考教材:严蔚敏编,《数据结构》(C语言版),北京:清华大学出版社,2003
考试内容与要求
1.绪论
理解数据、数据元素、数据项的概念及相互关系;理解数据结构的概念和基本分类、逻辑结构、存储结构的概念及二者的关系。理解数据结构的基本操作、算法的概念。识记数据的逻辑结构、存储结构、数据结构、四种基本数据结构及特点,不同级别的时间复杂度的表示方法。应用描述算法的语句描述算法。
2.线性表
理解什么是线性表、线性表有那些特点、同一线性表中数据元素类型的要求、逻辑结构、存储结构。识记线性表的顺序存储的基本操作及在顺序存储结构中的算法;带头结点的线性链表基本操作的算法;循环链表、双向链表的存储方式、基本操作算法;线性链表、循环链表及双向链表是空表的条件;顺序存储的线性表满的条件、空的条件。实现线性表在顺序存储和线性链表的其他简单操作的算法。综合应用线性表存储数据及进行相关操作。
3.栈和队列
掌握栈和队列的定义、各自的特点、逻辑结构、基本操作、顺序存储、链式存储、算法实现和栈与队列的简单应用。识记基本操作在相应存储结构中的算法;顺序存储的栈、队列是满、空的条件;链式存储的栈、队列是空的条件。使用栈、队列的基本操作描述其他操作。用栈和队列存储数据解决实际问题。
4.串
理解串的定义、术语、逻辑结构及存储结构。识记串的基本操作及其功能。应用定长顺序存储结构下实现串的基本操作的算法。使用串的基本操作描述串的其他操作。
5.数组和广义表
理解数组的定义、相关术语、逻辑结构及存储结构;广义表的定义、概念和逻辑结构。识记数组的访问公式。掌握特殊矩阵、稀疏矩阵的压缩存储。应用基于三元组表示法求转置矩阵的算法,使用数组解决实际问题。
6.树和二叉树
理解树、二叉树的概念、定义、相关术语;树和二叉树的逻辑结构、存储结构。掌握二叉树的基本操作、满二叉树、完全二叉树的概念、构造线索二叉树的方法,识记二叉树的性质、二叉树的二叉链式存储结构,掌握二叉树的前、中、后序、按层遍历的方法、算法;有关二叉树的算法;树与二叉树间的转换;构造哈夫曼树、哈夫曼编码。
7.图
理解图的相关概念、定义、术语,无向图、有向图的逻辑结构、存储结构、最小生成树、拓扑排序、关键路径及最短路径的概念。识记无向图、有向图的邻接矩阵、邻接表的表示方法、图的深度优先搜索、广度优先搜索方法和算法。掌握求连通分量、拓扑序列、关键路径、生成树、最小生成树和求最短路径的方法。
8.查找
理解查找表的概念、术语、顺序表、有序表、索引顺序表的逻辑结构、存储结构及相应的算法,二叉排序树、平衡二叉树的概念、特性、存储,哈希表、哈希函数、冲突、解决冲突方法的基本概念。识记二叉排序树的构造、插入、删除的方法,构造平衡二叉树的方法。理解B树、B+树的概念。掌握顺序表查找的算法、有序表折半查找的算法,构造哈希表、使用线性探测、二次探测、链地址法进行查找的方法。使用查找方法解决实际问题。
9.内部排序
理解各种排序方法的思想方法、特点、数据存储结构、常用排序方法的算法,各种排序方法的优缺点。理解排序的概念、插入排序、冒泡排序、希尔排序、快速排序、简单选择排序、堆排序、归并排序的概念和方法,选择被排序数据的存储结构,分析各种算法的时间复杂度。识记直接插入排序、冒泡排序、简单选择排序、快速排序、堆垒排序的算法。根据被排序的数据,选择一种比较好的存储结构和排序方法进行排序。应用排序方法解决实际问题。
10.文件
理解记录、顺序文件、索引文件、ISAM文件、VSAM文件、散列文件、多重表文件、倒排文件、多关键字文件、存储文件的典型存储器及其特点、文件种类及组成、文件结构和应用领域。