C语言从入门到精通（第2版）

2012年清华大学出版社出版的图书
《C语言从入门到精通（第2版）》是2012年7月清华大学出版社出版的图书，作者是明日科技。
编辑推荐
“软件开发视频大讲堂”丛书系清华社“视频大讲堂”重点大系之一。该大系包括多个子系列，每个子系列的图书在其同品种的图书中销售名列前茅，其中：
◆4个品种荣获“全行业畅销品种”
◆1个品种荣获2012年清华大学出版社“专业畅销书”一等奖
◆绝大多数品种在“全国计算机零售图书排行榜”同品种排行中名列前茅
◆截至目 前该大系累计销售超过55万册
◆该大系已成为近年来清华社计算机专业基础类零售图书畅销的品牌之一
“软件开发视频大讲堂”系列作为清华社“视频大讲堂”大系的子系列之一，继承和创新了清华社“视频大讲堂”大系的编写模式、写作风格和优良品质。本书突出了以下内容：
◆总长总时长30小时同步视频演示讲解，可反复观摩，让学习更为快捷、高效
◆881个典型实例，通过实例学习更深入，更有趣，更有动力
◆371道面试真题，了解工作实例及面试问题，更好适应企业需求
◆616项能力测试题目，检测是否过关，了解学习之不足。
◆根据全国计算机零售图书排行榜，本书已经连续8月C语言类全国零售排行前2名
“软件开发视频大讲堂”系列作为清华社“视频大讲堂”大系的子系列之一，执着于专业，精细于品质：
◆集基础知识、核心技能、高级应用、项目案例于一体
◆好学、好用、高效
内容简介
《C语言从入门到精通（第2版）》从初学者的角度出发，以通俗易懂的语言，丰富多彩的实例，详细介绍了使用C语言进行程序开发应该掌握的各方面知识。全书共分17章，包括C语言概述、算法、数据类型、运算符与表达式、常用的数据输入/输出函数、选择结构程序设计、循环控制、数组、函数、指针、结构体和共用体、位运算、预处理、文件、存储管理、网络套接字编程和学生成绩管理系统。书中所有知识都结合具体实例进行介绍，涉及的程序代码给出了详细的注释，可以使读者轻松领会C语言程序开发的精髓，快速提高开发技能。另外，本书除了纸质内容之外，配书光盘中还给出了海量开发资源库，主要内容如下：
◆语音视频讲解：总时长30小时，共123段
◆实例资源库：881个实例及源码详细分析
◆模块资源库：15个经典模块开发过程完整展现
◆项目案例资源库：15个企业项目开发过程完整展现
◆测试题库系统：616道能力测试题目
◆面试资源库：371个企业面试真题
◆PPT电子教案
本书适合作为软件开发入门者的自学用书，也适合作为高等院校相关专业的教学参考书，也可供开发人员查阅、参考。
作者简介
明日科技是一家软件开发和教育为主的高科技公司，开发的系统有长春公交系统、天气预报系统，矿山瓦斯报警系统等。开发的图书有《软件开发视频大讲堂》《软件开发1200例》《软件工程师开发大系》等多个系列。
图书目录
第1篇 基 础 知 识
第1章 C语言概述
视频讲解：29分钟
1.1 C语言的发展史
1.1.1 程序语言简述
1.1.2 C语言的历史
1.2 C语言的特点
1.3 一个简单的C程序
1.4 一个完整的C程序
1.5 C语言程序的格式
1.6 开发环境
1.6.1 Turbo C 2.0
1.6.2 Visual C++ 1.0
1.7 小结
第2章 算法
视频讲解：22分钟
2.1 算法的基本概念
2.1.1 算法的特性
2.1.2 算法的优劣
2.2 算法的描述
2.2.1 自然语言
2.2.2 流程图
2.2.3 N-S流程图
2.3 小结
第3章 数据类型
视频讲解：39分钟
3.1 编程规范
3.2 关键字
3.3 标识符
3.4 数据类型
3.5 常量
3.5.1 整型常量
3.5.2 实型常量
3.5.3 字符型常量
3.5.4 转义字符
3.5.5 符号常量
3.6 变量
3.6.1 整型变量
3.6.2 实型变量
3.6.3 字符型变量
3.7 变量的存储类别
3.7.1 动态存储与静态存储
3.7.2 auto变量
3.7.3 static变量
3.7.4 register变量
3.7.5 extern变量
3.8 混合运算
3.9 小结
3.10 实践与练习
第4章 运算符与表达式
视频讲解：29分钟
4.1 表达式
4.2 赋值运算符与赋值表达式
4.2.1 变量赋初值
4.2.2自动类型转换
4.2.3强制类型转换
4.3算术运算符与算术表达式
4.3.1 算术运算符
4.3.2 算术表达式
4.3.3 优先级与结合性
4.3.4 自增/自减运算符
4.4关系运算符与关系表达式
4.4.1 关系运算符
4.4.2 关系表达式
4.4.3 优先级与结合性
4.5逻辑运算符与逻辑表达式
4.5.1 逻辑运算符
4.5.2 逻辑表达式
4.5.3 优先级与结合性
4.6 位逻辑运算符与位逻辑表达式
4.6.1 位逻辑运算符
4.6.2 位逻辑表达式
4.7逗号运算符与逗号表达式
4.8复合赋值运算符
4.9 小结
4.10 实践与练习
第5章 常用的数据输入/输出函数
视频讲解：40分钟
5.1 语句
5.2 字符数据输入/输出
5.2.1 字符数据输出
5.2.2 字符数据输入
5.3 字符串输入/输出
5.3.1 字符串输出函数
5.3.2 字符串输入函数
5.4 格式输出函数
5.5 格式输入函数
5.6 顺序程序设计应用
5.7 小结
5.8 实践与练习
第6章 选择结构程序设计
视频讲解：44分钟
6.1 if语句
6.2 if语句的基本形式
6.2.1 if语句形式
6.2.2 if…else语句形式
6.2.3 else if语句形式
6.3 if的嵌套形式
6.4条件运算符
6.5 switch语句
6.5.1 switch语句的基本形式
6.5.2 多路开关模式的switch语句
6.6 if…else语句和switch语句的区别
6.7 选择结构程序应用
6.8 小结
6.9 实践与练习
第7章 循环控制
视频讲解：41分钟
7.1 循环语句
7.2 while语句
7.3 do-while语句
7.4 for语句
7.4.1 for语句使用
7.4.2 for循环的变体
7.4.3 for语句中的逗号应用
7.5 种循环语句的比较
7.6 循环嵌套
7.6.1 循环嵌套的结构
7.6.2 循环嵌套实例
7.7 转移语句
7.7.1goto语句
7.7.2break语句
7.7.3 continue语句
7.8 小结
7.9 实践与练习
第2篇 核 心 技 术
第8章 数组
视频讲解：1小时7分钟
8.1 一维数组
8.1.1 一维数组的定义和引用
8.1.2 一维数组初始化
8.1.3 一维数组应用
8.2 二维数组
8.2.1 二维数组的定义和引用
8.2.2 二维数组初始化
8.2.3 二维数组应用
8.3 字符数组
8.3.1 字符数组的定义和引用
8.3.2 字符数组初始化
8.3.3 字符数组的结束标志
8.3.4 字符数组的输入和输出
8.3.5 字符数组应用
8.4 多维数组
8.5 数组的排序算法
8.5.1 选择法排序
8.5.2 冒泡法排序
8.5.3 交换法排序
8.5.4 插入法排序
8.5.5 折半法排序
8.5.6 排序算法的比较
8.6 字符串处理函数
8.6.1 字符串复制
8.6.2 字符串连接
8.6.3 字符串比较
8.6.4 字符串大小写转换
8.6.5 获得字符串长度
8.7 数组应用
8.7.1 反转输出字符串
8.7.2 输出系统日期和时间
8.7.3 字符串的加密和解密
8.8 小结
8.9 实践与练习
第9章 函数
视频讲解：55分钟
9.1 函数概述
9.2 函数的定义
9.2.1 函数定义的形式
9.2.2 定义与声明
9.3 返回语句
9.3.1 从函数返回
9.3.2 返回值
9.4 函数参数
9.4.1 形式参数与实际参数
9.4.2 数组作函数参数
9.4.3main函数的参数
9.5 函数的调用
9.5.1 函数的调用方式
9.5.2 嵌套调用
9.5.3 递归调用
9.6 内部函数和外部函数
9.6.1 内部函数
9.6.2 外部函数
9.7 局部变量和全局变量
9.7.1 局部变量
9.7.2 全局变量
9.8 函数应用
9.9 小结
9.10 实践与练习
第10章 指针
视频讲解：1小时2分钟
10.1 指针相关概念
10.1.1 地址与指针
10.1.2 变量与指针
10.1.3 指针变量
10.1.4 指针自加自减运算
10.2 数组与指针
10.2.1 一维数组与指针
10.2.2 二维数组与指针
10.2.3 字符串与指针
10.2.4 字符串数组
10.3 指向指针的指针
10.4 指针变量作函数参数
10.5 返回指针值的函数
10.6 指针数组作main函数的参数
10.7 小结
10.8 实践与练习
第3篇 高 级 应 用
第11章 结构体和共用体
视频讲解：40分钟
11.1 结构体
11.1.1结构体类型的概念
11.1.2 结构体变量的定义
11.1.3 结构体变量的引用
11.1.4 结构体类型的初始化
11.2 结构体数组
11.2.1 定义结构体数组
11.2.2 初始化结构体数组
11.3 结构体指针
11.3.1 指向结构体变量的指针
11.3.2 指向结构体数组的指针
11.3.3 结构体作为函数参数
11.4 包含结构的结构
11.5 链表
11.5.1 链表概述
11.5.2 创建动态链表
11.5.3 输出链表
11.6 链表相关操作
11.6.1 链表的插入操作
11.6.2 链表的删除操作
11.7 共用体
11.7.1 共用体的概念
11.7.2 共用体变量的引用
11.7.3 共用体变量的初始化
11.7.4 共用体类型的数据特点
11.8 枚举类型
11.9 小结
11.10 实践与练习
第12章 位运算
视频讲解：35分钟
12.1 位与字节
12.2 位运算操作符
12.2.1 “与”运算符
12.2.2 “或”运算符
12.2.3 “取反”运算符
12.2.4 “异或”运算符
12.2.5 “左移”运算符
12.2.6 “右移”运算符
12.3 循环移位
12.4 位段
12.4.1 位段的概念与定义
12.4.2 位段相关说明
12.5 小结
12.6 实践与练习
第13章 预处理
视频讲解：39分钟
13.1 宏定义
13.1.1 不带参数的宏定义
13.1.2 带参数的宏定义
13.2 #include指令
13.3 条件编译
13.3.1 #if命令
13.3.2 #ifdef及#ifndef命令
13.3.3 #undef命令
13.3.4 #line命令
13.3.5 #pragma命令
13.4 小结
13.5 实践与练习
第14章 文件
视频讲解：55分钟
14.1 文件概述
14.2 文件基本操作
14.2.1 文件指针
14.2.2 文件的打开
14.2.3 文件的关闭
14.3 文件的读写
14.3.1 fputc函数
14.3.2 fgetc函数
14.3.3 fputs函数
14.3.4 fgets函数
14.3.5 fprintf函数
14.3.6 fscanf函数
14.3.7 fread和fwrite函数
14.4 文件的定位
14.4.1 fseek函数
14.4.2 rewind函数
14.4.3 ftell函数
14.5 小结
14.6 实践与练习
第15章 存储管理
视频讲解：22分钟
15.1 内存组织方式
15.1.1 内存的组织方式
15.1.2 堆与栈
15.2 动态管理
15.2.1malloc函数
15.2.2 calloc函数
15.2.3realloc函数
15.2.4 free函数
15.3 内存丢失
15.4 小结
15.5 实践与练习
第16章 网络套接字编程
视频讲解：39分钟
16.1 计算机网络基础
16.1.1 IP地址
16.1.2 OSI七层参考模型
16.1.3 地址解析
16.1.4 域名系统
16.1.5TCP/IP协议
16.1.6 端口
16.1.7 套接字的引入
16.1.8 网络字节顺序
16.2 套接字概述
16.2.1 套接字概述
16.2.2 TCP的套接字的socket编程
16.2.3 UDP的套接字的socket编程
16.3 套接字函数 1
16.3.1 套接字函数介绍 1
16.3.2 基于TCP的网络聊天程序
16.4 小结
16.5 实践与练习
第4篇 项 目 实 战
第17章 学生成绩管理系统
视频讲解：40分钟
17.1 需求分析
17.2 系统设计
17.3 功能设计
17.3.1 功能选择界面
17.3.2 录入学生成绩信息
17.3.3 查询学生成绩信息
17.3.4 删除学生成绩信息
17.3.5 修改学生成绩信息
17.3.6 插入学生成绩信息
17.3.7 统计学生人数
17.4 小结
附录A ASCII表