第一篇 语言基础
第1章 C语言的基本概念
1.1 C语言的发展与特点
1.1.1 C语言的发展
1.1.2 C语言的特点
1.2 几个基本概念
1.3 C语言的基本标识符
1.3.1 字符集
1.3.2 标识符
1.4 C语言程序的几个简单实例
1.5 C语言程序的结构特点
1.6 C语言程序的编译和执行
本章小结
习题一
第2章 基本数据类型及其运算
2.1 C语言的数据类型
2.1.1 数据类型的一般概念
2.1.2 常量
2.2 数据类型及变量
2.2.1 基本数据类型
2.2.2 变量及变量的定义
2.2.3 变量的初始化
2.3 运算符和表达式
2.3.1 运算符和表达式概述
2.3.2 混合类型数据的运算
2.3.3 赋值语句及赋值表达式
2.3.4 算术运算符及算术表达式
2.3.5 关系运算符及关系表达式
2.3.6 逻辑运算符及逻辑表达式
2.3.7 位运算符
2.3.8 其他运算符及表达式
2.4 基本输入/输出函数
2.4.1 格式化输出函数
2.4.2 格式化输入函数
2.4.3 字符输入与输出函数
本章小结
习题二
第3章 程序控制结构
3.1 C语言结构化程序设计基础
3.1.1 基本控制结构
3.1.2 程序的结构化
3.2 顺序结构
3.2.1 语句和语句块
3.2.2 顺序结构示例
3.3 分支结构
3.3.1 if-else语句
3.3.2 if-elseif-else多分支语句
3.3.3 条件分支的嵌套
3.3.4 switch分支
3.4 循环结构
3.4.1 while(当型循环)
3.4.2 do-while(直到型循环)
3.4.3 for循环语句
3.4.4 三种循环的比较
3.4.5 多重循环
3.4.6 循环中的控制转移
3.4.7 结构化程序设计注意事项
3.5 结构化程序设计应用举例
本章小结
习题三
第4章 复合数据结构基础
4.1 数组及其应用
4.1.1 一维数组
4.1.2 多维数组
4.1.3 字符型数组的应用
4.2 指针及其应用
4.2.1 指针的基本概念及定义方式
4.2.2 指针的初始化
4.2.3 指针的运算
4.2.4 用指针操作基本数据对象
4.2.5 用指针操作数组
4.3 结构体及其应用
4.3.1 结构体的声明
4.3.2 结构体变量的定义
4.3.3 结构体成员的引用
4.3.4 结构体变量的初始化
4.4 联合体及其应用
4.4.1 联合体的声明
4.4.2 联合体变量的定义
4.4.3 联合体成员的引用
4.4.4 定义联合体变量应注意的问题
4.5 枚举类型及其应用
4.5.1 枚举类型的声明
4.5.2 枚举类型变量的定义
4.5.3 枚举类型变量的应用
4.6 自定义类型
本章小结
习题四
第二篇 程序设计
第5章 结构化程序设计概论
5.1 数据的基本概念
5.1.1 数据与信息
5.1.2 数据与地址
5.1.3 数据类型
5.1.4 文字常量
5.1.5 变量
5.1.6 声明
5.2 代码的基本概念
5.2.1 表达式语义
5.2.2 赋值与初始化
5.2.3 代码与计算
5.2.4.控制流
5.2.5 断言与程序不变量
5.3 算法及其表示方法概要
5.3.1 算法的基本概念
5.3.2 代码与伪代码
5.4 结构化程序的组织
5.4.1 程序的结构化
5.4.2 程序的一般结构
5.4.3 结构化与函数抽象
5.4.4 程序范型
5.5 程序测试与代码优化
5.5.1 程序测试
5.5.2 程序效率与代码优化
本章小结
习题五
第6章 函数与模块设计
6.1 函数概述
6.2 函数的声明、定义与调用
6.2.1 函数声明
6.2.2 函数定义
6.2.3 函数调用
6.2.4 函数参数与返回值
6.2.5 函数的嵌套调用
6.3 函数调用栈框架
6.3.1 函数调用栈框架的基本概念
6.3.2 值传递与地址传递
6.4 作用域
6.4.1 变量的作用域
6.4.2 函数的作用域
6.5 变量的存储类别
6.5.1 auto变量
6.5.2 static变量
6.5.3 register变量
6.5.4 extern变量
6.6 模块化程序设计
6.6.1 模块的独立性原则
6.6.2 自顶向下、逐步求精
6.7 综合举例
本章小结
习题六
第7章 库与接口设计
7.1 用户、接口与库概述
7.2 标准库
7.2.1 标准I/O库
7.2.2 数学库接口
7.2.3 数字与字符特征库接口
7.2.4 字符串库接口
7.2.5 辅助函数库接口
7.3 图形库
7.3.1 图形系统初始化
7.3.2 基本绘图函数
7.3.3 图形库的应用及自定义接口
7.4 接口设计的原则
本章小结
习题七
第8章 复合数据类型——数组与字符串
8.1 数据类型与数据结构
8.1.1 数据与数据结构的关系
8.1.2 数据的逻辑结构
8.1.3 数据的物理结构
8.1.4 数据结构上的操作
8.1.5 同质复合数据类型
8.2 数组
8.2.1 数组的下标
8.2.2 数组的内部表示
8.2.3 有关元素下标越界的说明
8.2.4 数组的使用
8.2.5 多维数组
8.2.6 多维数组作为函数参数
8.3 字符串
8.3.1 字符串的内部表示
8.3.2 作为抽象数据的字符串
8.3.3 字符串变量
8.3.4 ANSI标准字符串库
8.3.5 字符串的应用
本章小结
习题八
第9章 复合数据类型——结构体与指针
9.1 结构体
9.1.1 结构体的意义
9.1.2 结构体的应用
9.1 ,3结构体指针
9.2 指针
9.2.1 指针的意义和作用
9.2.2 指针的声明与使用
9.2.3 指针与其他数据结构的关系
9.2.4 动态存储分配
9.2.5 指针与函数
9.3 链表
9.3.1 链表的构造
9.3.2 链表元素的遍历
9.3.3 链表的插入操作
9.3.4 链表的删除操作
本章小结
习题九
第10章 文件与数据存储
10.1 文件的基本概念
10.1.1 什么是文件
10.1.2 文件结构体与文件指针
10.1.3 文件的类型
10.2 基本的文件操作
10.2.1 打开文件
10.2.2 关闭文件
10.2.3 读写文件
10.2.4 文件指针操作
10.3 文件应用实例
本章小结
习题十
第11章 算法设计与分析
11.1 算法的概念与特征
11.1.1 算法举例
11.1.2 算法的基本特征
11.2 算法的类型与结构
11.2.1 数值算法与非数值算法
11.2.2 算法的基本结构
11.3 算法的描述方法
11.3.1 流程图
11.3.2 N-S图
11.3.3 伪代码
11.4 算法的设计与实现
11.4.1 素数判断问题
11.4.2 最大公约数问题
11.5 算法分析与算法复杂度
11.5.1 排序算法分析
11.5.2 算法复杂度
11.5.3 归并排序
11.5.4 标准复杂度类型
11.6 常用算法设计与分析
11.6.1 快速排序算法的基本原理
11.6.2 快速排序算法的实现
11.6.3 快速排序算法的效率分析
本章小结
习题十
第12章 递归程序设计
12.1 递归问题的引入
12.1.1 递归的简单例子
12.1.2 递归过程的跟踪
12.1.3 递归信任与递归范型
12.2 典型递归程序
12.2.1 Hanoi塔问题
12.2.2 分形问题
12.2.3 其他递归问题
12.3 递归与迭代
本章小结
习题十二
第13章 数据抽象
13.1 抽象数据类型
13.2 线性表类型
13.2.1 线性表类型定义
13.2.2 线性表的顺序表示及其实现
13.2.3 通用线性表类型
13.3 栈
13.3.1 抽象栈类型定义
13.3.2 抽象栈的实现
13.3.3 栈的应用
13.4 队列
13.4.1 抽象队列类型的定义
13.4.2 队列的实现
13.4.3 队列的应用
13.5 符号表
13.5.1 定义抽象的符号表
13.5.2 键与值类型的确定
13.5.3 无定义值的处理方法
13.5.4 抽象符号表的接口声明
13.6 哈希表
13.6.1 哈希表的基本概念
13.6.2 哈希函数
13.6.3 负载因子与桶的数目
13.7 抽象哈希表的应用
13.7.1 重集元素的计数
13.7.2 使用抽象符号表
13.7.3 抽象符号表的局限性
本章小结
习题十三
第14章 算法与程序抽象
14.1 基本函数设计原则
14.1.1 软件评判标准
14.1.2 内聚性
14.1.3 耦合度
14.2 数据封装与信息隐藏
14.2.1 客户函数与服务器函数
14.2.2 数据封装
14.2.3 信息隐藏
14.3 函数指针
14.3.1 函数指针的目的
14.3.2 函数指针声明
14.3.3 函数指针的使用
14.3.4 函数指针类型
14.4 回调函数
14.4.1 回调函数
14.4.2 遍历与回调
14.4.3 回调函数参数
14.4.4 值的存储与删除
14.5 再论抽象符号表
14.5.1 完整的抽象符号表接口
14.5.2 完整的抽象符号表实现
本章小结
习题十四
参考文献