第1篇 基础知识 2
第1章 初识C语言——Hello C 2
1.1 C语言概述 2
1.1.1 C语言的发展史 2
1.1.2 C语言的特点 2
1.1.3 C语言的应用 3
1.2 C语言的常用开发环境 3
1.2.1 Visual C++ 6.0开发环境 3
1.2.2 Turbo C 2.0开发环境 7
1.3 开发第一个C语言程序 8
1.3.1 在Visual C++ 6.0中开发C语言程序 8
1.3.2 在Turbo C中开发C语言程序 10
1.4 C语言程序的组成 12
1.4.1 完整的C语言程序 12
1.4.2 #include的秘密 13
1.4.3 程序的出入口——main()函数 13
1.4.4 数据集装箱——常量和变量 14
1.4.5 如何输出程序结果——输出函数 14
1.4.6 注释 14
1.4.7 代码的规则 15
1.5 跟我学上机 15
1.5.1 上机目标 15
1.5.2 上机练习 16
1.6 就业面试解析与技巧 16
1.6.1 面试解析与技巧(一) 16
1.6.2 面试解析与技巧(二) 16
第2章 程序中的变与不变——常量与变量 17
2.1 标识符和关键字 17
2.1.1 标识符 17
2.1.2 关键字 18
2.2 常量 18
2.2.1 什么是常量 18
2.2.2 数值常量 19
2.2.3 字符常量 19
2.2.4 字符串常量 20
2.2.5 符号常量 20
2.3 变量 22
2.3.1 什么是变量 22
2.3.2 变量的声明 22
2.3.3 变量的定义 23
2.3.4 变量的分类 24
2.3.5 变量的赋值和初始化 26
2.4 综合案例——统计学生平均成绩 27
2.5 跟我学上机 28
2.5.1 上机目标 28
2.5.2 上机练习 29
2.6 就业面试解析与技巧 29
2.6.1 面试解析与技巧(一) 29
2.6.2 面试解析与技巧(二) 29
第3章 数据的种类——数据类型 31
3.1 数制 31
3.1.1 二进制 31
3.1.2 八进制 32
3.1.3 十六进制 32
3.1.4 数制间的转换 34
3.2 整型数据 34
3.2.1 整型常量的表示方法 34
3.2.2 整型变量 35
3.2.3 整型变量的分类 35
3.2.4 整型变量的溢出 37
3.3 浮点型数据 38
3.3.1 浮点型常量的表示方法 38
3.3.2 浮点型变量 39
3.3.3 浮点型变量的类型 39
3.4 字符型数据 40
3.4.1 字符常量 41
3.4.2 字符变量 43
3.4.3 字符串常量 44
3.5 数据类型的转换 45
3.5.1 隐式转换 45
3.5.2 显式转换 47
3.6 综合案例——类型转换 47
3.7 跟我学上机 48
3.7.1 上机目标 48
3.7.2 上机练习 48
3.8 就业面试解析与技巧 49
3.8.1 面试解析与技巧(一) 49
3.8.2 面试解析与技巧(二) 49
第4章 用户与计算机的交互——输入和输出 50
4.1 标准输入/输出 50
4.2 格式化输入/输出 50
4.2.1 格式化输出函数——printf() 50
4.2.2 格式控制字符 51
4.2.3 格式化输入函数——scanf() 53
4.3 字符输入/输出 57
4.3.1 字符输出函数——putchar() 57
4.3.2 字符输入函数——getchar() 58
4.4 字符串输入/输出 59
4.4.1 字符串输出函数——puts() 59
4.4.2 字符串输入函数——gets() 59
4.5 跟我学上机 60
4.5.1 上机目标 60
4.5.2 上机练习 60
4.6 就业面试解析与技巧 61
4.6.1 面试解析与技巧(一) 61
4.6.2 面试解析与技巧(二) 61
第5章 运算符和表达式 62
5.1 运算符 62
5.1.1 运算符概述 62
5.1.2 运算符的分类 62
5.1.3 运算符优先级和结合性 63
5.2 表达式 63
5.2.1 表达式的概念 63
5.2.2 表达式的分类 64
5.3 表达式与运算符 64
5.3.1 算术表达式与算术运算符 64
5.3.2 自增、自减表达式与自增、自减运算符 66
5.3.3 赋值表达式与赋值运算符 67
5.3.4 关系表达式与关系运算符 69
5.3.5 逻辑表达式与逻辑运算符 71
5.3.6 条件表达式与条件运算符 74
5.3.7 逗号表达式与逗号运算符 75
5.3.8 位运算符 76
5.4 语句 80
5.4.1 语句的概念 80
5.4.2 语句的使用 80
5.4.3 语句与表达式 81
5.4.4 C语言基本语句 81
5.5 综合案例——计算函数的结果 83
5.5.1 跟我学上机 83
5.5.2 上机目标 83
5.5.3 上机练习 83
5.6 就业面试解析与技巧 84
5.6.1 面试解析与技巧(一) 84
5.6.2 面试解析与技巧(二) 84
第6章 C程序的流程——程序流程控制结构 85
6.1 程序流程概述 85
6.2 if条件选择语句 85
6.2.1 if语句的一般形式 85
6.2.2 if语句的嵌套 90
6.2.3 使用if语句注意事项 93
6.3 switch条件选择语句 93
6.4 循环结构 95
6.4.1 while语句 96
6.4.2 do-while语句 97
6.4.3 for语句 99
6.4.4 循环的嵌套 103
6.5 break、continue、goto语句 105
6.5.1 break语句 105
6.5.2 continue语句 107
6.5.3 goto语句 108
6.6 综合案例——简单计算器 110
6.7 跟我学上机 112
6.7.1 上机目标 112
6.7.2 上机练习 112
6.8 就业面试解析与技巧 113
6.8.1 面试解析与技巧(一) 113
6.8.2 面试解析与技巧(二) 113
第7章 数组与字符串 114
7.1 数组概述 114
7.2 一维数组 115
7.2.1 一维数组的定义 115
7.2.2 一维数组的引用 116
7.2.3 一维数组的初始化 117
7.2.4 程序实例 117
7.3 二维数组 120
7.3.1 二维数组的定义 120
7.3.2 二维数组的引用 121
7.3.3 二维数组的初始化 122
7.3.4 多维数组 124
7.3.5 程序实例 124
7.4 字符数组与字符串 126
7.4.1 字符数组的说明与初始化 126
7.4.2 字符串和字符数组 128
7.4.3 字符串的处理函数 128
7.4.4 字符数组的实例解析 133
7.5 综合案例——杨辉三角 135
7.6 跟我学上机 136
7.6.1 上机目标 136
7.6.2 上机练习 136
7.7 就业面试解析与技巧 137
7.7.1 面试解析与技巧(一) 137
7.7.2 面试解析与技巧(二) 137
第8章 算法与流程图 138
8.1 算法的概念 138
8.2 算法的特性 138
8.3 算法的表示 139
8.3.1 自然语言表示法 139
8.3.2 伪代码表示法 139
8.3.3 流程图表示法 140
8.3.4 N-S流程图表示法 142
8.3.5 计算机语言表示法 143
8.4 流程图基础 144
8.4.1 流程图中的元素 144
8.4.2 流程图的绘制 145
8.5 结构化程序设计方法 146
8.6 综合案例——求一元二次方程的根 146
8.7 跟我学上机 148
8.7.1 上机目标 149
8.7.2 上机练习 149
8.8 就业面试解析与技巧 149
8.8.1 面试解析与技巧(一) 149
8.8.2 面试解析与技巧(二) 150
第2篇 核心技术 152
第9章 函数与函数中的变量 152
9.1 函数概述 152
9.1.1 函数的概念 152
9.1.2 函数的分类 153
9.1.3 函数定义的一般形式 153
9.2 函数的调用 155
9.2.1 函数的类型 155
9.2.2 函数的返回值 157
9.2.3 函数调用的方式 159
9.2.4 对被调用函数的声明和函数原型 160
9.3 函数的嵌套调用 162
9.4 函数的递归调用 163
9.5 函数的参数 169
9.5.1 函数参数的传递 169
9.5.2 数组元素作为函数参数 170
9.5.3 数组名作为函数参数 171
9.6 内部函数和外部函数 175
9.6.1 内部函数 175
9.6.2 外部函数 176
9.7 局部变量和全局变量 178
9.7.1 局部变量 178
9.7.2 全局变量 179
9.8 变量的存储类型 182
9.8.1 auto(自动)变量 182
9.8.2 static(静态)变量 183
9.8.3 register(寄存器)变量 185
9.8.4 extern(外部)变量 186
9.9 综合案例——求方程的根 188
9.10 跟我学上机 189
9.10.1 上机目标 189
9.10.2 上机练习 189
9.11 就业面试解析与技巧 190
9.11.1 面试解析与技巧(一) 190
9.11.2 面试解析与技巧(二) 190
第10章 指针 191
10.1 指针概述 191
10.1.1 指针的概念 191
10.1.2 指针的类型 192
10.1.3 指针的值 192
10.1.4 运算符&和* 192
10.2 指针变量 194
10.2.1 指针变量的使用 195
10.2.2 指针变量作为函数参数 197
10.3 数组指针和指向数组的指针变量 202
10.3.1 数组指针 202
10.3.2 通过指针引用数组元素 203
10.3.3 用数组名作为函数参数 206
10.4 综合案例——创建简单链表 209
10.5 跟我学上机 212
10.5.1 上机目标 212
10.5.2 上机练习 213
10.6 就业面试解析与技巧 213
10.6.1 面试解析与技巧(一) 214
10.6.2 面试解析与技巧(二) 214
第11章 指针进阶 215
11.1 指针与数组 215
11.1.1 指针与数组的关系 215
11.1.2 指向多维数组的指针 216
11.1.3 二维数组指针 218
11.2 指针的运算 219
11.3 字符串指针 223
11.3.1 字符串的表示与引用 223
11.3.2 字符串指针作为函数参数 225
11.3.3 字符数组和字符串指针处理字符串时的区别 226
11.4 指针数组和指向指针的指针 228
11.4.1 指针数组 229
11.4.2 指针数组的应用 229
11.4.3 指向指针的指针 232
11.4.4 指向指针的指针应用 234
11.4.5 带形式参数的main()函数 235
11.5 指针与函数 236
11.5.1 定义和使用指向函数的指针变量 236
11.5.2 用指向函数的指针作为函数参数 238
11.5.3 指针函数 239
11.6 void指针类型 241
11.7 综合案例——报数游戏 242
11.8 跟我学上机 243
11.8.1 上机目标 243
11.8.2 上机练习 244
11.9 就业面试解析与技巧 244
11.9.1 面试解析与技巧(一) 244
11.9.2 面试解析与技巧(二) 244
第12章 文件 246
12.1 文件概述 246
12.1.1 文件类型 246
12.1.2 C如何操作文件——文件指针 246
12.1.3 文件缓冲区 247
12.2 文件的打开与关闭 247
12.2.1 文件的打开——fopen()函数 247
12.2.2 文件的关闭——fclose()函数 248
12.3 文件的顺序读/写 249
12.3.1 字符读/写函数fgetc()和fputc() 249
12.3.2 字符串读/写函数fgets()和fputs() 251
12.3.3 数据块读/写函数fread()和fwtrite() 252
12.3.4 格式化读/写函数fscanf()和fprintf() 255
12.4 文件定位与文件的随机读/写 257
12.4.1 文件头定位函数——rewind() 257
12.4.2 当前读/写位置函数——ftell() 257
12.4.3 随机定位函数——fseek() 257
12.5 文件检测函数 258
12.5.1 文件结束检测函数——feof() 258
12.5.2 读/写文件出错检测函数——ferror() 258
12.5.3 文件出错标志和文件结束标志置0函数——clearerr() 258
12.6 综合案例——编制课程表 258
12.7 跟我学上机 260
12.7.1 上机目标 260
12.7.2 上机练习 261
12.8 就业面试解析与技巧 261
12.8.1 面试解析与技巧(一) 261
12.8.2 面试解析与技巧(二) 261
第13章 编译与预处理指令 263
13.1 什么是预处理指令 263
13.2 宏定义 263
13.2.1 变量式宏定义 264
13.2.2 宏定义嵌套 268
13.2.3 宏定义范围 269
13.2.4 带参数的宏定义 270
13.2.5 多行宏定义 272
13.3 文件包含 273
13.3.1 什么是文件包含 273
13.3.2 文件包含的使用 273
13.4 条件编译 274
13.4.1 条件编译形式 275
13.4.2 调试中使用条件编译 277
13.4.3 文件嵌套包含和条件编译 278
13.5 assert()宏 278
13.6 综合案例——编译与预处理指令 279
13.7 跟我学上机 279
13.7.1 上机目标 279
13.7.2 上机练习 279
13.8 就业面试解析与技巧 279
13.8.1 面试解析与技巧(一) 279
13.8.2 面试解析与技巧(二) 279
第3篇 高级应用 282
第14章 库函数 282
14.1 标准C库函数 282
14.2 数学函数 283
14.2.1 绝对值函数 283
14.2.2 平方根函数和幂函数 284
14.2.3 指数函数和对数函数 284
14.2.4 三角函数 285
14.2.5 取整函数和取余函数 285
14.3 字符串处理函数 285
14.3.1 字符串长度函数 286
14.3.2 字符串连接函数 286
14.3.3 字符串复制函数 287
14.3.4 字符串比较函数 287
14.3.5 字符串查找函数 288
14.3.6 字符串填充函数 289
14.4 字符处理函数 290
14.4.1 字符类型判断函数 290
14.4.2 字符大小写转换函数 291
14.5 转换和动态存储管理函数 291
14.5.1 转换函数 292
14.5.2 动态存储管理函数 292
14.6 随机函数 294
14.6.1 初识随机函数 294
14.6.2 使用随机函数 294
14.7 日期和时间处理函数 295
14.8 诊断函数 297
14.9 命令行参数 298
14.10 其他函数 299
14.10.1 exit()函数 299
14.10.2 qsort()函数 299
14.11 综合案例——猜数字游戏 300
14.12 跟我学上机 302
14.12.1 上机目标 302
14.12.2 上机练习 302
14.13 就业面试解析与技巧 302
14.13.1 面试解析与技巧(一) 303
14.13.2 面试解析与技巧(二) 303
第15章 位运算 304
15.1 位的概念 304
15.1.1 位运算符 304
15.1.2 二进制数 304
15.1.3 按位与运算符 305
15.1.4 按位或运算符 306
15.1.5 按位异或运算符 306
15.1.6 按位取反运算符 307
15.1.7 左移运算符 307
15.1.8 右移运算符 308
15.1.9 位复合赋值运算符 308
15.2 位段 308
15.2.1 位段的定义 308
15.2.2 位段中数据的引用 309
15.3 综合案例——数制转换 310
15.4 跟我学上机 311
15.4.1 上机目标 311
15.4.2 上机练习 311
15.5 就业面试解析与技巧 312
15.5.1 面试解析与技巧(一) 312
15.5.2 面试解析与技巧(二) 312
第16章 结构体、共用体和枚举 314
16.1 结构体概述 314
16.2 结构体类型与结构体变量 314
16.2.1 结构体类型的定义 314
16.2.2 结构体变量的定义 315
16.2.3 结构体变量的初始化 317
16.2.4 结构体变量的引用 317
16.3 结构体数组 319
16.3.1 结构体数组的定义 319
16.3.2 结构体数组的初始化 321
16.3.3 结构体数组的引用 322
16.3.4 结构体数组的应用实例 323
16.4 结构体指针 324
16.4.1 指向结构体变量的指针 324
16.4.2 指向结构体数组的指针 324
16.4.3 结构体变量作为函数参数 326
16.4.4 结构体变量的指针作为函数参数 327
16.4.5 结构体作为函数的返回值 328
16.5 共用体 329
16.5.1 共用体的定义 329
16.5.2 共用体变量的定义、初始化和引用 330
16.6 枚举 333
16.6.1 枚举类型 333
16.6.2 枚举变量 333
16.7 综合案例——计算学生成绩 336
16.8 跟我学上机 337
16.8.1 上机目标 337
16.8.2 上机练习 337
16.9 就业面试解析与技巧 338
16.9.1 面试解析与技巧(一) 338
16.9.2 面试解析与技巧(二) 338
第17章 动态数据结构 339
17.1 动态存储分配概述 339
17.1.1 分配内存空间函数malloc() 339
17.1.2 分配内存空间函数calloc() 340
17.1.3 释放内存空间函数free() 340
17.2 链表概述 341
17.2.1 链表的建立 341
17.2.2 链表的遍历 342
17.3 创建节点 343
17.3.1 链表节点的插入 343
17.3.2 链表节点的删除 345
17.4 跟我学上机 346
17.4.1 上机目标 346
17.4.2 上机练习 346
17.5 就业面试解析与技巧 346
17.5.1 面试解析与技巧(一) 346
17.5.2 面试解析与技巧(二) 346
第18章 数据结构进阶 348
18.1 数据结构概述 348
18.2 线性表 349
18.3 栈 349
18.3.1 栈的基本运算 349
18.3.2 顺序栈的类型定义 350
18.3.3 链式栈的类型定义 350
18.4 队列 352
18.4.1 队列的基本运算 352
18.4.2 顺序队列类型定义 353
18.4.3 链式队列类型定义 353
18.5 二叉树 357
18.6 查找 358
18.6.1 顺序查找 358
18.6.2 折半查找 360
18.7 综合实例 361
18.8 跟我学上机 365
18.8.1 上机目标 365
18.8.2 上机练习 366
18.9 就业面试解析与技巧 366
18.9.1 面试解析与技巧(一) 366
18.9.2 面试解析与技巧(二) 366
第19章 排序 368
19.1 排序的概述 368
19.2 希尔排序 369
19.3 插入排序 371
19.4 冒泡排序 372
19.5 快速排序 374
19.6 选择排序 377
19.7 堆排序 381
19.8 归并排序 384
19.9 链表基数排序 386
19.10 跟我学上机 391
19.10.1 上机目标 392
19.10.2 上机练习 392
19.11 就业面试解析与技巧 392
19.11.1 面试解析与技巧(一) 392
19.11.2 面试解析与技巧(二) 392
第4篇 项目实战 394
第20章 项目实战——项目开发与规划 394
20.1 项目开发流程 394
20.1.1 策划阶段 395
20.1.2 需求分析阶段 395
20.1.3 开发阶段 395
20.1.4 编码阶段 396
20.1.5 系统测试阶段 396
20.1.6 系统验收阶段 396
20.1.7 系统维护阶段 396
20.2 项目开发团队 397
20.2.1 项目团队组成 397
20.2.2 项目团队要求 398
20.3 项目的实际运作 398
20.4 项目规划常见问题及解决 399
20.4.1 如何满足客户需求 399
20.4.2 如何控制项目进度 399
20.4.3 如何控制项目预算 399
第21章 图书管理系统 400
21.1 开发背景 400
21.2 需求及功能分析 400
21.2.1 总体功能分析 400
21.2.2 各模块功能分析 401
21.3 系统功能的实现 402
21.3.1 建立相关类及属性 402
21.3.2 系统选择菜单的实现 403
21.3.3 图书上架功能的实现 404
21.3.4 图书下架功能的实现 405
21.3.5 查找图书功能的实现 407
21.3.6 借书功能的实现 408
21.3.7 还书功能的实现 409
21.3.8 主函数功能的实现 410
21.4 系统运行与测试 411
第22章 通讯录管理系统 413
22.1 开发背景 413
22.2 需求及功能分析 413
22.2.1 总体功能分析 414
22.2.2 各模块功能分析 414
22.3 系统功能的实现 415
22.3.1 建立联系人结构 415
22.3.2 系统选择菜单的实现 415
22.3.3 添加联系人功能的实现 416
22.3.4 插入联系人功能的实现 416
22.3.5 删除联系人功能的实现 417
22.3.6 浏览联系人功能的实现 418
22.3.7 查找联系人功能的实现 418
22.3.8 主函数功能的实现 418
22.4 系统运行与测试 419
第23章 信息管理系统开发1——网络通信系统 421
23.1 网络通信系统 421
23.1.1 系统分析 421
23.1.2 功能分析及实现 421
23.1.3 开发常见问题及解决 424
23.2 系统运行与测试 424
第24章 信息管理系统开发2——学生成绩管理系统 425
24.1 学生成绩管理系统 425
24.1.1 系统分析 425
24.1.2 功能分析及实现 426
24.1.3 开发常见问题及解决 436
24.1.4 系统运行与测试 436
第25章 信息管理系统开发3——酒店管理系统 437
25.1 酒店管理系统 437
25.1.1 系统分析 437
25.1.2 功能分析及实现 437
25.1.3 开发常见问题及解决 445
25.2 系统运行与测试 445
第5篇 行业应用 448
第26章 C语言在游戏开发中的应用 448
26.1 系统功能描述 448
26.2 系统功能分析及实现 448
26.2.1 功能分析 448
26.2.2 功能实现 449
26.2.3 程序运行 460
第27章 C语言在银行业务开发中的应用 462
27.1 系统功能描述 462
27.2 系统功能分析及实现 462
27.2.1 功能分析 462
27.2.2 功能实现 463
27.2.3 程序运行 467
第28章 C语言在ATM存储系统开发中的应用 469
28.1 系统功能描述 469
28.2 系统功能分析及实现 469
28.2.1 功能分析 469
28.2.2 功能实现 470
28.2.3 程序运行 478
第29章 C语言在航空管理开发中的应用 481
29.1 系统功能描述 481
29.2 系统功能分析及实现 481
29.2.1 功能分析 482
29.2.2 功能实现 483
29.2.3 程序运行 489