标题：C语言从入门到精通（第2版）
图书信息
作者：明日科技 
图书详细信息：ISBN：9787302287520定价：49.8元印次：2-1装帧：平装印刷日期：2012-7-3
图书简介
《C语言从入门到精通（第2版）》从初学者的角度出发，以通俗易懂的语言，丰富多彩的实例，详细介绍了使用C语言进行程序开发应该掌握的各方面知识。全书共分17章，包括C语言概述、算法、数据类型、运算符与表达式、常用的数据输入/输出函数、选择结构程序设计、循环控制、数组、函数、指针、结构体和共用体、位运算、预处理、文件、存储管理、网络套接字编程和学生成绩管理系统。书中所有知识都结合具体实例进行介绍，涉及的程序代码给出了详细的注释，可以使读者轻松领会C语言程序开发的精髓，快速提高开发技能。另外，本书除了纸质内容之外，配书光盘中还给出了海量开发资源库，主要内容如下： 语音视频讲解：总时长30小时，共123段  实例资源库：881个实例及源码详细分析 模块资源库：15个经典模块开发过程完整展现  项目案例资源库：15个企业项目开发过程完整展现 测试题库系统：616道能力测试题目  面试资源库：371个企业面试真题 PPT电子教案本书适合作为软件开发入门者的自学用书，也适合作为高等院校相关专业的教学参考书，也可供开发人员查阅、参考。
图书前言
丛书说明：“软件开发视频大讲堂”（第1版）于2008年8月出版以来，因其编写细腻，易学实用，配备全程视频等，在软件开发类图书市场上产生了很大反响，绝大部分品种在全国软件开发零售图书排行榜中名列前茅，2009年多个品种被评为“全国优秀畅销书”。 “软件开发视频大讲堂”丛书（第2版）于2010年8月出版，自出版至今，绝大部分品种在全国软件开发类零售图书排行榜中，依然持续名列前茅。丛书迄今累计已销售近40万册，被百余所高校计算机相关专业、软件学院选为教学参考书，在众多的软件开发类图书中成为一支最耀眼的品牌。　“软件开发视频大讲堂”丛书（第3版）在前两版的基础上，增删了品种，修正了疏漏，重新录制了视频，提供了从入门学习，到实例应用，模块开发，项目开发，能力测试，面试等各个阶段的海量开发资源库。为了方便教学，还提供了教学课件PPT，读者可登录清华大学出版社网站直接下载。　C语言是Combined Language（组合语言）的简称，它作为一种计算机设计语言，具有高级语言和汇编语言的特点，受到广大编程人员的喜爱。C语言的应用非常广泛，既可以用于编写系统应用程序，也可以作为编写应用程序的设计语言，还可以具体应用到有关单片机以及嵌入式系统的开发。这就是为什么大多数学习者学习编写程序都选择C语言的原因。本书内容　本书提供了从入门到编程高手所必备的各类知识，共分4篇，大体结构如下图所示。
第1篇：基础知识。本篇讲解了C语言基础知识，只有具备扎实的基础知识才能更快地掌握更高级的技术内容。通过对C语言的历史和特性、选择C语言的开发环境、算法的内容、C语言的数据类型、运算符与表达式、常用的数据输入/输出函数、选择结构程序设计和循环控制等内容的介绍，结合流程图和实例，并通过视频的指导讲解，可帮助读者为以后编程奠定坚实的基础。　第2篇：核心技术。本篇介绍了C语言的数组、函数和指针这三大部分内容，并将前面所学的基础内容融入其中，是更高级的程序设计内容。读者学习完这一部分，应能够编写一些简单的C语言应用程序。　第3篇：高级应用。本篇介绍了结构体和共用体、位运算、预处理、文件、存储管理和网络套接字编程的内容。读者学习完这一部分，就能够设计较大的程序，并且涉及的范围更广。　第4篇：项目实战。本篇通过一个大型的学生成绩管理系统，运用软件工程的设计思想，介绍如何进行软件项目的开发。书中按照“编写需求分析→系统设计→功能设计→创建项目→实现项目模块功能→运行项目”的步骤，带领读者一步一步地亲身体验开发项目的全过程。本书特点* 由浅入深，循序渐进。本书以初中级程序员为对象，先从C语言基础学起，再学习C语言的程序结构，然后学习C语言的高级应用，最后学习开发一个完整的项目。讲解步骤详尽，版式新颖，并且在程序中会给出相应的实例以便于读者理解所讲解的知识。在讲解实例时分步骤分析，使读者在阅读时一目了然，从而快速把握书中内容。* 语音视频，讲解详尽。书中每一章节均提供声图并茂的视频教学录像，读者可以根据书中提供的录像位置在光盘中找到相应的文件。这些录像能够引导初学者快速入门，感受编程的快乐和成就感，增强进一步学习的信心，从而快速成为编程高手。* 实例典型，轻松易学。通过实例学习是最好的学习方式，本书通过“一个知识点、一个例子、一个结果、一段评析、一个综合应用”的模式，透彻详尽地讲述了实际开发中所需的各类知识。另外，为了便于读者阅读程序代码，快速学习编程技能，书中几乎为每行代码都提供了注释。* 精彩栏目，贴心提醒。本书根据需要在各章使用了很多“注意”、“说明”、“技巧”等小栏目，让读者可以在学习过程中更轻松地理解相关知识点及概念，更快地掌握个别技术的应用技巧。* 应用实践，随时练习。书中几乎每章都提供了“实践与练习”，让读者能够通过对问题的解答重新回顾、熟悉所学的知识，举一反三，为进一步学习做好充分的准备。读者对象? 初学编程的自学者 ? 编程爱好者? 大中专院校的老师和学生 ? 相关培训机构的老师和学员? 毕业设计的学生 ? 初中级程序开发人员? 程序测试及维护人员 ? 参加实习的“菜鸟”级程序员致读者　本书由C程序开发团队组织编写，主要编写人员有赵永发、高文财、高春艳、王小科、寇长梅、赵会东、王国辉、陈丹丹、李伟、刘欣、李慧、潘凯华、李继业、刘淇、王双、赵旭阳、陈媛、顾彦玲、陈英、刘莉莉、房大伟、刘云峰、吕双、顾丽丽、孟范胜、董大永、李继业、尹强、张磊、王军、刘彬彬、卢瀚、安剑、巩建华、刘锐宁、李伟明、梁水、李鑫、孙秀梅、李钟尉等。在编写本书的过程中，我们始终本着科学、严谨的态度，力求精益求精，但错误、疏漏之处在所难免，敬请广大读者批评指正。　感谢您购买本书，希望本书能成为您编程路上的领航者。　“零门槛”编程，一切皆有可能。　祝读书快乐！　　　　编 者
图书目录
第1篇 基 础 知 识
第1章 C语言概述 3 视频讲解：29分钟1.1 C语言的发展史 41.1.1 程序语言简述 41.1.2 C语言的历史 41.2 C语言的特点 51.3 一个简单的C程序 61.4 一个完整的C程序 81.5 C语言程序的格式 121.6 开发环境 131.6.1 Turbo C 2.0 131.6.2 Visual C++ 6.0 171.7 小结 22第2章 算法 23 视频讲解：22分钟2.1 算法的基本概念 242.1.1 算法的特性 242.1.2 算法的优劣 252.2 算法的描述 252.2.1 自然语言 252.2.2 流程图 262.2.3 N-S流程图 292.3 小结 32第3章 数据类型 33 视频讲解：39分钟3.1 编程规范 343.2 关键字 353.3 标识符 353.4 数据类型 363.5 常量 373.5.1 整型常量 383.5.2 实型常量 403.5.3 字符型常量 413.5.4 转义字符 433.5.5 符号常量 443.6 变量 453.6.1 整型变量 453.6.2 实型变量 473.6.3 字符型变量 503.7 变量的存储类别 513.7.1 动态存储与静态存储 513.7.2 auto变量 523.7.3 static变量 523.7.4 register变量 533.7.5 extern变量 543.8 混合运算 553.9 小结 563.10 实践与练习 56第4章 运算符与表达式 57 视频讲解：29分钟4.1 表达式 584.2 赋值运算符与赋值表达式 604.2.1 变量赋初值 604.2.2 自动类型转换 624.2.3 强制类型转换 624.3 算术运算符与算术表达式 634.3.1 算术运算符 634.3.2 算术表达式 644.3.3 优先级与结合性 654.3.4 自增/自减运算符 674.4 关系运算符与关系表达式 694.4.1 关系运算符 694.4.2 关系表达式 694.4.3 优先级与结合性 704.5 逻辑运算符与逻辑表达式 714.5.1 逻辑运算符 724.5.2 逻辑表达式 724.5.3 优先级与结合性 724.6 位逻辑运算符与位逻辑表达式 734.6.1 位逻辑运算符 744.6.2 位逻辑表达式 744.7 逗号运算符与逗号表达式 744.8 复合赋值运算符 764.9 小结 774.10 实践与练习 77第5章 常用的数据输入/输出函数 79 视频讲解：40分钟5.1 语句 805.2 字符数据输入/输出 805.2.1 字符数据输出 805.2.2 字符数据输入 815.3 字符串输入/输出 835.3.1 字符串输出函数 835.3.2 字符串输入函数 855.4 格式输出函数 855.5 格式输入函数 885.6 顺序程序设计应用 925.7 小结 935.8 实践与练习 94第6章 选择结构程序设计 95 视频讲解：44分钟6.1 if语句 966.2 if语句的基本形式 966.2.1 if语句形式 966.2.2 if…else语句形式 996.2.3 else if语句形式 1036.3 if的嵌套形式 1066.4 条件运算符 1096.5 switch语句 1106.5.1 switch语句的基本形式 1116.5.2 多路开关模式的switch语句 1146.6 if…else语句和switch语句的区别 1166.7 选择结构程序应用 1186.8 小结 1206.9 实践与练习 120第7章 循环控制 121 视频讲解：41分钟7.1 循环语句 1227.2 while语句 1227.3 do-while语句 1257.4 for语句 1277.4.1 for语句使用 1277.4.2 for循环的变体 1307.4.3 for语句中的逗号应用 1327.5 3种循环语句的比较 1337.6 循环嵌套 1347.6.1 循环嵌套的结构 1347.6.2 循环嵌套实例 1357.7 转移语句 1377.7.1 goto语句 1377.7.2 break语句 1397.7.3 continue语句 1407.8 小结 1417.9 实践与练习 141　
第2篇 核 心 技 术
第8章 数组 145 视频讲解：1小时7分钟8.1 一维数组 1468.1.1 一维数组的定义和引用 1468.1.2 一维数组初始化 1488.1.3 一维数组应用 1508.2 二维数组 1518.2.1 二维数组的定义和引用 1518.2.2 二维数组初始化 1528.2.3 二维数组应用 1558.3 字符数组 1568.3.1 字符数组的定义和引用 1578.3.2 字符数组初始化 1578.3.3 字符数组的结束标志 1598.3.4 字符数组的输入和输出 1608.3.5 字符数组应用 1618.4 多维数组 1628.5 数组的排序算法 1638.5.1 选择法排序 1638.5.2 冒泡法排序 1658.5.3 交换法排序 1678.5.4 插入法排序 1698.5.5 折半法排序 1718.5.6 排序算法的比较 1748.6 字符串处理函数 1748.6.1 字符串复制 1748.6.2 字符串连接 1768.6.3 字符串比较 1778.6.4 字符串大小写转换 1798.6.5 获得字符串长度 1808.7 数组应用 1818.7.1 反转输出字符串 1818.7.2 输出系统日期和时间 1838.7.3 字符串的加密和解密 1848.8 小结 1868.9 实践与练习 186第9章 函数 187 视频讲解：55分钟9.1 函数概述 1889.2 函数的定义 1909.2.1 函数定义的形式 1919.2.2 定义与声明 1929.3 返回语句 1949.3.1 从函数返回 1949.3.2 返回值 1959.4 函数参数 1979.4.1 形式参数与实际参数 1979.4.2 数组作函数参数 1999.4.3 main函数的参数 2059.5 函数的调用 2069.5.1 函数的调用方式 2069.5.2 嵌套调用 2099.5.3 递归调用 2119.6 内部函数和外部函数 2149.6.1 内部函数 2149.6.2 外部函数 2159.7 局部变量和全局变量 2169.7.1 局部变量 2179.7.2 全局变量 2209.8 函数应用 2219.9 小结 2279.10 实践与练习 228第10章 指针 229 视频讲解：1小时2分钟10.1 指针相关概念 23010.1.1 地址与指针 23010.1.2 变量与指针 23110.1.3 指针变量 23110.1.4 指针自加自减运算 23510.2 数组与指针 23710.2.1 一维数组与指针 23710.2.2 二维数组与指针 24110.2.3 字符串与指针 24410.2.4 字符串数组 24610.3 指向指针的指针 24710.4 指针变量作函数参数 25010.5 返回指针值的函数 25810.6 指针数组作main函数的参数 26010.7 小结 26210.8 实践与练习 262　第3篇 高 级 应 用
第11章 结构体和共用体 265 视频讲解：40分钟11.1 结构体 26611.1.1 结构体类型的概念 26611.1.2 结构体变量的定义 26711.1.3 结构体变量的引用 26911.1.4 结构体类型的初始化 27111.2 结构体数组 27311.2.1 定义结构体数组 27311.2.2 初始化结构体数组 27511.3 结构体指针 27711.3.1 指向结构体变量的指针 27711.3.2 指向结构体数组的指针 28011.3.3 结构体作为函数参数 28211.4 包含结构的结构 28411.5 链表 28611.5.1 链表概述 28611.5.2 创建动态链表 28711.5.3 输出链表 29011.6 链表相关操作 29211.6.1 链表的插入操作 29211.6.2 链表的删除操作 29411.7 共用体 29811.7.1 共用体的概念 29811.7.2 共用体变量的引用 29911.7.3 共用体变量的初始化 30011.7.4 共用体类型的数据特点 30111.8 枚举类型 30111.9 小结 30211.10 实践与练习 303第12章 位运算 305 视频讲解：35分钟12.1 位与字节 30612.2 位运算操作符 30612.2.1 “与”运算符 30612.2.2 “或”运算符 30812.2.3 “取反”运算符 30912.2.4 “异或”运算符 31012.2.5 “左移”运算符 31212.2.6 “右移”运算符 31312.3 循环移位 31512.4 位段 31712.4.1 位段的概念与定义 31712.4.2 位段相关说明 31912.5 小结 32012.6 实践与练习 320第13章 预处理 321 视频讲解：39分钟13.1 宏定义 32213.1.1 不带参数的宏定义 32213.1.2 带参数的宏定义 32313.2 #include指令 32513.3 条件编译 32713.3.1 #if命令 32713.3.2 #ifdef及#ifndef命令 32913.3.3 #undef命令 33113.3.4 #line命令 33113.3.5 #pragma命令 33213.4 小结 33313.5 实践与练习 333第14章 文件 335 视频讲解：55分钟14.1 文件概述 33614.2 文件基本操作 33614.2.1 文件指针 33614.2.2 文件的打开 33714.2.3 文件的关闭 33814.3 文件的读写 33814.3.1 fputc函数 33814.3.2 fgetc函数 33914.3.3 fputs函数 34014.3.4 fgets函数 34114.3.5 fprintf函数 34214.3.6 fscanf函数 34314.3.7 fread和fwrite函数 34414.4 文件的定位 34614.4.1 fseek函数 34614.4.2 rewind函数 34814.4.3 ftell函数 34914.5 小结 35214.6 实践与练习 352第15章 存储管理 353 视频讲解：22分钟15.1 内存组织方式 35415.1.1 内存的组织方式 35415.1.2 堆与栈 354　15.2 动态管理 35615.2.1 malloc函数 35615.2.2 calloc函数 35715.2.3 realloc函数 35815.2.4 free函数 35915.3 内存丢失 36015.4 小结 36115.5 实践与练习 361第16章 网络套接字编程 363 视频讲解：39分钟16.1 计算机网络基础 36416.1.1 IP地址 36416.1.2 OSI七层参考模型 36416.1.3 地址解析 36516.1.4 域名系统 36616.1.5 TCP/IP协议 36616.1.6 端口 36816.1.7 套接字的引入 36816.1.8 网络字节顺序 36916.2 套接字概述 36916.2.1 套接字概述 36916.2.2 TCP的套接字的socket编程 36916.2.3 UDP的套接字的socket编程 37016.3 套接字函数 37116.3.1 套接字函数介绍 37116.3.2 基于TCP的网络聊天程序 37616.4 小结 38216.5 实践与练习 382
第4篇 项 目 实 战
第17章 学生成绩管理系统 385 视频讲解：40分钟17.1 需求分析 38617.2 系统设计 38617.3 功能设计 38717.3.1 功能选择界面 38717.3.2 录入学生成绩信息 38817.3.3 查询学生成绩信息 39117.3.4 删除学生成绩信息 39217.3.5 修改学生成绩信息 39317.3.6 插入学生成绩信息 39517.3.7 统计学生人数 39717.4 小结 397附录A ASCII表 399[1]