第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线性表的链式存储 8
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顺序查找 14
1.6.2二分法查找 15
1.7排序技术 15
1.8习题 18
第2章 程序设计结构 20
2.1程序设计的方法与风格 20
2.2结构化程序设计 21
2.3面向对象的程序设计 22
2.3.1面向对象特点 22
2.3.2类和实例 23
2.3.3消息 23
2.4习题 24
第3章 软件工程基础 25
3.1软件工程基本概念 25
3.1.1软件的含义 25
3.1.2软件工程 26
3.2结构化分析方法 27
3.2.1结构化分析方法 28
3.2.2软件需求规格说明书 29
3.3结构化设计方法 31
3.3.1软件设计的基本内容 31
3.3.2结构化设计 32
3.3.3概要设计 33
3.3.4详细设计 34
3.4软件测试 35
3.4.1软件测试概述 35
3.4.2软件测试技术 36
3.5程序的调试 38
3.5.1步骤与方法 38
3.5.2静态调试 38
3.5.3动态调试 39
3.6习题 40
第4章 数据库设计基础 42
4.1数据库的基本概念 42
4.1.1数据和信息 42
4.1.2数据处理、数据库与数据库管理系统 42
4.1.3数据库系统的发展 44
4.1.4数据库系统的内部结构体系 45
4.2数据模型 46
4.2.1数据模型概述 47
4.2.2 E-R模型 47
4.2.3关系模型 49
4.2.4数据操作 50
4.2.5关系中的数据约束 50
4.3关系代数 51
4.4数据库设计 52
4.5习题 53
第5章 程序设计基本概念 55
5.1程序和程序设计 55
5.1.1程序 55
5.1.2程序设计 55
5.1.3程序设计语言 55
5.2 C语言的语句和关键字 56
5.2.1 C程序的基本结构 56
5.2.2 C语言语句 56
5.2.3关键字 58
5.3习题 58
第6章C语言数据类型、运算符和表达式 60
6.1 C语言数据类型 60
6.2常量、变量和标识符 61
6.2.1常量 61
6.2.2变量 61
6.2.3标识符 62
6.3整型数据 62
6.3.1整型常量的表示 62
6.3.2整型变量 63
6.3.3整数在内存中的存储形式 63
6.3.4常用的输出格式 64
6.4实型数据 64
6.4.1实型常量的表示方法 64
6.4.2实型变量 64
6.4.3常用的输出格式 65
6.5算术表达式 65
6.5.1算术运算符 65
6.5.2算术表达式 66
6.6赋值表达式 66
6.6.1赋值运算符和赋值表达式 66
6.6.2不同类型数据间的混合运算 67
6.7自增、自减运算和逗号表达式 68
6.7.1自增、自减运算 68
6.7.2逗号表达式 69
6.8习题 70
第7章 顺序结构程序设计 72
7.1格式化输出printf()函数 72
7.1.1基本格式 72
7.1.2格式说明 72
7.1.3使用printf函数输出结果 74
7.2格式化输入scanf()函数 75
7.2.1基本格式 75
7.2.2格式说明 75
7.2.3通过scanf函数输入数据 76
7.3单个字符的输入和输出getchar()和putchar()函数 77
7.3.1单个字符输入函数 77
7.3.2单个字符输出函数 77
7.4习题 78
第8章 选择结构程序设计 83
8.1关系运算符及其表达式 83
8.1.1关系运算符及其优先次序 83
8.1.2关系表达式 83
8.2逻辑运算符及其表达式 84
8.2.1逻辑运算符及优先次序 84
8.2.2逻辑表达式 85
8.3 if语句和条件运算 86
8.3.1 if语句 86
8.3.2 if else语句 89
8.3.3 if语句的嵌套 90
8.3.4条件表达式 94
8.4 switch语句 94
8.5习题 96
第9章 循环结构程序设计 100
9.1循环语句概述 100
9.2 for语句和其构成的循环结构 100
9.3 while语句和其构成的循环结构 103
9.4 do while语句和其构成的循环结构 105
9.5循环语句的嵌套 106
9.6 break和continue语句 109
9.7习题 111
第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()函数 127
10.10字符串处理函数 128
10.10.1字符串比较strcmp() 函数 128
10.10.2测试字符串长度函数strlen(字符数组) 130
10.10.3字符串拷贝strcpy()函数 130
10.10.4字符串连接strcat()函数 130
10.10.5将字符串中大写字母转换成小写strlwr()函数 131
10.10.6将字符串中小写字母转换成大写strupr()函数 131
10.11习题 132
第11章 函数 136
11.1函数的定义 136
11.2函数的参数和返回值 137
11.2.1函数的参数 137
11.2.2函数的返回值 138
11.2.3函数原型的声明 140
11.3函数的嵌套调用 142
11.4函数的递归调用 143
11.5内部函数和外部函数 147
11.6内部变量和外部变量 148
11.6.1内部变量 148
11.6.2外部变量 150
11.7变量的动态存储和静态存储 151
11.8习题 152
第12章 指针 159
12.1指针的概念 159
12.2指针变量的定义和类型 160
12.2.1指针变量的定义 160
12.2.2指针变量的运算 160
12.2.3指针变量的引用 161
12.3指针与一维数组 163
12.3.1一维数组指针的定义 163
12.3.2一维数组指针的使用 163
12.4指针与二维数组 164
12.4.1二维数组指针的定义 164
12.4.2二维数组指针的理解 166
12.4.3通过地址引用二维数组元素 167
12.4.4通过建立一个指针数组引用二维数组元素 167
12.4.5通过建立一个行指针引用二维数组元素 167
12.4.6二维数组指针的使用 168
12.4.7字符串指针的定义 169
12.4.8使用字符串指针变量与字符数组的区别 170
12.5指针与函数 170
12.5.1指针数组的定义 171
12.5.2指针数组的使用 171
12.5.3指针的定义 173
12.5.4指向指针的指针的使用 175
12.5.5指针变量作为函数参数 175
12.6习题 179
第13章 编译预处理 187
13.1编译预处理概述 187
13.2动态存储分配 188
13.2.1动态存储分配 188
13.2.2条件编译 189
13.3习题 191
第14章 结构体和共用体 194
14.1结构体类型定义 194
14.2结构体变量 195
14.2.1结构体变量的定义 195
14.2.2结构体变量的引用与初始化 196
14.2.3结构体数组的定义与引用 197
14.2.4指向结构体变量的指针 198
14.2.5指向结构体数组的指针 199
14.2.6链表 199
14.2.7链表的创建 201
14.2.8链表的插入 203
14.2.9链表的删除 204
14.3共用体 204
14.4习题 207
第15章 位运算 210
15.1位运算符 210
15.2位运算符和位运算 210
15.3习题 213
第16章 文件 215
16.1 C语言文件的概念 215
16.1.1文件与文件名 215
16.1.2文件分类 215
16.1.3读文件和写文件 216
16.2文件指针 216
16.3文件的打开与关闭 217
16.3.1文件的打开 217
16.3.2文件的关闭 218
16.4常用文件的读写操作库函数 219
16.4.1格式化读函数和写函数 219
16.4.2读写字符函数fputc和fgetc 220
16.4.3读写字符串函数fgets和fputs函数 221
16.4.4读写数据块函数fread和fwrite 222
16.5文件定位函数 223
16.5.1 fseek函数 223
16.5.2 ftell函数 224
16.5.3 rewind函数 224
16.6习题 224
第17章 上机指导 227
17.1上机应试技巧 227
17.2上机模拟试题一 233
17.2.1程序填空题 233
17.2.2程序改错题 234
17.2.3程序设计题 235
17.3上机模拟试题二 236
17.3.1程序填空题 236
17.3.2程序改错题 237
17.3.3程序设计题 238
17.4上机模拟试题三 239
17.4.1程序填空题 239
17.4.2程序改错题 239
17.4.3程序设计题 240
17.5上机模拟试题四 241
17.5.1程序填空题 241
17.5.2程序改错题 242
17.5.3程序设计题 243
17.6上机模拟试题五 244
17.6.1程序填空题 244
17.6.2程序改错题 244
17.6.3程序设计题 245
17.7上机模拟试题一分析与 讲解 246
17.7.1程序填空题 246
17.7.2程序改错题 247
17.7.3程序设计题 247
17.8上机模拟试题二分析与 讲解 248
17.8.1程序填空题 248
17.8.2程序改错题 248
17.8.3程序设计题 248
17.9上机模拟试题三分析与讲解 249
17.9.1程序填空题 249
17.9.2程序设计题 249
17.10上机模拟试题四分析与讲解 250
17.10.1程序填空题 250
17.10.2程序改错题 250
17.10.3程序设计题 251
17.11上机模拟试题五分析与讲解 252
17.11.1程序填空题 252
17.11.2程序改错题 252
17.11.3程序设计题 252
附录A习题分析与解答 253
附录B 2010年9月二级C语言考试试题分析 282
附录C 2011年9月二级C语言考试试题分析 300