第1章 C语言开发环境1
1.1 本章知识体系4
1.2 程序员的成长之路4
1.3 C语言的重要性5
1.4 如何学好C语言5
1.5 C语言常用开发工具简介6
1.5.1 Turbo c7
1.5.2 Visual C++ 6.07
1.5.3 C++ Builder(BCB)7
1.5.4 Cygwin7
1.5.5 Dev-C++7
1.5.6 Source Insight8
1.6 了解Visual C++集成开发环境8
1.6.1 开发环境布局8
1.6.2 菜单8
1.6.3 工具栏15
1.6.4 工作区窗口16
1.6.5 代码编辑窗口16
1.6.6 输出窗口16
1.7 如何在Turbo C 2.0下运行C源程序17
1.8 了解GCC开发编译器19
1.9 Dev-C++19
1.9.1 Dev-C++概述19
1.9.2 Dev-C++的使用19
1.10 Eclipse for C/C++21
1.10.1 Eclipse概述21
1.10.2 Eclipse的使用22
1.11 实战24
1.11.1 猴子吃桃24
1.11.2 阳阳买苹果25
1.12 疑难解惑26
1.12.1 为什么说C语言可移植性好26
1.12.2 C语言的应用领域有哪些26
1.12.3 如何提高C语言的编程效率27
1.13 小结27
第2章 C语言开发基础29
2.1 本章知识体系30
2.2 编码规范要记牢30
2.2.1 注释的合理使用30
2.2.2 程序中的{}要对齐31
2.2.3 合理使用空格使代码更规范32
2.2.4 换行使代码更清晰32
2.3 语言要素33
2.3.1 关键字33
2.3.2 标识符33
2.4 常量34
2.4.1 整型常量34
2.4.2 实型常量36
2.4.3 字符型常量36
2.4.4 字符串常量37
2.5 变量38
2.5.1 什么是变量38
2.5.2 变量的声明39
2.6 数据类型39
2.6.1 什么是数据类型39
2.6.2 整型40
2.6.3 实型42
2.6.4 字符型42
2.6.5 枚举类型44
基础知识篇
第1章 C语言开发环境1
1.1 本章知识体系4
1.2 程序员的成长之路4
1.3 C语言的重要性5
1.4 如何学好C语言5
1.5 C语言常用开发工具简介6
1.5.1 Turbo c7
1.5.2 Visual C++ 6.07
1.5.3 C++ Builder(BCB)7
1.5.4 Cygwin7
1.5.5 Dev-C++7
1.5.6 Source Insight8
1.6 了解Visual C++集成开发环境8
1.6.1 开发环境布局8
1.6.2 菜单8
1.6.3 工具栏15
1.6.4 工作区窗口16
1.6.5 代码编辑窗口16
1.6.6 输出窗口16
1.7 如何在Turbo C 2.0下运行C源程序17
1.8 了解GCC开发编译器19
1.9 Dev-C++19
1.9.1 Dev-C++概述19
1.9.2 Dev-C++的使用19
1.10 Eclipse for C/C++21
1.10.1 Eclipse概述21
1.10.2 Eclipse的使用22
1.11 实战24
1.11.1 猴子吃桃24
1.11.2 阳阳买苹果25
1.12 疑难解惑26
1.12.1 为什么说C语言可移植性好26
1.12.2 C语言的应用领域有哪些26
1.12.3 如何提高C语言的编程效率27
1.13 小结27
第2章 C语言开发基础29
2.1 本章知识体系30
2.2 编码规范要记牢30
2.2.1 注释的合理使用30
2.2.2 程序中的{}要对齐31
2.2.3 合理使用空格使代码更规范32
2.2.4 换行使代码更清晰32
2.3 语言要素33
2.3.1 关键字33
2.3.2 标识符33
2.4 常量34
2.4.1 整型常量34
2.4.2 实型常量36
2.4.3 字符型常量36
2.4.4 字符串常量37
2.5 变量38
2.5.1 什么是变量38
2.5.2 变量的声明39
2.6 数据类型39
2.6.1 什么是数据类型39
2.6.2 整型40
2.6.3 实型42
2.6.4 字符型42
2.6.5 枚举类型44
2.7 使用typedef定义类型45
2.8 变量的存储类型47
2.8.1 了解变量的存储类型47
2.8.2 使用auto关键字声明自动变量48
2.8.3 使用static关键字声明静态变量48
2.8.4 使用register关键字声明寄存器变量51
2.8.5 使用extern关键字声明外部变量52
2.8.6 使用static关键字声明静态外部变量55
2.9 混合运算55
2.10 实战57
2.10.1 十进制转换为二进制57
2.10.2 求100~200之间的素数58
2.11 疑难解惑60
2.11.1 声明变量和定义变量60
2.11.2 限定词const60
2.11.3 字符串常量为什么用“\0”作为
结束符61
2.12 小结61
第3章 运算符与表达式63
3.1 本章知识体系64
3.2 运算符与表达式64
3.2.1 赋值运算符与表达式64
3.2.2 加减乘除新认识67
3.2.3 关系源自比较68
3.2.4 逻辑出真假69
3.2.5 逗号运算符与表达式71
3.2.6 运算符的优先级72
3.3 自增、自减操作符73
3.3.1 认识自增、自减操作符73
3.3.2 自增、自减操作符的副作用74
3.4 位运算74
3.4.1 “或”运算符74
3.4.2 “与”运算符76
3.4.3 “取反”运算符77
3.4.4 “异或”运算符78
3.4.5 “左移”运算符79
3.4.6 “右移”运算符80
3.5 实战81
3.5.1 最大公约数及最小公倍数81
3.5.2 循环移位82
3.6 疑难解惑84
3.6.1 表达式“a=b”和“a= =b”一样吗?84
3.6.2 如何区分“,”是运算符还是分隔符84
3.6.3 C语言中有哪些简化的运算表达式86
3.7 小结86
第4章 语句87
4.1 本章知识体系88
4.2 语句的构成88
4.2.1 表达式语句89
4.2.2 函数调用语句89
4.2.3 控制语句90
4.2.4 复合语句91
4.2.5 空语句91
4.3 如何实现字符数据输入/输出91
4.3.1 字符数据输出91
4.3.2 字符数据输入92
4.4 格式输入/输出93
4.4.1 格式输出函数93
4.4.2 格式输入函数98
4.5 程序的控制结构101
4.5.1 顺序结构101
4.5.2 分支结构101
4.5.3 循环结构102
4.6 if语句103
4.6.1 if语句的介绍103
4.6.2 if语句的嵌套107
4.7 条件运算符108
4.8 switch语句109
4.8.1 switch语句的基本形式109
4.8.2 剖析if和switch语句112
4.9 while与do-while语句113
4.9.1 当型循环语句while113
4.9.2 直到型循环语句do-while116
4.9.3 while与do-while的异同118
4.10 for语句119
4.10.1 初识for语句119
4.10.2 for语句的变体121
4.10.3 for语句的嵌套123
4.11 跳转语句125
4.11.1 continue语句跳出本次循环125
4.11.2 break语句跳出循环126
4.11.3 用于返回数据的return语句127
4.11.4 goto语句128
4.12 实战129
4.12.1 整数加减法练习129
4.12.2 一元钱兑换方案130
4.13 疑难解惑132
4.13.1 C语言提供的跳转语句各有什么特点132
4.13.2 循环嵌套时应该注意什么132
4.13.3 如何提高循环语句的执行效率132
4.14 小结133
第5章 数组135
5.1 本章知识体系136
5.2 一维数组136
5.2.1 如何定义和引用一维数组136
5.2.2 一维数组初始化137
5.2.3 一维数组应用139
5.3 二维数组140
5.3.1 如何定义和引用二维数组140
5.3.2 二维数组初始化141
5.3.3 二维数组应用143
5.4 多维数组144
5.5 字符数组144
5.5.1 如何定义和使用字符数组144
5.5.2 字符数组初始化145
5.5.3 字符数组的结束标志147
5.5.4 字符数组的输入和输出148
5.5.5 字符数组应用151
5.6 实战152
5.6.1 逆序存放数据152
5.6.2 相邻元素之和154
5.7 疑难解惑155
5.7.1 数组下标必须从0开始吗155
5.7.2 数组名作函数参数与数组元素作函数参数
有什么不同之处155
5.7.3 '\0'和"\0"有什么区别155
5.8 小结156
第6章 函数157
6.1 本章知识体系158
6.2 函数概述158
6.3 函数的定义160
6.3.1 无参函数160
6.3.2 有参函数161
6.3.3 空函数161
6.4 返回语句162
6.4.1 从函数返回162
6.4.2 返回值162
6.5 函数参数163
6.5.1 形式参数与实际参数163
6.5.2 数组作函数参数165
6.5.3 main参数170
6.6 函数的调用171
6.6.1 函数调用方式171
6.6.2 嵌套调用172
6.6.3 递归调用174
6.7 内部函数和外部函数177
6.7.1 内部函数177
6.7.2 外部函数177
6.8 局部变量和全局变量179
6.8.1 局部变量179
6.8.2 全局变量180
6.9 实战182
6.9.1 求字符串中字符的个数182
6.9.2 打渔晒网问题183
6.10 疑难解惑185
6.10.1 在调用时不使用函数的返回值会产生
什么现象185
6.10.2 C语言中函数的调用方式有哪几种186
6.10.3 函数定义时容易犯哪些错误186
6.11 小结187
第7章 指针189
7.1 本章知识体系190
7.2 指针相关概念190
7.2.1 地址与指针190
7.2.2 指针变量191
7.2.3 指针的赋值192
7.2.4 指针的引用193
7.3 指针运算194
7.4 一维数组与指针196
7.5 指针访问二维数组200
7.6 字符和指针203
7.6.1 使用字符指针203
7.6.2 字符指针数组205
7.7 指向指针的指针206
7.8 函数型指针208
7.9 实战210
7.9.1 用指针实现数据交换210
7.9.2 使用指针实现整数排序212
7.10 疑难解惑213
7.10.1 指针类型和指针所指向的类型是一样
的吗213
7.10.2 指针运算与取地址运算符有何联系214
7.10.3 空指针有何意义214
7.11 小结214
第8章 结构体和共用体215
8.1 本章知识体系216
8.2 结构体216
8.2.1 结构体类型的概念216
8.2.2 结构体变量的定义217
8.2.3 结构体类型的几点说明219
8.2.4 结构体变量的引用220
8.2.5 结构体变量的初始化220
8.3 结构体数组221
8.3.1 定义结构体数组221
8.3.2 初始化结构体数组222
8.4 结构体指针224
8.4.1 指向结构体变量的指针224
8.4.2 指向结构体数组的指针225
8.4.3 结构体作函数参数226
8.5 包含结构的结构229
8.6 链表230
8.6.1 什么是链表230
8.6.2 创建动态链表232
8.6.3 链表相关操作234
8.7 共用体240
8.7.1 什么是共用体240
8.7.2 共用体变量的定义和引用240
8.7.3 共用体类型的初始化241
8.8 实战242
8.8.1 约瑟夫环242
8.8.2 计算开机时间244
8.9 疑难解惑246
8.9.1 定义结构体对结构体成员的类型是否
有限制246
8.9.2 成员运算符(.)和指向结构体成员的
运算符(->)有何区别246
8.9.3 结构体和联合体有什么区别和联系246
8.10 小结247
第9章 文件249
9.1 本章知识体系250
9.2 文件概述250
9.3 文件基本操作251
9.3.1 文件的打开251
9.3.2 文件的关闭252
9.4 文件的读写253
9.4.1 fputc函数253
9.4.2 fgetc函数254
9.4.3 fread函数和fwrite函数255
9.5 文件的定位257
9.5.1 rewind函数257
9.5.2 ftell函数259
9.5.3 fseek函数259
9.6 出错检测261
9.6.1 ferror函数261
9.6.2 clearerr函数263
9.7 实战264
9.7.1 读取磁盘文件264
9.7.2 将数据写入磁盘文件265
9.8 疑难解惑266
9.8.1 标准文件和一般文件有什么区别266
9.8.2 C语言的常用库文件包含哪些266
9.8.3 为什么文件打开以后要及时关闭268
9.9 小结268
第10章 预处理269
10.1 本章知识体系270
10.2 不带参数的宏定义270
10.3 带参数的宏定义272
10.4 #include命令273
10.5 条件编译276
10.5.1 #if命令276
10.5.2 #ifdef及#ifndef命令279
10.5.3 #undef命令280
10.5.4 #line命令280
10.5.5 #pragma命令281
10.6 实战282
10.6.1 利用宏计算两个数的乘积282
10.6.2 利用宏求3个数中的最小数282
10.7 疑难解惑283
10.7.1 C语言中包括哪些预处理功能283
10.7.2 使用宏时需要注意些什么284
10.7.3 文件包含可以嵌套吗284
10.8 小结284
第11章 存储管理285
11.1 本章知识体系286
11.2 内存组织方式286
11.2.1 内存组织方式286
11.2.2 堆与栈286
11.3 分配内存函数(malloc和calloc)289
11.3.1 malloc函数289
11.3.2 calloc函数290
11.4 修改已分配内存(relloc函数)291
11.5 释放内存——free函数292
11.6 谁偷了我的内存293
11.7 实战294
11.7.1 为具有3个元素的数组分配内存294
11.7.2 为二维数组动态分配内存并释放294
11.8 疑难解惑296
11.8.1 什么是“内存泄露”296
11.8.2 内存耗尽了怎么办296
11.8.3 常见的内存管理错误有哪些296
11.9 小结297
范例演练篇
第12章 排序301
12.1 选择排序302
12.1.1 范例功能演示302
12.1.2 开发思路指引302
12.1.3 专家难点解析303
12.1.4 设计过程详解304
12.1.5 范例开发手记305
12.1.6 进阶与提高305
12.2 冒泡排序306
12.2.1 范例功能演示306
12.2.2 开发思路指引306
12.2.3 专家难点解析307
12.2.4 设计过程详解308
12.2.5 范例开发手记309
12.2.6 进阶与提高309
12.3 插入排序310
12.3.1 范例功能演示310
12.3.2 开发思路指引310
12.3.3 专家难点解析311
12.3.4 设计过程详解312
12.3.5 范例开发手记313
12.3.6 进阶与提高313
12.4 希尔排序314
12.4.1 范例功能演示314
12.4.2 开发思路指引315
12.4.3 专家难点解析315
12.4.4 设计过程详解316
12.4.5 范例开发手记317
12.4.6 进阶与提高318
12.5 快速排序319
12.5.1 范例功能演示319
12.5.2 开发思路指引319
12.5.3 专家难点解析320
12.5.4 设计过程详解321
12.5.5 范例开发手记322
12.5.6 进阶与提高323
第13章 查找325
13.1 顺序查找326
13.1.1 范例功能演示326
13.1.2 开发思路指引326
13.1.3 专家难点解析326
13.1.4 设计过程详解327
13.1.5 范例开发手记328
13.1.6 进阶与提高328
13.2 折半查找329
13.2.1 范例功能演示330
13.2.2 开发思路指引330
13.2.3 专家难点解析330
13.2.4 设计过程详解331
13.2.5 范例开发手记332
13.2.6 进阶与提高332
13.3 分块查找334
13.3.1 范例功能演示334
13.3.2 开发思路指引334
13.3.3 专家难点解析335
13.3.4 设计过程详解336
13.3.5 范例开发手记337
13.3.6 进阶与提高338
13.4 哈希查找339
13.4.1 范例功能演示339
13.4.2 开发思路指引340
13.4.3 专家难点解析340
13.4.4 设计过程详解342
13.4.5 范例开发手记344
13.4.6 进阶与提高344
第14章 数据压缩349
14.1 RLE算法实现数据压缩350
14.1.1 范例功能演示350
14.1.2 开发思路指引350
14.1.3 专家难点解析351
14.1.4 设计过程详解351
14.1.5 范例开发手记353
14.1.6 进阶与提高353
14.2 LZW算法实现数据压缩355
14.2.1 范例功能演示355
14.2.2 开发思路指引355
14.2.3 专家难点解析355
14.2.4 设计过程详解356
14.2.5 范例开发手记359
14.2.6 进阶与提高359
第15章 图形编程363
15.1 绘制折线图364
15.1.1 范例功能演示364
15.1.2 开发思路指引364
15.1.3 专家难点解析364
15.1.4 设计过程详解366
15.1.5 范例开发手记367
15.1.6 进阶与提高368
15.2 饼状图370
15.2.1 范例功能演示370
15.2.2 开发思路指引370
15.2.3 专家难点解析370
15.2.4 设计过程详解372
15.2.5 范例开发手记373
15.2.6 进阶与提高373
15.3 条形图375
15.3.1 范例功能演示375
15.3.2 开发思路指引375
15.3.3 专家难点解析375
15.3.4 设计过程详解377
15.3.5 范例开发手记379
15.3.6 进阶与提高379
15.4 画玫瑰花381
15.4.1 范例功能演示381
15.4.2 开发思路指引381
15.4.3 专家难点解析381
15.4.4 设计过程详解382
15.4.5 范例开发手记387
15.4.6 进阶与提高387
15.5 菜单界面设计388
15.5.1 范例功能演示389
15.5.2 开发思路指引389
15.5.3 专家难点解析389
15.5.4 设计过程详解390
15.5.5 范例开发手记396
15.5.6 进阶与提高396
第16章 文件的高级应用399
16.1 创建文件400
16.1.1 范例功能演示400
16.1.2 开发思路指引400
16.1.3 专家难点解析400
16.1.4 设计过程详解401
16.1.5 范例开发手记402
16.1.6 进阶与提高402
16.2 文件的复制403
16.2.1 范例功能演示403
16.2.2 开发思路指引403
16.2.3 专家难点解析403
16.2.4 设计过程详解404
16.2.5 范例开发手记405
16.2.6 进阶与提高405
16.3 删除文件406
16.3.1 范例功能演示407
16.3.2 开发思路指引407
16.3.3 专家难点解析407
16.3.4 设计过程详解408
16.3.5 范例开发手记409
16.3.6 进阶与提高409
16.4 重命名文件412
16.4.1 范例功能演示412
16.4.2 开发思路指引412
16.4.3 专家难点解析412
16.4.4 设计过程详解413
16.4.5 范例开发手记413
16.4.6 进阶与提高414
16.5 文件加密415
16.5.1 范例功能演示415
16.5.2 开发思路指引416
16.5.3 专家难点解析416
16.5.4 设计过程详解417
16.5.5 范例开发手记418
16.5.6 进阶与提高418
项目实战篇
第17章 五子棋游戏开发423
17.1 概述424
17.2 需求分析424
17.3 系统设计424
17.3.1 设计目标424
17.3.2 开发及运行环境424
17.4 程序预览424
17.5 graphics.h文件425
17.6 设计思路429
17.7 预处理429
17.7.1 文件引用429
17.7.2 宏定义429
17.8 声明变量430
17.9 函数声明430
17.10 主要功能实现430
17.10.1 主函数430
17.10.2 开始游戏432
17.10.3 绘制棋盘433
17.10.4 绘制棋子433
17.10.5 清除棋子434
17.10.6 游戏过程434
17.10.7 判断胜负结果440
17.11 开发总结442
第18章 商品信息管理系统(txt)443
18.1 概述444
18.1.1 需求分析444
18.1.2 功能结构图444
18.2 预处理444
18.2.1 文件引用444
18.2.2 宏定义445
18.3 声明结构体445
18.4 函数声明445
18.5 功能选择界面446
18.5.1 功能概述446
18.5.2 主函数446
18.5.3 自定义菜单功能函数447
18.6 录入商品信息448
18.7 查询商品信息452
18.8 删除商品信息454
18.9 修改商品信息456
18.10 插入商品信息458
18.11 统计商品数461
18.12 开发总结462
第19章 网络通信编程463
19.1 网络通信系统概述464
19.1.1 开发背景464
19.1.2 需求分析464
19.1.3 功能结构图464
19.2 技术攻关465
19.2.1 TCP/IP协议465
19.2.2 IP地址466
19.2.3 数据包格式467
19.2.4 建立连接469
19.2.5 套接字库函数470
19.3 网络通信系统主程序473
19.4 点对点通信477
19.5 服务器中转通信484
19.6 程序调试与错误处理491
19.7 开发总结494
第20章 联系人管理系统(嵌入式)497
20.1 联系人管理系统概述498
20.1.1 系统分析498
20.1.2 总体设计498
20.2 技术攻关499
20.2.1 嵌入式499
20.2.2 超级终端通信500
20.2.3 烧写与编译504
20.3 联系人管理系统主程序511
20.4 添加联系人模块516
20.5 查找联系人模块518
20.6 删除联系人模块521
20.7 浏览联系人模块523
20.8 联系人详情527
20.9 程序调试与错误处理529
20.10 开发总结533
第21章 图书管理系统(MySQL)535
21.1 概述536
21.1.1 需求分析536
21.1.2 开发工具选择536
21.2 系统设计536
21.2.1 系统目标536
21.2.2 系统功能结构537
21.2.3 系统预览537
21.2.4 开发及运行环境540
21.3 数据库设计540
21.3.1 安装MySQL数据库540
21.3.2 启动MySQL数据库547
21.3.3 创建数据库548
21.3.4 数据表结构549
21.4 C语言开发数据库程序的流程549
21.5 C语言操作MySQL数据库552
21.5.1 MySQL常用数据库操作函数552
21.5.2 连接MySQL数据554
21.5.3 查询图书表记录555
21.5.4 插入图书表记录557
21.5.5 修改图书表记录558
21.5.6 删除图书表记录560
21.6 文件引用560
21.7 变量和函数定义561
21.8 主要功能模块设计562
21.8.1 显示主菜单信息562
21.8.2 显示所有图书信息564
21.8.3 添加图书信息567
21.8.4 修改图书信息574
21.8.5 删除图书信息581
21.8.6 查询图书信息587
21.9 程序调试及错误处理590
21.9.1 解决创建数据表为一个文件的问题590
21.9.2 在创建数据表时,最后一句结尾没有标点591
21.9.3 无法启动MySQL服务592
21.10 项目开发总结592