第一篇 入门篇 1
第1章 C语言概述 1
1.1 C语言基础知识 1
1.1.1 计算机语言和面向过程编程 1
1.1.2 C语言基本结构 2
1.1.3 代码注释 3
1.2 TC编译器介绍 3
1.2.1 TC编译环境介绍 4
1.2.2 TC编译器的菜单项 4
1.2.3 使用TC编译器编写代码 7
1.2.4 使用TC编译器打开源文件 10
1.2.5 使用TC编译器编译源代码 10
1.2.6 使用TC编译器执行源代码 12
1.2.7 TC编译器学习技巧 13
1.3 VC编译器介绍 13
1.3.1 VC编译环境介绍 13
1.3.2 新建C语言源文件 14
1.3.3 编写C程序代码 15
1.3.4 使用VC编译器编译源代码 15
1.3.5 使用VC编译器执行源代码 17
1.4 经典的“Hello World”程序 17
1.5 小结 18
第2章 变量和常量 19
2.1 变量定义 19
2.1.1 变量类型简介 19
2.1.2 变量命名 21
2.1.3 定义局部变量 21
2.1.4 定义全局变量 22
2.2 在程序中使用变量 22
2.2.1 使用变量存储数据 22
2.2.2 输出变量中的数据 23
2.3 定义常量 24
2.3.1 什么是常量 24
2.3.2 关键字const的使用方法 24
2.3.3 定义全局常量和局部常量 24
2.4 小结 25
2.5 习题 25
第3章 C语言运算符 26
3.1 C语言常用运算符 26
3.1.1 赋值运算符 26
3.1.2 算术运算符 27
3.1.3 逻辑运算符 29
3.1.4 关系运算符 31
3.1.5 三目运算符 32
3.1.6 位运算符 33
3.2 单目运算符 34
3.2.1 前置单目运算符 34
3.2.2 后置单目运算符 35
3.3 运算符实例程序 37
3.4 小结 38
3.5 习题 38
第4章 标准输入/输出 39
4.1 C语言标准输入 39
4.1.1 scanf()概述 39
4.1.2 包含标准输入头文件 40
4.1.3 使用scanf()获取数据 40
4.2 C语言标准输出 41
4.2.1 printf()概述 41
4.2.2 使用printf()输出数据 41
4.2.3 实例程序 42
4.3 使用getchar()和putchar() 43
4.3.1 使用getchar() 43
4.3.2 使用putchar() 44
4.4 标准输入/输出实例程序 45
4.5 小结 46
4.6 习题 46
第5章 C语言控制结构 47
5.1 条件编译结构 47
5.1.1 if结构 47
5.1.2 if...else结构 49
5.2 循环结构 52
5.2.1 while循环结构 52
5.2.2 do...while循环结构 54
5.2.3 for循环结构 56
5.3 终止循环 58
5.3.1 使用break终止循环 58
5.3.2 使用continue终止循环 59
5.4 选择结构 60
5.4.1 switch结构简介 60
5.4.2 switch使用要点 63
5.5 嵌套结构 63
5.5.1 嵌套使用if语句 63
5.5.2 嵌套使用while语句 66
5.5.3 嵌套使用if和while语句 67
5.6 输出控制结构 68
5.6.1 格式化输出控制符的使用 68
5.6.2 格式化输出数据实例 71
5.7 小结 72
5.8 习题 72
第6章 函数 73
6.1 C语言中的函数概述 73
6.1.1 函数的定义格式 73
6.1.2 函数参数和返回值 74
6.1.3 函数中的变量作用域 76
6.2 函数调用 78
6.2.1 函数的调用方式 78
6.2.2 函数的嵌套调用 78
6.2.3 函数的递归调用 80
6.3 函数实例程序 81
6.4 小结 82
6.5 习题 83
第7章 宏指令#include和#define 84
7.1 #include介绍 84
7.1.1 使用#include包含相关文件 84
7.1.2 使用#include的具体位置 85
7.2 #define介绍 87
7.2.1 对常量进行重定义 87
7.2.2 对标识符进行重定义 88
7.2.3 对算术表达式进行重定义 90
7.3 宏指令#include和#define实例程序 91
7.4 小结 92
7.5 习题 92
第8章 数组 93
8.1 C程序数组基础知识 93
8.1.1 什么是数组 93
8.1.2 定义一维数组 94
8.1.3 定义二维数组 95
8.2 数组初始化 97
8.2.1 一维数组初始化 98
8.2.2 二维数组初始化 99
8.3 输出数组中的元素 101
8.3.1 数组下标介绍 101
8.3.2 输出数组中的指定元素 101
8.4 数组实例程序 104
8.5 小结 106
8.6 习题 106
第9章 字符串 107
9.1 字符串概述 107
9.2 存储字符串 108
9.2.1 字符串结束符 108
9.2.2 使用数组存储字符串 109
9.3 字符串数组 109
9.3.1 定义字符串数组 109
9.3.2 初始化字符串数组 110
9.3.3 输入/输出字符串数组 112
9.4 字符串操作 115
9.4.1 复制字符串 115
9.4.2 连接字符串 117
9.4.3 比较字符串 117
9.5 字符串实例程序 119
9.6 小结 121
9.7 习题 121
第二篇 编程提高篇 123
第10章 指针 123
10.1 指针的基本概念 123
10.1.1 指针与地址 123
10.1.2 取地址运算符“&” 124
10.2 定义指针变量 125
10.2.1 指针定义符“*” 125
10.2.2 定义空指针 125
10.3 初始化指针变量 128
10.4 使用指针变量输出数据与地址 128
10.4.1 输出数据 129
10.4.2 输出数据的内存地址 131
10.5 指针实例程序 133
10.6 小结 135
10.7 习题 135
第11章 结构体和共用体 136
11.1 结构体的定义 136
11.1.1 定义结构体 136
11.1.2 添加结构体成员变量 136
11.2 定义结构体变量 137
11.3 使用结构体 139
11.3.1 初始化结构体成员变量 139
11.3.2 访问结构体成员变量 141
11.3.3 修改结构体成员变量 141
11.4 共用体的定义 142
11.4.1 定义共用体 142
11.4.2 添加共用体成员变量 143
11.5 使用共用体 144
11.5.1 定义共用体变量 144
11.5.2 操作共用体变量 144
11.6 结构体和共用体实例程序 145
11.7 小结 148
11.8 习题 148
第12章 数组指针 149
12.1 数组地址与指针的联系 149
12.1.1 数组首地址 149
12.1.2 使用指针指向数组首地址 150
12.2 使用指针遍历数组元素 152
12.2.1 通过指针初始化数组元素 152
12.2.2 通过指针运算输出数组元素 155
12.2.3 通过指针变量输出数组元素的地址 157
12.3 数组指针实例程序 158
12.4 小结 162
12.5 习题 162
第13章 结构体指针 163
13.1 结构体指针介绍 163
13.1.1 结构体指针定义 163
13.1.2 初始化结构体指针 165
13.1.3 指针访问运算符“->” 166
13.2 使用指针操作结构体成员 167
13.3 结构体指针实例程序 168
13.4 链表 170
13.4.1 链表介绍 170
13.4.2 链表结点定义 172
13.4.3 链表的创建 172
13.4.4 链表的遍历 173
13.4.5 链表的插入操作 174
13.4.6 链表的删除操作 175
13.5 小结 176
13.6 习题 176
第14章 函数指针 177
14.1 使用指针作为函数参数 177
14.1.1 使用数组指针作为函数实参 177
14.1.2 使用结构体指针作为函数实参 178
14.1.3 使用指针变量作为函数形参 179
14.2 函数返回值为指针类型 181
14.3 函数指针变量 183
14.4 函数指针实例程序 185
14.5 小结 189
14.6 习题 189
第15章 动态内存分配 190
15.1 概述 190
15.2 内存分配函数介绍 190
15.2.1 malloc函数 191
15.2.2 calloc函数 192
15.2.3 realloc函数 193
15.3 释放内存 194
15.4 动态内存分配实例程序 195
15.5 小结 198
15.6 习题 198
第16章 条件编译机制 199
16.1 条件编译格式概述 199
16.1.1 #ifdef-#else-#endif格式 199
16.1.2 #ifndef-#else-#endif格式 200
16.1.3 #if-#else-#endif格式 200
16.2 条件编译实例程序 201
16.3 小结 205
16.4 习题 205
第17章 文件操作 206
17.1 基本概念 206
17.1.1 文件 206
17.1.2 文件指针 206
17.1.3 文件存储方式——文本方式和二进制方式 207
17.2 文件操作 207
17.2.1 打开文件 208
17.2.2 读取文件 209
17.2.3 写入文件 210
17.2.4 判断文件数据是否结束 210
17.2.5 实现字符数据的读写 211
17.2.6 实现字符串数据的读写 212
17.2.7 文件操作实例程序 213
17.3 fread()和fwrite()实现文件读写 215
17.3.1 fread()读取文件 216
17.3.2 fwrite()写入文件 216
17.4 文件数据格式化操作 218
17.4.1 格式化读取文件(fscanf()函数) 219
17.4.2 格式化写入文件(fprintf()函数) 219
17.5 文件定位 220
17.5.1 定位文件开始(rewind()函数) 220
17.5.2 移动文件指针(fseek()函数) 221
17.5.3 获取文件指针当前位置(ftell()函数) 221
17.6 小结 222
17.7 习题 222
第18章 数据库编程 223
18.1 数据库基础知识 223
18.1.1 数据库简介 223
18.1.2 数据库访问技术 224
18.2 创建Access数据库 224
18.2.1 菜单栏和工具栏 225
18.2.2 新建数据库 225
18.2.3 新建数据表 227
18.2.4 保存数据表 228
18.3 创建SQL Server数据库 228
18.3.1 用SQL Server管理控制台创建数据库和表 228
18.3.2 ODBC数据源配置 231
18.4 使用ODBC API数据库编程 232
18.4.1 ODBC API编程模型 233
18.4.2 ODBC API编程实现步骤 234
18.5 使用ADO数据库编程 238
18.5.1 导入ADO的动态链接库 238
18.5.2 初始化ADO控件环境 239
18.5.3 ADO库接口 239
18.6 数据库开发实例 240
18.7 小结 244
18.8 习题 244
第三篇 数据结构与算法篇 245
第19章 线性数据结构 245
19.1 数据结构与算法概述 245
19.1.1 数据结构概述 245
19.1.2 算法的概述 247
19.1.3 数据结构与算法 249
19.2 线性表 250
19.2.1 线性表的定义 250
19.2.2 线性表的基本运算 251
19.2.3 线性表的存储结构 252
19.3 栈 257
19.3.1 栈的定义 257
19.3.2 栈的基本运算 258
19.3.3 栈的存储结构 258
19.4 队列 262
19.4.1 队列的定义 262
19.4.2 队列的基本运算 263
19.4.3 队列的存储结构 263
19.5 小结 268
19.6 习题 268
第20章 非线性数据结构 269
20.1 二叉树 269
20.1.1 二叉树的定义 269
20.1.2 二叉树的性质 270
20.1.3 二叉树的存储结构 270
20.1.4 二叉树的遍历 274
20.2 图 279
20.2.1 图的定义 279
20.2.2 图的存储结构 281
20.2.3 图的遍历 284
20.3 小结 287
20.4 习题 287
第21章 数据操作 288
21.1 查找 288
21.1.1 查找的定义 288
21.1.2 顺序查找 288
21.1.3 折半查找 289
21.2 排序 292
21.2.1 排序的定义 292
21.2.2 简单排序 292
21.2.3 快速排序 299
21.3 小结 301
21.4 习题 301
第四篇 实例项目篇 303
第22章 利用C语言实现教学管理系统 303
22.1 项目概述 303
22.1.1 概述 303
22.1.2 实例中的相关文件 303
22.1.3 实例程序的相关功能 304
22.2 自定义数据文件 308
22.2.1 各数据文件准备 309
22.2.2 自定义文件数据读取函数 310
22.2.3 自定义文件数据写入函数 312
22.3 数据库设计及连接 314
22.3.1 定义各数据表 314
22.3.2 自定义数据库连接函数 316
22.4 数据库操作 317
22.4.1 登录模块 317
22.4.2 数据读取 320
22.4.3 数据添加 322
22.4.4 数据删除 323
22.5 系统部署和运行 324
22.5.1 数据文件的准备 324
22.5.2 数据库、数据表的创建 324
22.5.3 用户参数定制 324
22.6 小结 324
附录1 Turbo C中常见错误提示的中英文对照 325
附录2 Visual C++中常见的错误提示 329
附录3 ASCII编码 335
附录4 Turbo C中的各种数据类型 339
附录5 函数间传递参数时类型的自动转换 340
附录6 C标准库介绍 341