第1章 算法和数据结构 1
1.1 算法与数据结构概述 1
1.1.1 算法的概念 1
1.1.2 算法的复杂度 2
1.1.3 数据结构的定义 3
1.1.4 数据结构的表示 3
1.1.5 线性结构与非线性结构 4
1.2 线性表 4
1.2.1 线性表概述 4
1.2.2 线性表的顺序存储 4
1.3 栈和队列 6
1.3.1 栈的定义与操作 6
1.3.2 队列的定义与操作 6
1.4 线性链表 7
1.4.1 线性表的链式存储 7
1.4.2 双向链表的结构及其基本运算 8
1.5 树与二叉树 9
1.5.1 树的定义 9
1.5.2 二叉树的定义及其性质 9
1.5.3 二叉树的遍历 11
1.6 查找技术 12
1.6.1 顺序查找 13
1.6.2 二分法查找 13
1.7 排序技术 13
1.8 习题 15
1.8.1 选择题 15
1.8.2 填空题 17
第2章 程序设计结构 18
2.1 程序设计的方法与风格 18
2.2 结构化程序设计 19
2.3 面向对象的程序设计 19
2.3.1 面向对象特点 20
2.3.2 类和实例 20
2.3.3 消息 21
2.4 习题 21
2.4.1 选择题 21
2.4.2 填空题 22
第3章 软件工程基础 23
3.1 软件工程基本概念 23
3.1.1 软件的含义 23
3.1.2 软件工程 24
3.2 结构化分析方法 25
3.2.1 结构化分析方法 25
3.2.2 软件需求规格说明书 26
3.3 结构化设计方法 27
3.3.1 软件设计的基本内容 27
3.3.2 结构化设计 28
3.3.3 概要设计 29
3.3.4 详细设计 30
3.4 软件测试 30
3.4.1 软件测试概述 30
3.4.2 软件测试技术 31
3.5 程序的调试 32
3.5.1 步骤与方法 32
3.5.2 静态调试 33
3.5.3 动态调试 34
3.6 习题 34
3.6.1 选择题 34
3.6.2 填空题 35
第4章 数据库设计基础 36
4.1 数据库的基本概念 36
4.1.1 数据和信息 36
4.1.2 数据处理、数据库与数据库管理系统 36
4.1.3 数据库系统的发展 38
4.1.4 数据库系统的内部结构体系 38
4.2 数据模型 39
4.2.1 数据模型概述 40
4.2.2 E-R模型 40
4.2.3 关系模型 41
4.2.4 数据操作 42
4.2.5 关系中的数据约束 43
4.3 关系代数 43
4.4 数据库设计 44
4.5 习题 45
4.5.1 选择题 45
4.5.2 填空题 46
第5章 程序设计基本概念 47
5.1 程序和程序设计 47
5.1.1 程序 47
5.1.2 程序设计 47
5.1.3 程序设计语言 47
5.2 C语言的语句和关键字 48
5.2.1 C程序的基本结构 48
5.2.2 C语言语句 48
5.2.3 关键字 50
5.3 习题 50
5.3.1 选择题 50
5.3.2 填空题 51
第6章 C语言数据类型、运算符和表达式 52
6.1 C语言数据类型 52
6.2 常量、变量和标识符 53
6.2.1 常量 53
6.2.2 变量 53
6.2.3 标识符 54
6.3 整型数据 54
6.3.1 整型常量的表示 54
6.3.2 整型变量 54
6.3.3 整数在内存中的存储形式 55
6.3.4 常用的输出格式 55
6.4 实型数据 56
6.4.1 实型常量的表示方法 56
6.4.2 实型变量 56
6.4.3 常用的输出格式 56
6.5 算术表达式 56
6.5.1 算术运算符 56
6.5.2 算术表达式 57
6.6 赋值表达式 57
6.6.1 赋值运算符和赋值表达式 58
6.6.2 不同类型数据间的混合运算 58
6.7 自增、自减运算和逗号表达式 59
6.7.1 自增、自减运算 59
6.7.2 逗号表达式 60
6.8 习题 61
6.8.1 选择题 61
6.8.2 填空题 61
第7章 顺序结构程序设计 63
7.1 格式化输出printf()函数 63
7.1.1 基本格式 63
7.1.2 格式说明 63
7.1.3 使用printf函数输出结果 65
7.2 格式化输入scanf()函数 65
7.2.1 基本格式 65
7.2.2 格式说明 66
7.2.3 通过scanf函数输入数据 66
7.3 单个字符的输入和输出getchar()和 putchar()函数 67
7.3.1 单个字符输入函数 67
7.3.2 单个字符输出函数 67
7.4 习题 68
7.4.1 选择题 68
7.4.2 填空题 71
第8章 选择结构程序设计 73
8.1 关系运算符及其表达式 73
8.1.1 关系运算符及其优先次序 73
8.1.2 关系表达式 73
8.2 逻辑运算符及其表达式 74
8.2.1 逻辑运算符及优先次序 74
8.2.2 逻辑表达式 74
8.3 if语句和条件运算 75
8.3.1 if语句 76
8.3.2 if else语句 79
8.3.3 if语句的嵌套 79
8.3.4 条件表达式 83
8.4 switch语句 83
8.5 习题 85
8.5.1 选择题 85
8.5.2 填空题 87
8.5.3 程序设计题 88
第9章 循环结构程序设计 89
9.1 循环语句概述 89
9.2 for语句和其构成的循环结构 89
9.3 while语句和其构成的循环结构 92
9.4 do while语句和其构成的循环结构 93
9.5 循环语句的嵌套 94
9.6 break和continue语句 97
9.7 习题 99
9.7.1 选择题 99
9.7.2 填空题 101
9.7.3 程序设计题 102
第10章 字符型的数据 103
10.1 字符常量 103
10.2 字符变量 104
10.2.1 字符串常量 104
10.2.2 常用输出格式 104
10.3 字符的输入和输出 105
10.3.1 采用scanf()语句 105
10.3.2 采用printf()语句 105
10.4 一维数组的定义和一维数组元素的引用 105
10.4.1 数组的定义 105
10.4.2 一维数组的定义 105
10.4.3 一维数组的引用 106
10.5 一维数组的应用举例 107
10.6 二维数组的定义和二维数组元素的引用 108
10.6.1 二维数组的定义 108
10.6.2 二维数组的引用 109
10.7 二维数组应用举例 110
10.8 字符串 111
10.8.1 字符数组的定义 111
10.8.2 字符数组的初始化 111
10.8.3 字符数组的引用 112
10.8.4 字符串的处理 112
10.9 字符串输入和输出 113
10.9.1 输入字符串gets()函数 113
10.9.2 输出字符串puts()函数 113
10.10 字符串处理函数 114
10.10.1 字符串比较strcmp()函数 114
10.10.2 测试字符串长度函数strlen(字符数组) 115
10.10.3 字符串拷贝strcpy()函数 115
10.10.4 字符串连接strcat()函数 116
10.10.5 将字符串中大写字母转换成小写strlwr()函数 116
10.10.6 将字符串中小写字母转换成大写strupr()函数 116
10.11 习题 117
10.11.1 选择题 117
10.11.2 填空题 119
10.11.3 程序设计题 119
第11章 函数 120
11.1 函数的定义 120
11.2 函数的参数和返回值 121
11.2.1 函数的参数 121
11.2.2 函数的返回值 122
11.2.3 函数原型的声明 123
11.3 函数的嵌套调用 125
11.4 函数的递归调用 126
11.5 内部函数和外部函数 130
11.6 内部变量和外部变量 131
11.6.1 内部变量 131
11.6.2 外部变量 132
11.7 变量的动态存储和静态存储 133
11.8 习题 134
11.8.1 选择题 134
11.8.2 填空题 138
11.8.3 程序设计题 140
第12章 指针 141
12.1 指针的概念 141
12.2 指针变量的定义和类型 142
12.2.1 指针变量的定义 142
12.2.2 指针变量的运算 142
12.2.3 指针变量的引用 143
12.3 指针与一维数组 145
12.3.1 一维数组指针的定义 145
12.3.2 一维数组指针的使用 145
12.4 指针与二维数组 146
12.4.1 二维数组指针的定义 146
12.4.2 二维数组指针的理解 147
12.4.3 通过地址引用二维数组元素 148
12.4.4 通过建立一个指针数组引用二维数组元素 148
12.4.5 通过建立一个行指针引用二维数组元素 148
12.4.6 二维数组指针的使用 148
12.4.7 字符串指针的定义 149
12.4.8 使用字符串指针变量与字符数组的区别 150
12.5 指针与函数 151
12.5.1 指针数组的定义 151
12.5.2 指针数组的使用 151
12.5.3 指针的指针的定义 153
12.5.4 指向指针的指针的使用 155
12.5.5 指针变量作为函数参数 155
12.6 习题 159
12.6.1 选择题 159
12.6.2 填空题 164
12.6.3 程序设计题 165
第13章 编译预处理 166
13.1 编译预处理 166
13.2 动态存储分配 167
13.2.1 动态存储分配 167
13.2.2 条件编译 168
13.3 习题 170
13.3.1 选择题 170
13.3.2 填空题 171
第14章 结构体和共用体 173
14.1 结构体类型定义 173
14.2 结构体变量 174
14.2.1 结构体变量的定义 174
14.2.2 结构体变量的引用与初始化 175
14.2.3 结构体数组的定义与引用 176
14.2.4 指向结构体变量的指针 177
14.2.5 指向结构体数组的指针 178
14.2.6 链表 178
14.2.7 链表的创建 179
14.2.8 链表的插入 181
14.2.9 链表的删除 182
14.3 共用体 183
14.4 习题 185
14.4.1 选择题 185
14.4.2 填空题 187
14.4.3 程序设计题 187
第15章 位运算 188
1 5.1 位运算符 188
15.2 位运算符和位运算 188
15.3 习题 190
第16章 文件 192
16.1 C语言文件的概念 192
16.1.1 文件与文件名 192
16.1.2 文件分类 192
16.1.3 读文件和写文件 193
16.2 文件指针 193
16.3 文件的打开与关闭 194
16.3.1 文件的打开 194
16.3.2 文件的关闭 195
16.4 常用文件的读写操作库函数 195
16.4.1 格式化读函数和写函数 195
16.4.2 读写字符函数fputc函数和fgetc函数 196
16.4.3 读写字符串函数fgets函数和fputs函数 198
16.4.4 读写数据块函数fread和fwrite函数 199
16.5 文件定位函数 199
16.5.1 fseek函数 199
16.5.2 ftell函数 200
16.5.3 rewind函数 200
16.6 习题 200
16.6.1 选择题 200
16.6.2 填空题 202
16.6.3 程序设计题 202
第17章 上机指导 203
17.1 上机应试技巧 203
17.2 上机模拟试题一 209
17.2.1 程序填空题 209
17.2.2 程序改错题 210
17.2.3 程序设计题 210
17.3 上机模拟试题二 211
17.3.1 程序填空题 211
17.3.2 程序改错题 212
17.3.3 程序设计题 213
17.4 上机模拟试题三 214
17.4.1 程序填空题 214
17.4.2 程序改错题 214
17.4.3 程序设计题 215
17.5 上机模拟试题四 216
17.5.1 程序填空题 216
17.5.2 程序改错题 216
17.5.3 程序设计题 217
17.6 上机模拟试题五 218
17.6.1 程序填空题 218
17.6.2 程序改错题 219
17.6.3 程序设计题 219
17.7 上机模拟试题一分析与讲解 221
17.7.1 程序填空题 221
17.7.2 程序改错题 221
17.7.3 程序设计题 221
17.8 上机模拟试题二分析与讲解 222
17.8.1 程序填空题 222
17.8.2 程序改错题 222
17.8.3 程序设计题 222
17.9 上机模拟试题三分析与讲解 223
17.9.1 程序填空题 223
17.9.2 程序改错题 223
17.9.3 程序设计题 223
17.10 上机模拟试题四分析与讲解 224
17.10.1 程序填空题 224
17.10.2 程序改错题 224
17.10.3 程序设计题 224
17.11 上机模拟试题五分析与讲解 225
17.11.1 程序填空题 225
17.11.2 程序改错题 225
17.11.3 程序设计题 225
附录A 习题分析与解答 226
附录B 2010年3月二级笔试试卷 245
附录C 2010年3月份试卷分析 251
附录D 2010年9月笔试试卷及解析 254