第1章 算法和数据结构 1
1.1 算法与数据结构概述 1
1.1.1 算法的概念 1
1.1.2 算法的复杂度 2
1.1.3 数据结构的定义 3
1.1.4 数据结构的表示 4
1.1.5 线性结构与非线性结构 4
1.2 线性表 4
1.2.1 线性表概述 4
1.2.2 线性表的顺序存储 5
1.3 栈和队列 6
1.3.1 栈的定义与操作 6
1.3.2 队列的定义与操作 7
1.4 线性链表 8
1.4.1 线性表的链式存储 9
1.4.2 双向链表的结构及其基本运算 10
1.5 树与二叉树 11
1.5.1 树的定义 11
1.5.2 二叉树的定义及其性质 11
1.5.3 二叉树的遍历 13
1.6 查找技术 14
1.6.1 顺序查找 15
1.6.2 二分法查找 15
1.7 排序技术 15
1.8 习题 18
第2章 程序设计结构 21
2.1 程序设计的方法与风格 21
2.2 结构化程序设计 22
2.3 面向对象的程序设计 23
2.3.1 面向对象特点 23
2.3.2 类和实例 24
2.3.3 消息 24
2.4 习题 25
第3章 软件工程基础 26
3.1 软件工程基本概念 26
3.1.1 软件的含义 26
3.1.2 软件工程 27
3.2 软件需求分析 28
3.2.1 结构化分析方法 29
3.2.2 软件需求规格说明书 31
3.3 结构化设计方法 32
3.3.1 软件设计的基本内容 32
3.3.2 结构化设计 34
3.3.3 概要设计 34
3.3.4 详细设计 35
3.4 软件测试 36
3.4.1 软件测试概述 36
3.4.2 软件测试技术 37
3.5 程序的调试 38
3.5.1 步骤与方法 39
3.5.2 静态调试 39
3.5.3 动态调试 40
3.6 习题 41
第4章 数据库设计基础 43
4.1 数据库的基本概念 43
4.1.1 数据和信息 43
4.1.2 数据处理、数据库与数据库管理系统 43
4.1.3 数据库系统的发展 45
4.1.4 数据库系统的内部结构体系 46
4.2 数据模型 48
4.2.1 数据模型概述 48
4.2.2 E-R模型 49
4.2.3 关系模型 50
4.2.4 数据操作 51
4.2.5 关系中的数据约束 52
4.3 关系代数 52
4.4 数据库设计 53
4.5 习题 55
第5章 程序设计基本概念 57
5.1 程序和程序设计 57
5.1.1 程序 57
5.1.2 程序设计 57
5.1.3 程序设计语言 57
5.2 C语言的语句和关键字 58
5.2.1 C程序的基本结构 58
5.2.2 C语言语句 58
5.2.3 关键字 60
5.3 习题 60
第6章 C语言数据类型、运算符和表达式 62
6.1 C语言数据类型 62
6.2 常量、变量和标识符 63
6.2.1 常量 63
6.2.2 变量 63
6.2.3 标识符 64
6.3 整型数据 64
6.3.1 整型常量的表示 64
6.3.2 整型变量 65
6.3.3 整数在内存中的存储形式 65
6.3.4 常用的输出格式 66
6.4 实型数据 66
6.4.1 实型常量的表示方法 66
6.4.2 实型变量 66
6.4.3 常用的输出格式 67
6.5 算术运算符及算术表达式 67
6.5.1 算术运算符 67
6.5.2 算术表达式 68
6.6 赋值表达式 68
6.6.1 赋值运算符和赋值表达式 68
6.6.2 不同类型数据间的混合运算 70
6.7 自增、自减运算和逗号表达式 71
6.7.1 自增、自减运算 71
6.7.2 逗号表达式 72
6.8 习题 72
第7章 顺序结构程序设计 74
7.1 格式化输出printf()函数 74
7.1.1 基本格式 74
7.1.2 格式说明 74
7.1.3 使用printf函数输出结果 76
7.2 格式化输入scanf()函数 77
7.2.1 基本格式 77
7.2.2 格式说明 77
7.2.3 通过scanf函数输入数据 78
7.3 单个字符的输入和输出getchar()和putchar()函数 79
7.3.1 单个字符输出函数 79
7.3.2 单个字符输入函数 79
7.4 习题 80
第8章 选择结构程序设计 85
8.1 关系运算符及其表达式 85
8.1.1 关系运算符及其优先次序 85
8.1.2 关系表达式 85
8.2 逻辑运算符及其表达式 86
8.2.1 逻辑运算符及优先次序 86
8.2.2 逻辑表达式 87
8.3 if语句和条件运算 88
8.3.1 if语句 88
8.3.2 ifelse语句 91
8.3.3 if语句的嵌套 91
8.3.4 条件表达式 96
8.4 switch语句 97
8.5 习题 98
第9章 循环结构程序设计 101
9.1 循环语句概述 101
9.2 for语句和其构成的循环结构 101
9.3 while语句和其构成的循环结构 104
9.4 do while语句和其构成的循环结构 106
9.5 循环语句的嵌套 107
9.6 break和continue语句 110
9.7 习题 112
第10章 字符型数据 116
10.1 字符常量 116
10.2 字符变量 117
10.2.1 字符串常量 117
10.2.2 常用输出格式 117
10.3 字符的输入和输出 118
10.3.1 采用scanf()语句 118
10.3.2 采用printf()语句 118
10.4 一维数组的定义和一维数组元素的引用 118
10.4.1 数组的定义 118
10.4.2 一维数组的定义 119
10.4.3 一维数组的引用 120
10.5 一维数组的应用举例 120
10.6 二维数组的定义和二维数组元素的引用 122
10.6.1 二维数组的定义和初始化 122
10.6.2 二维数组的引用 123
10.7 二维数组应用举例 124
10.8 字符数组和字符串 125
10.8.1 字符数组的定义 125
10.8.2 字符数组的初始化 126
10.8.3 字符数组的引用 126
10.8.4 字符串的处理 126
10.9 字符串输入和输出 127
10.9.1 输入字符串gets()函数 127
10.9.2 输出字符串puts()函数 128
10.10 字符串处理函数 128
10.10.1 字符串比较strcmp()函数 128
10.10.2 测试字符串长度函数strlen(字符数组) 129
10.10.3 字符串复制strcpy()函数 130
10.10.4 字符串连接strcat()函数 130
10.10.5 将字符串中大写字母转换成小写strlwr()函数 131
10.10.6 将字符串中小写字母转换成大写strupr()函数 131
10.11 习题 132
第11章 函数 135
11.1 函数的定义 135
11.2 函数的参数和返回值 136
11.2.1 函数的参数 136
11.2.2 函数的返回值 137
11.2.3 函数原型的声明 139
11.3 函数的嵌套调用 141
11.4 函数的递归调用 142
11.5 内部函数和外部函数 146
11.6 内部变量和外部变量 147
11.6.1 内部变量 147
11.6.2 外部变量 149
11.7 变量的动态存储和静态存储 150
11.8 习题 151
第12章 指针 156
12.1 指针的概念 156
12.2 指针变量 157
12.2.1 指针变量的定义 157
12.2.2 指针变量的运算 157
12.2.3 指针变量的引用 158
12.3 指针与一维数组 160
12.3.1 一维数组指针的定义 160
12.3.2 一维数组指针的使用 160
12.4 指针与二维数组 161
12.4.1 二维数组指针的定义 161
12.4.2 二维数组指针的理解 163
12.4.3 通过地址引用二维数组元素 164
12.4.4 通过建立一个指针数组引用二维数组元素 164
12.4.5 通过建立一个行指针引用二维数组元素 164
12.4.6 二维数组指针的使用 165
12.4.7 字符串指针的定义 166
12.4.8 使用字符串指针变量与字符数组的区别 167
12.5 指针与函数 167
12.5.1 指针数组的定义 168
12.5.2 指针数组的使用 168
12.5.3 指向指针的指针变量的定义 170
12.5.4 指向指针的指针的使用 172
12.5.5 指针变量作为函数参数 172
12.6 习题 176
第13章 编译预处理 182
13.1 编译预处理概述 182
13.2 动态存储分配 183
13.2.1 动态存储分配的方法 183
13.2.2 条件编译 184
13.3 习题 186
第14章 结构体和共用体 189
14.1 结构体类型定义 189
14.2 结构体变量 190
14.2.1 结构体变量的定义 191
14.2.2 结构体变量的引用与初始化 191
14.2.3 结构体数组的定义与引用 193
14.2.4 指向结构体变量的指针 193
14.2.5 指向结构体数组的指针 194
14.2.6 链表 194
14.2.7 链表的创建 196
14.2.8 链表的插入 198
14.2.9 链表的删除 199
14.3 共用体 199
14.4 习题 202
第15章 位运算 205
15.1 位运算符 205
15.2 位运算符和位运算 205
15.3 习题 208
第16章 文件 210
16.1 C语言文件的概念 210
16.1.1 文件与文件名 210
16.1.2 文件分类 210
16.1.3 读文件和写文件 211
16.2 文件指针 211
16.3 文件的打开与关闭 212
16.3.1 文件的打开 212
16.3.2 文件的关闭 213
16.4 常用文件的读写操作库函数 214
16.4.1 格式化读函数和写函数 214
16.4.2 读写字符函数fputc和fgetc 215
16.4.3 读写字符串函数fgets和fputs 216
16.4.4 读写数据块函数fread和fwrite 217
16.5 文件定位函数 218
16.5.1 fseek函数 218
16.5.2 ftell函数 219
16.5.3 rewind函数 219
16.6 习题 219
第17章 操作题考试指导 222
17.1 操作题应试技巧 222
17.2 操作题模拟试题一 226
17.2.1 程序填空题 226
17.2.2 程序改错题 227
17.2.3 程序设计题 228
17.3 操作题模拟试题二 229
17.3.1 程序填空题 229
17.3.2 程序改错题 230
17.3.3 程序设计题 230
17.4 操作题模拟试题三 231
17.4.1 程序填空题 231
17.4.2 程序改错题 232
17.4.3 程序设计题 233
17.5 操作题模拟试题四 234
17.5.1 程序填空题 234
17.5.2 程序改错题 234
17.5.3 程序设计题 235
17.6 操作题模拟试题五 236
17.6.1 程序填空题 236
17.6.2 程序改错题 237
17.6.3 程序设计题 238
17.7 操作题模拟试题一分析与讲解 239
17.7.1 程序填空题 239
17.7.2 程序改错题 239
17.7.3 程序设计题 240
17.8 操作题模拟试题二分析与讲解 240
17.8.1 程序填空题 240
17.8.2 程序改错题 241
17.8.3 程序设计题 241
17.9 操作题模拟试题三分析与讲解 242
17.9.1 程序填空题 242
17.9.2 程序改错题 242
17.9.3 程序设计题 242
17.10 操作题模拟试题四分析与讲解 243
17.10.1 程序填空题 243
17.10.2 程序改错题 243
17.10.3 程序设计题 244
17.11 操作题模拟试题五分析与讲解 245
17.11.1 程序填空题 245
17.11.2 程序改错题 245
17.11.3 程序设计题 245
附录A 习题分析与解答 246
附录B 2012年3月二级C语言考试试题分析 273
附录C 2012年9月二级C语言考试试题分析 290