标题：学通C语言的24堂课
图书信息
学通C语言的24堂课 明日科技 刘彬彬、孙秀梅 编著
ISBN 9787302257288  　
2011年6月出版 
定价：79.80元含（含光盘1张） 　
16开  
内容简介
本书以24堂课的形式，从初中级用户的角度出发，进行合理的内容安排，突出学、练、用结合。本书主要内容包括：初识C语言、掌握C语言数据类型、表达式与运算符、数据输入/输出函数、设计选择/分支结构程序、循环控制、数组的应用、字符数组、函数的应用、变量的存储类别、C语言中的指针、结构体的使用、共用体的综合应用、使用预处理命令、存储管理、链表在C语言中的应用、栈和队列、C语言中的位运算、文件操作技术、图形图像处理、猜数字游戏、五子棋游戏、学生成绩管理系统和图书管理系统（MySQL）。
本书适合有志于从事软件开发的初学者、高校计算机相关专业学生和毕业生，也可作为软件开发人员的参考手册或者高校的教学参考书。
本书通过教学视频、实例训练、综合应用、项目实践、自我测试、行动指南逐步深入和强化训练等方式，并辅之以心理励志，来持续激发读者主动学习、自发学习。
本书给出了375个小型实例，184个综合应用，7个项目案例（部分在光盘中），各类技巧、试验200余个，测试题目210个，以方便读者训练、测试和快速提升。
本书DVD光盘给出了72集（308段）多媒体教学视频讲解，每个实例都给出了相应的源程序，可直接复制源码学习或应用。
前言
前  言
1973年，美国贝尔实验室的Dennis Ritchie在B语言的基础上设计出了一种新的语言，也就是C语言，1989年ANSI C标准被完全采用，随着不断改进，1999年推出了新的C语言标准，两个标准之间的差别并不是很大，本书就是在这两个标准的基础上进行撰写的。
20世纪末，随着计算机技术的飞速发展，涌现出了许多高级程序设计语言，但是C语言并没有退出历史的舞台。C语言是Combined Language（组合语言）的简称，作为一种计算机设计语言，其所具有的高级语言和汇编语言的特点，使其受到了广大编程人员的喜爱。C语言的应用很广泛，它可以编写系统应用程序，可以作为编写应用程序的设计语言，并且还可以具体应用到单片机以及嵌入式系统的开发。
本书内容
学、练、用到精通只需24堂课。本书从初中级用户的角度，科学合理的设计，通过24堂课全面讲述了使用C语言进行程序开发必备的知识和技能。本书的结构如下图所示。
第1部分  基础篇（第1~8堂课）：讲述了C语言开发环境、C语言数据类型、表达式与运算符、数据输入/输出函数、选择/分支结构、循环控制结构、数组和字符数组等知识，这些都是程序语言的基础。
第2部分  提高篇（第9~14堂课）：讲述了函数的应用、变量的存储类别、C语言中的指针、结构体的使用、共用体的综合应用、预处理命令的使用。通过该篇的学习，读者能够使用C语言开发一些小程序。
第3部分  高级篇（第15~20课）：讲述了存储管理、链表、栈和队列、位运算、文件操作技术及图形图像处理。通过该篇的学习，读者可以掌握C语言程序开发中的一些高级技术，为开发较大型的项目打下基础。
第4部分  实战篇（第21~24堂课）：讲述了猜数字游戏、五子棋游戏、学生成绩管理系统和图书管理系统（MySQL）4个完整的项目实例设计全过程。通过该篇的学习，读者可以积累项目开发经验。
本书特点
* 配备72集（308段）多媒体教学视频讲解。
本书DVD光盘提供了覆盖全书的语音视频讲解，读者可以通过视频快速、直观、轻松地学习。
* 每一堂课都结合“照猫画虎”、“情景应用”。
为了增强读者动手能力，激发学习兴趣，本书提供了“照猫画虎”和“情景应用”栏目，根据实例模仿着去做是学习编程的最快方式。
* 每一堂课都结合励志故事和“行动指南”，时刻激励和鼓舞读者。
我们认为学习中尤其是最初的一段时间，非常有必要不断地对学习者以激励和鼓舞，让他们坚持下来是至关重要的，因此书中不间断地用一些励志故事和行动指南去鼓舞其信心。
* 光盘提供了本书的所有代码，即使只有一行。
本书光盘不仅提供了所有实例的源程序，还提供了书中所有示例的源代码，哪怕只有一行。读者可以直接复制，以提高学习效率。
* 本书所有习题和实战都给出了答案，部分习题还有解析，读者可以对照查阅。
读者对象
(1) 有志于从事软件开发的初学者   (2)高等院校计算机相关专业的老师和学生  
(3)准备从事软件开发的求职者        (4)参与毕业设计的学生    
(5)初中级程序开发人员                  (6) 程序测试及维护人员   
本书作者
本书由明日科技组织编写，参加编写的程序员有刘彬彬、孙秀梅、王国辉、赛奎春、潘凯华、刘欣、李慧、陈丹丹、高春艳、李伟、杨丽、刘玲玲、朱晓、刘燕、陈英、李鑫、李贺、肖鑫、张丽娜、沈博、刘冠男、曹飞飞、李丽、聂喜婷、王明昭、张英豪、王小科、赵会东、白伟明等。
由于水平有限，书中疏漏和不足之处在所难免，恳请广大读者朋友批评指正。
技术支持与服务
最后，感谢您选择本书，希望本书能成为您编程路上的领航者。
祝读书快乐！
编  者
图书目录
目  录
第1部分  基础篇
第1堂课  初识C语言 3
视频讲解：45分钟
1.1  C语言发展史 4
1.1.1  程序语言简述 4
1.1.2  C语言历史 4
1.2  C语言的特点 5
1.3  一个简单C程序 5
1.4  一个完整的C程序 7
1.5  C语言程序的格式 10
1.6  开发环境 11
1.6.1  Turbo C 2.0 11
1.6.2  Visual C++ 6.0 14
1.7  照猫画虎——基本功训练 19
1.7.1  基本功训练1——使用TC创建C文件 19
1.7.2  基本功训练2——使用Visual C++ 6.0
创建.c文件 20
1.7.3  基本功训练3——打开一个C文件 21
1.7.4  基本功训练4——设置工具栏 21
1.8  情景应用——拓展与实践 22
1.8.1  情景应用1——求和程序 22
1.8.2  情景应用2——求10！ 23
1.8.3  情景应用3——猴子吃桃 24
1.8.4  情景应用4——阳阳买苹果 25
1.9  自我测试 26
1.10  行动指南 27
1.11  成功可以复制——迅雷创始人邹胜龙 27
第2堂课  掌握C语言数据类型 29
视频讲解：56分钟
2.1  C语言的编程规范 30
2.1.1  注释的合理使用 30
2.1.2  程序中的“{}”要对齐 30
2.1.3  合理使用空格使代码更规范 31
2.1.4  换行使代码更清晰 31
2.2  关键字 32
2.3  标识符 32
2.4  数据类型 33
2.5  常量 34
2.5.1  整型常量 34
2.5.2  实型常量 36
2.5.3  字符型常量 36
2.5.4  转义字符 39
2.5.5  符号常量 40
2.6  变量 41
2.6.1  整型变量 41
2.6.2  实型变量 43
2.6.3  字符型变量 45
2.7  照猫画虎——基本功训练 46
2.7.1  基本功训练1——定义正确的数据类型
求圆周长 46
2.7.2  基本功训练2——数值型常量的使用 47
2.7.3  基本功训练3——字符变量的使用 48
2.7.4  基本功训练4——实型变量的使用 48
2.8  情景应用——拓展与实践 49
2.8.1  情景应用1——十进制转换为二进制 49
2.8.2  情景应用2——利用“#”输出图形 51
2.8.3  情景应用3——打印杨辉三角 51
2.8.4  情景应用4——利用“*”输出矩形 52
2.9  自我测试 53
2.10  行动指南 54
2.11  成功可以复制——盖茨第二
马克·扎克伯格 55
第3堂课  表达式与运算符 57
视频讲解：59分钟
3.1  表达式 58
3.2  赋值运算符与赋值表达式 59
3.2.1  变量赋初值 60
3.2.2  自动类型转换 61
3.2.3  强制类型转换 61
3.3  算术运算符与表达式 62
3.3.1  算术运算符 62
3.3.2  算术表达式 63
3.3.3  优先级与结合性 64
3.3.4  自增自减运算符 66
3.4  关系运算符与表达式 68
3.4.1  关系运算符 68
3.4.2  关系表达式 68
3.4.3  优先级与结合性 69
3.5  逻辑运算符与表达式 70
3.5.1  逻辑运算符 70
3.5.2  逻辑表达式 71
3.5.3  优先级与结合性 71
3.6  位逻辑运算符与表达式 72
3.6.1  位逻辑运算符 72
3.6.2  位逻辑表达式 72
3.7  逗号运算符与表达式 73
3.8  复合赋值运算符 74
3.9  照猫画虎——基本功训练 75
3.9.1  基本功训练1——使用基本的算术
运算符 75
3.9.2  基本功训练2——赋值表达式类型的
转换 76
3.9.3  基本功训练3——复合赋值运算符的
应用 77
3.9.4  基本功训练4——逗号运算符的应用 77
3.9.5  基本功训练5——关系表达式进行算术
运算 78
3.10  情景应用——拓展与实践 78
3.10.1  情景应用1——求1~10的累加和 78
3.10.2  情景应用2——计算学生平均身高 79
3.10.3  情景应用3——求一元二次方程
ax2+bx+c=0的根 79
3.10.4  情景应用4——求字符串中字符的
个数 80
3.10.5  情景应用5——计算a+=a*=a/=a-6 81
3.11  自我测试 82
3.12  行动指南 83
3.13  成功可以复制——善于抓住时机的人
徐少春 84
第4堂课  数据输入/输出函数 87
视频讲解：69分钟
4.1  语句 88
4.2  字符数据输入/输出 88
4.2.1  字符数据输出 88
4.2.2  字符数据输入 89
4.3  字符串输入/输出 91
4.3.1  字符串输出函数 91
4.3.2  字符串输入函数 92
4.4  格式输出函数 93
4.5  格式输入函数 95
4.6  顺序程序设计应用 99
4.7  照猫画虎——基本功训练 100
4.7.1  基本功训练1——使用字符函数输入/
输出字符 100
4.7.2  基本功训练2——使用字符输出函数
输出“mrsoft” 101
4.7.3  基本功训练3——输出相对的最小
整数 102
4.7.4  基本功训练4——输出乘法口诀表 102
4.7.5  基本功训练5——输出两个数的最大
公约数 103
4.8  情景应用——拓展与实践 104
4.8.1  情景应用1——将输入的小写字符
转换为大写字符 104
4.8.2  情景应用2——用“*”号输出图案 105
4.8.3  情景应用3——输出3×3的矩阵 106
4.8.4  情景应用4——输出一个字符的前
驱字符 106
4.8.5  情景应用5——根据输入判断能否
组成三角形 107
4.9  自我测试 108
4.10  行动指南 110
4.11  成功可以复制——暴雪公司的领航者
迈克·莫汉 110
第5堂课  设计选择/分支结构程序 113
视频讲解：81分钟
5.1  if语句 114
5.2  if语句的基本形式 114
5.2.1  if语句形式 114
5.2.2  if…else语句形式 117
5.2.3  else if语句形式 121
5.3  if的嵌套形式 124
5.4  条件运算符 126
5.5  switch语句 127
5.5.1  switch语句的基本形式 127
5.5.2  多路开关模式的switch语句 131
5.6  if else语句和switch语句的区别 132
5.7  选择结构程序应用 134
5.8  照猫画虎——基本功训练 136
5.8.1  基本功训练1——单条件单分支
选择语句 136
5.8.2  基本功训练2——单条件双分支
选择语句 136
5.8.3  基本功训练3——条件运算符的使用 137
5.8.4  基本功训练4——计算工人工资 138
5.8.5  基本功训练5——判断闰年 139
5.9  情景应用——拓展与实践 140
5.9.1  情景应用1——从小到大输出3个数 140
5.9.2  情景应用2——求学生的最低分和
最高分 141
5.9.3  情景应用3——模拟自动售货机 142
5.9.4  情景应用4——模拟ATM机界面
程序 143
5.9.5  情景应用5——计算某日是该年的第
几天 146
5.10  自我测试 147
5.11  行动指南 150
5.12  成功可以复制——因特网的点火人
马克·安德森 151
第6堂课  循环控制 153
视频讲解：82分钟
6.1  循环语句 154
6.2  while语句 154
6.3  do…while语句 157
6.4  for语句 158
6.4.1  for语句使用 158
6.4.2  for循环的变体 161
6.4.3  for语句中的逗号应用 163
6.5  3种循环语句的比较 164
6.6  循环嵌套 164
6.6.1  循环嵌套的结构 164
6.6.2  循环嵌套实例 166
6.7  转移语句 166
6.7.1  goto语句 167
6.7.2  break语句 168
6.7.3  continue语句 169
6.8  照猫画虎——基本功训练 170
6.8.1  基本功训练1——求某个数的阶乘 170
6.8.2  基本功训练2——一元钱的兑换方案 171
6.8.3  基本功训练3——特殊等式 172
6.8.4  基本功训练4——计算12+22+…+102 173
6.8.5  基本功训练5——输出10~100之间的
素数 173
6.9  情景应用——拓展与实践 175
6.9.1  情景应用1——爱因斯坦阶梯问题 175
6.9.2  情景应用2——斐波那契数列 176
6.9.3  情景应用3——银行存款问题 177
6.9.4  情景应用4——计算学生的最高分 177
6.9.5  情景应用5——统计不及格的人数 178
6.10  自我测试 179
6.11  行动指南 182
6.12  成功可以复制——微型博客Twitter
创始人埃文·威廉姆斯 183
第7堂课  数组的应用 185
视频讲解：58分钟
7.1  一维数组 186
7.1.1  一维数组的定义和引用 186
7.1.2  一维数组初始化 187
7.1.3  一维数组应用 189
7.2  二维数组 190
7.2.1  二维数组的定义和引用 190
7.2.2  二维数组初始化 191
7.2.3  二维数组应用 192
7.3  多维数组 193
7.4  数组的排序算法 194
7.4.1  选择法排序 194
7.4.2  冒泡法排序 196
7.4.3  交换法排序 197
7.4.4  插入法排序 199
7.4.5  折半法排序 201
7.4.6  排序算法的比较 204
7.5  照猫画虎——基本功训练 205
7.5.1  基本功训练1——逆序存放数据 205
7.5.2  基本功训练2——查找数组中的
最值 206
7.5.3  基本功训练3——判断一个数是否存在
数组中 207
7.5.4  基本功训练4——相邻元素之和 208
7.5.5  基本功训练5——求二维数组对角线
之和 208
7.6  情景应用——拓展与实践 209
7.6.1  情景应用1——选票统计 209
7.6.2  情景应用2——模拟比赛打分 211
7.6.3  情景应用3——统计学生成绩 212
7.6.4  情景应用4——矩阵的转置 213
7.6.5  情景应用5——设计魔方阵 215
7.7  自我测试 216
7.8  行动指南 218
7.9  成功可以复制——射击游戏之父
John Carmack 218
第8堂课  字符数组 221
视频讲解：60分钟
8.1  字符数组的应用 222
8.1.1  字符数组定义和引用 222
8.1.2  字符数组初始化 222
8.1.3  字符数组的结束标志 224
8.1.4  字符数组的输入/输出 224
8.1.5  字符数组应用 226
8.2  字符串处理函数 227
8.2.1  字符串复制 227
8.2.2  字符串连接 228
8.2.3  字符串比较 229
8.2.4  字符串大小写转换 230
8.2.5  获得字符串长度 232
8.3  照猫画虎——基本功训练 233
8.3.1  基本功训练1——不使用strcpy函数
实现字符串复制功能 233
8.3.2  基本功训练2——用字符数组存储
学生姓名并输出 234
8.3.3  基本功训练3——字符升序排列 234
8.3.4  基本功训练4——在指定位置插入
字符 236
8.3.5  基本功训练5——删除字符串中的
连续字符 237
8.4  情景应用——拓展与实践 238
8.4.1  情景应用1——统计各种字符个数 238
8.4.2  情景应用2——字符串倒置 239
8.4.3  情景应用3——字符串替换 240
8.4.4  情景应用4——回文字符串 241
8.4.5  情景应用5——字符串加密和解密 242
8.5  自我测试 244
8.6  行动指南 245
8.7  成功可以复制——图文世界的缔造者
约翰·沃洛克 246
第2部分  提高篇
第9堂课  函数的应用 251
视频讲解：98分钟
9.1  函数概述 252
9.2  函数的定义 253
9.2.1  函数定义的形式 254
9.2.2  定义与声明 255
9.3  返回语句 257
9.3.1  从函数返回 257
9.3.2  返回值 258
9.4  函数参数 259
9.4.1  形式参数与实际参数 260
9.4.2  数组作函数参数 261
9.4.3  main的参数 266
9.5  函数的调用 267
9.5.1  函数调用方式 267
9.5.2  嵌套调用 269
9.5.3  递归调用 271
9.6  内部函数和外部函数 273
9.6.1  内部函数 274
9.6.2  外部函数 275
9.7  局部变量和全局变量 276
9.7.1  局部变量 276
9.7.2  全局变量 278
9.8  函数应用 280
9.9  照猫画虎——基本功训练 285
9.9.1  基本功训练1——设计函数输出两个数
中的最大值 285
9.9.2  基本功训练2——设计函数计算学生的
平均成绩 286
9.9.3  基本功训练3——判断素数 287
9.9.4  基本功训练4——求数组元素中的
最小值 287
9.9.5  基本功训练5——打印1到5的阶乘 288
9.10  情景应用——拓展与实践 289
9.10.1  情景应用1——递归解决年龄问题 289
9.10.2  情景应用2——百钱百鸡问题 290
9.10.3  情景应用3——求最大公约数和最小
公倍数 292
9.10.4  情景应用4——求直角三角形斜边 293
9.10.5  情景应用5——小数分离 294
9.11  自我测试 294
9.12  行动指南 296
9.13  成功可以复制——征途巨人史玉柱 297
第10堂课  变量的存储类别 299
视频讲解：42分钟
10.1  了解变量的存储类型 300
10.2  使用auto关键字声明自动变量 300
10.3  使用static关键字声明静态变量 301
10.4  使用register关键字声明寄存器
变量 303
10.5  使用extern关键字声明外部变量 304
10.5.1  声明在一个文件中使用的外部变量 304
10.5.2  声明在多个文件中使用的外部变量 305
10.6  使用static关键字声明静态外部
变量 306
10.7  照猫画虎——基本功训练 307
10.7.1  基本功训练1——声明自动变量 307
10.7.2  基本功训练2——比较两个数的大小 308
10.7.3  基本功训练3——求两个数的和 309
10.7.4  基本功训练4——计算用户输入整数的
乘积 309
10.7.5  基本功训练5——使用register定义局部
变量 310
10.8  情景应用——拓展与实践 311
10.8.1  情景应用1——婚礼上的谎言 311
10.8.2  情景应用2——求新同学的年龄 312
10.8.3  情景应用3——捕鱼和分鱼 313
10.8.4  情景应用4——求邮票总数 314
10.8.5  情景应用5——巧分苹果 315
10.9  自我测试 316
10.10  行动指南 318
10.11  成功可以复制——缔造华人的
硅谷传奇杨致远 319
第11堂课  C语言中的指针 321
视频讲解：107分钟
11.1  指针相关概念 322
11.1.1  地址与指针 322
11.1.2  变量与指针 323
11.1.3  指针变量 323
11.1.4  指针自加自减运算 326
11.2  数组与指针 327
11.2.1  一维数组与指针 328
11.2.2  二维数组与指针 331
11.2.3  字符串与指针 333
11.2.4  字符串数组 334
11.3  指向指针的指针 336
11.4  指针变量作函数参数 338
11.5  返回指针值的函数 343
11.6  指针数组作main函数的参数 345
11.7  照猫画虎——基本功训练 346
11.7.1  基本功训练1——利用指针查找数列中
最大值和最小值 346
11.7.2  基本功训练2——利用指针实现字符串
复制 347
11.7.3  基本功训练3——实现数组元素值逆序
存放 348
11.7.4  基本功训练4——使用指针连接两个
字符串 349
11.7.5  基本功训练5——利用指针输出数组
元素 350
11.8  情景应用——拓展与实践 351
11.8.1  情景应用1——查找成绩不及格的学生 351
11.8.2  情景应用2——使用指针实现冒泡排序 352
11.8.3  情景应用3——输入月份号输出英文
月份名 353
11.8.4  情景应用4——使用指针插入元素 354
11.8.5  情景应用5——使用指针交换两个数组
中的最大值 355
11.9  自我测试 357
11.10  行动指南 359
11.11  成功可以复制——杀毒王王江民 360
第12堂课  结构体的使用 363
视频讲解：62分钟
12.1  结构体 364
12.1.1  结构体类型的概念 364
12.1.2  结构体变量的定义 365
12.1.3  结构体变量的引用 366
12.1.4  结构体类型的初始化 368
12.2  结构体数组 370
12.2.1  定义结构体数组 370
12.2.2  初始化结构体数组 371
12.3  结构体指针 373
12.3.1  指向结构体变量的指针 373
12.3.2  指向结构体数组的指针 376
12.3.3  结构体作函数参数 377
12.4  包含结构的结构 380
12.5  照猫画虎——基本功训练 381
12.5.1  基本功训练1——结构体变量的
初始化 381
12.5.2  基本功训练2——使用结构体存放学生
信息 382
12.5.3  基本功训练3——整数排序 383
12.5.4  基本功训练4——指向数组元素的结构
指针运算 384
12.5.5  基本功训练5——计算学生的平均成绩 385
12.6  情景应用——拓展与实践 386
12.6.1  情景应用1——找出最高分 386
12.6.2  情景应用2——候选人选票程序 387
12.6.3  情景应用3——求平面上两点的距离 388
12.6.4  情景应用4——设计通讯录 389
12.6.5  情景应用5——输出火车票价 390
12.7  自我测试 392
12.8  行动指南 394
12.9  成功可以复制——中国第一程序员
求伯君 395
第13堂课  共用体的综合应用 397
视频讲解：24分钟
13.1  共用体 398
13.1.1  共用体的概念 398
13.1.2  共用体变量的引用 398
13.1.3  共用体变量的初始化 399
13.1.4  共用体类型的数据特点 400
13.2  枚举类型 400
13.3  照猫画虎——基本功训练 401
13.3.1  基本功训练1——共用体变量的应用 401
13.3.2  基本功训练2——共用体处理任意类型
数据 402
13.3.3  基本功训练3——取出整型数据的高
字节数据 403
13.4  情景应用——拓展与实践 404
13.4.1  情景应用1——使用共用体存放学生和
老师信息 404
13.4.2  情景应用2——输出今天星期几 405
13.4.3  情景应用3——制作花束 406
13.5  自我测试 408
13.6  行动指南 409
13.7  成功可以复制——80后新贵、
泡泡网CEO李想 409
第14堂课  使用预处理命令 411
视频讲解：62分钟
14.1  宏定义 412
14.1.1  不带参数的宏定义 412
14.1.2  带参数的宏定义 413
14.2  #include指令 414
14.3  条件编译 416
14.3.1  #if命令 416
14.3.2  #ifdef及#ifndef命令 418
14.3.3  #undef命令 419
14.3.4  #line命令 419
14.3.5  #pragma命令 420
14.4  照猫画虎——基本功训练 420
14.4.1  基本功训练1——不带参数的宏定义求
平行四边形面积 420
14.4.2  基本功训练2——定义带参数的宏实现
求两个整数的乘积 421
14.4.3  基本功训练3——编写头文件包含圆
面积的计算公式 422
14.4.4  基本功训练4——使用条件编译将字符
转换为大写 423
14.4.5  基本功训练5——使用宏定义实现数组
值的互换 424
14.5  情景应用——拓展与实践 425
14.5.1  情景应用1——使用带参数的宏求圆
面积 425
14.5.2  情景应用2——利用宏定义求偶数和 426
14.5.3  情景应用3——从3个数中找出最小数 427
14.5.4  情景应用4——利用文件包含设计输出
模式 428
14.5.5  情景应用5——使用条件编译隐藏密码 428
14.6  自我测试 429
14.7  行动指南 431
14.8  成功可以复制——使计算机成为
生活的必需品比尔·盖茨 432
第3部分  高级篇
第15堂课  存储管理 435
视频讲解：33分钟
15.1  内存组织方式 436
15.1.1  内存组织方式 436
15.1.2  堆管理 436
15.2  动态管理 437
15.2.1  malloc函数 437
15.2.2  calloc函数 438
15.2.3  realloc函数 439
15.2.4  free函数 439
15.3  内存丢失 440
15.4  照猫画虎——基本功训练 441
15.4.1  基本功训练1——sizeof关键字的
应用 441
15.4.2  基本功训练2——为具有3个数组元素
的数组分配内存 442
15.4.3  基本功训练3——为二维数组动态分配
内存 442
15.5  情景应用——拓展与实践 444
15.5.1  情景应用1——使用malloc()函数分配
内存 444
15.5.2  情景应用2——调用calloc()函数动态
分配内存 444
15.5.3  情景应用3——商品信息的动态存放 445
15.6  自我测试 446
15.7  行动指南 447
15.8  成功可以复制——知识改变命运、
科技改变生活李彦宏 448
第16堂课  链表在C语言中的应用 451
视频讲解：76分钟
16.1  链表 452
16.1.1  链表概述 452
16.1.2  静态链表 453
16.1.3  处理动态链表所需的函数 454
16.2  链表相关操作 454
16.2.1  创建动态链表 454
16.2.2  输出链表 456
16.2.3  链表的插入操作 458
16.2.4  链表的删除操作 459
16.3  链表的表现形式 463
16.3.1  单向链表 463
16.3.2  循环链表 464
16.3.3  双向链表 464
16.4  照猫画虎——基本功训练 465
16.4.1  基本功训练1——创建单向链表 465
16.4.2  基本功训练2——向单向链表中插入
元素 467
16.4.3  基本功训练3——删除结点元素 469
16.4.4  基本功训练4——创建双向链表 471
16.4.5  基本功训练5——创建循环链表 474
16.5  情景应用——拓展与实践 475
16.5.1  情景应用1——单向链表逆置 475
16.5.2  情景应用2——双向链表逆序输出 477
16.5.3  情景应用3——连接两个链表 479
16.5.4  情景应用4——使用链表实现约瑟
夫环 480
16.5.5  情景应用5——查找两个链表中的
相同元素 482
16.6  自我测试 484
16.7  行动指南 486
16.8  成功可以复制——中国通信设备
行业的领跑者任正非 486
第17堂课  栈和队列 489
视频讲解：73分钟
17.1  栈的定义和几种基本操作 490
17.1.1  栈的定义 490
17.1.2  栈常见的几种基本操作 491
17.2  栈的存储和实现 492
17.2.1  顺序栈 492
17.2.2  链栈 494
17.3  队列的定义和基本操作 497
17.3.1  队列的定义 497
17.3.2  队列常见的几种基本操作 497
17.4  队列的存储及运算 497
17.4.1  顺序队列 497
17.4.2  链队列 500
17.4.3  循环队列 501
17.5  照猫画虎——基本功训练 501
17.5.1  基本功训练1——应用栈实现进制
转换 501
17.5.2  基本功训练2——括号匹配检测 504
17.5.3  基本功训练3——利用栈实现递归计算
多项式 507
17.5.4  基本功训练4——循环队列的基本
操作 508
17.6  情景应用——拓展与实践 511
17.6.1  情景应用1——汉诺塔问题 511
17.6.2  情景应用2——机票预售系统 513
17.6.3  情景应用3——链队列的使用 515
17.7  自我测试 519
17.8  行动指南 520
17.9  成功可以复制——软件业的华人
教父王嘉廉 521
第18堂课  C语言中的位运算 523
视频讲解：62分钟
18.1  位与字节 524
18.2  位运算操作符 524
18.2.1  与运算符 524
18.2.2  或运算符 525
18.2.3  取反运算符 527
18.2.4  异或运算符 528
18.2.5  左移运算符 529
18.2.6  右移运算符 530
18.3  循环移位 532
18.4  位段 533
18.4.1  位段的概念与定义 533
18.4.2  位段相关说明 534
18.5  照猫画虎——基本功训练 535
18.5.1  基本功训练1——输入两个整数实现按
位与和按位或 535
18.5.2  基本功训练2——使二进制数特定位
翻转 536
18.5.3  基本功训练3——整数与0异或 537
18.5.4  基本功训练4——将输入的数左移两位
并输出 538
18.5.5  基本功训练5——编程实现循环右移 538
18.6  情景应用——拓展与实践 539
18.6.1  情景应用1——交换两个值不用临时
变量 539
18.6.2  情景应用2——取一个整数的后4位 540
18.6.3  情景应用3——编写循环移位函数 541
18.6.4  情景应用4——取出给定16位二进制数的
奇数位 541
18.6.5  情景应用5——求一个数的补码 542
18.7  自我测试 543
18.8  行动指南 544
18.9  成功可以复制——创造互联网搜索
时代谢尔盖·布林 545
第19堂课  文件操作技术 547
视频讲解：87分钟
19.1  文件概述 548
19.2  文件基本操作 548
19.2.1  文件指针 548
19.2.2  文件的打开 549
19.2.3  文件的关闭 549
19.3  文件的读写 550
19.3.1  fputc函数 550
19.3.2  fgetc函数 551
19.3.3  fputs函数 551
19.3.4  fgets函数 552
19.3.5  fprintf函数 553
19.3.6  fscanf函数 554
19.3.7  fread函数和fwrite函数 555
19.4  文件的定位 557
19.4.1  fseek函数 557
19.4.2  rewind函数 558
19.4.3  ftell函数 559
19.5  照猫画虎——基本功训练 561
19.5.1  基本功训练1——关闭打开的所有
文件 561
19.5.2  基本功训练2——读取指定文件的内容 563
19.5.3  基本功训练3——同时显示两个文件的
内容 564
19.5.4  基本功训练4——随机读写文件 565
19.5.5  基本功训练5——文件的错误处理 567
19.6  情景应用——拓展与实践 569
19.6.1  情景应用1——创建文件 569
19.6.2  情景应用2——文件的复制 570
19.6.3  情景应用3——删除文件 572
19.6.4  情景应用4——重命名文件 573
19.6.5  情景应用5——文件加密 575
19.7  自我测试 577
19.8  行动指南 579
19.9  成功可以复制——IT风云人物
鲍岳桥 579
第20堂课  图形图像处理 581
视频讲解：129分钟
20.1  字符屏幕 582
20.1.1  定义文本窗口 582
20.1.2  颜色设置 582
20.1.3  文本的输入和输出 583
20.1.4  屏幕操作函数 584
20.2  图形显示 586
20.2.1  图形模式初始化 586
20.2.2  屏幕颜色设置 588
20.2.3  基本图形函数 590
20.2.4  封闭图形的填充 597
20.3  图形屏幕 599
20.4  图形模式下文本输出 600
20.4.1  文本输出函数 600
20.4.2  文本属性设置 601
20.5  照猫画虎——基本功训练 603
20.5.1  基本功训练1——闪烁的文字 603
20.5.2  基本功训练2——实现背景颜色切换 604
20.5.3  基本功训练3——绘制圆形 605
20.5.4  基本功训练4——在屏幕中绘制两个
相同的小球 605
20.5.5  基本功训练5——绘制五角星 607
20.6  情景应用——拓展与实践 609
20.6.1  情景应用1——绘制折线图 609
20.6.2  情景应用2——输出饼状图 611
20.6.3  情景应用3——画条形图 612
20.6.4  情景应用4——画玫瑰花 615
20.6.5  情景应用5——菜单界面设计 619
20.7  自我测试 625
20.8  行动指南 627
20.9  成功可以复制——IT大王王志东 627
第4部分  实战篇
第21堂课  猜数字游戏 631
视频讲解：23分钟
21.1  概述 632
21.2  需求分析 632
21.3  系统设计 632
21.3.1  设计目标 632
21.3.2  开发及运行环境 632
21.4  程序预览 632
21.5  设计思路 634
21.6  文件引用 634
21.7  主要功能实现 634
21.7.1  主函数 634
21.7.2  猜数字 635
21.7.3  光标定位 637
第22堂课  五子棋游戏 639
视频讲解：27分钟
22.1  概述 640
22.2  需求分析 640
22.3  系统设计 640
22.3.1  设计目标 640
22.3.2  开发及运行环境 640
22.4  程序预览 640
22.5  graphics.h文件 641
22.6  设计思路 644
22.7  预处理 644
22.7.1  文件引用 644
22.7.2  宏定义 645
22.8  声明变量 645
22.9  函数声明 645
22.10  主要功能实现 645
22.10.1  主函数 645
22.10.2  开始游戏 647
22.10.3  绘制棋盘 647
22.10.4  绘制棋子 648
22.10.5  清除棋子 648
22.10.6  游戏过程 648
22.10.7  判断胜负 653
第23堂课  学生成绩管理系统 657
视频讲解：40分钟
23.1  需求分析 658
23.2  系统设计 658
23.3  功能设计 658
23.3.1  功能选择界面 659
23.3.2  录入学生成绩信息 660
23.3.3  查询学生成绩信息 662
23.3.4  删除学生成绩信息 663
23.3.5  修改学生成绩信息 664
23.3.6  插入学生成绩信息 666
23.3.7  统计学生人数 668
第24堂课  图书管理系统（MySQL） 669
视频讲解：32分钟
24.1  概述 670
24.1.1  需求分析 670
24.1.2  开发工具选择 670
24.2  系统设计 670
24.2.1  系统目标 670
24.2.2  系统功能结构 670
24.2.3  系统预览 670
24.2.4  开发及运行环境 672
24.3  数据库设计 673
24.3.1  安装MySQL数据库 673
24.3.2  启动MySQL数据库 676
24.3.3  创建数据库 677
24.3.4  数据表结构 678
24.4  C语言开发数据库程序的流程 678
24.5  C语言操作MySQL数据库 680
24.5.1  MySQL常用数据库操作函数 680
24.5.2  连接MySQL数据 682
24.5.3  查询图书表记录 683
24.5.4  插入图书表记录 685
24.5.5  修改图书表记录 686
24.5.6  删除图书表记录 687
24.6  文件引用 687
24.7  变量和函数定义 688
24.8  主要功能模块设计 688
24.8.1  显示主菜单信息 688
24.8.2  显示所有图书信息 690
24.8.3  添加图书信息 692
24.8.4  修改图书信息 698
24.8.5  删除图书信息 704
24.8.6  查询图书信息 710
24.9  程序调试及错误处理 712
24.9.1  解决创建数据表为一个文件的
问题 712
24.9.2  在创建数据表时，最后一句结尾没有
标点 713
24.9.3  无法启动MySQL服务 714