C语言程序设计教程（第3版）

2014年机械工业出版社出版的图书
《C语言程序设计教程（第3版）》是由朱鸣华、刘旭麟、杨微等编著，机械工业出版社于2014年1月出版的普通高等教育“十一五”国家级规划教材、高等院校精品课程系列教材。该书适合作为高等院校理工科非计算机专业的“C语言程序设计”课程教材，也可供工程技术人员参考。
该书共12章，介绍利用C语言进行程序设计的基本知识，每章配有一定量的习题。
成书过程
修订情况
为了适应计算机科学技术的发展，更好地满足教学的实际需要，编者征求选用该书作为教材的各院校的意见，在第2版的基础上对全书进行了修订和调整，主要修订内容如下：
兼顾VC++6.0的实险环境，对教材中文字叙述进行完善和修改。
增加了程序中的注释，修改了程序中的格式。
增加了部分章节中的课后练习题目以及趣味程序设计实例。
为满足学时的安件和需要，删除了第13章“数据结构基础”内容。
石河子大学的齐全老师参与了该版的审校工作，并提出了建议。
出版工作
2014年1月，《C语言程序设计教程（第3版）》由机械工业出版社出版发行。
出版工作人员责任编辑	迟振春
内容简介
该书介绍利用C语言进行程序设计的基本知识。全书共12章，较为详细介绍了C语言的基本概念、算法与程序设计基础、数据的输入和输出、选择结构、循环结构、数组、函数、指针、结构体与共用体、文件、面向对象程序设计与C++基础等内容。此外，该教材每章还配有一定量的习题。
教材目录
第3版前言	第2版前言	第1版前言	教学建议	第1章 C语言概述	1	1.1 C语言发展简史 1	1.2 C语言的特点 2	1.3 简单C语言程序举例 2	1.4 C语言程序的组成与结构 3	1.5 C语言程序的开发步骤 5	小结 6	习题 6	第2章 算法与程序设计基础	7	2.1 算法概述 7	2.1.1 算法的概念 7	2.1.2 算法的特征 7	2.2 算法的常用表示方法 8	2.2.1 自然语言 8	2.2.2 流程图 8	2.2.3 N-S流程图 9	2.3 程序设计典型算法 11	2.4 结构化程序设计方法 12	小结 12	习题 13	第3章 数据类型、运算符与表达式	14	3.1 C语言的基本符号 14	3.1.1 标识符 14	3.1.2 常量 14	3.1.3 变量 15	3.1.4 关键字 16	3.2 C 语言的数据类型 16	3.2.1 整型数据 16	3.2.2 实型数据 19	3.2.3 字符型数据 20	3.3 运算符和表达式 22	3.3.1 算术运算符和算术表达式 23	3.3.2 赋值运算符和赋值表达式 23	3.3.3 逗号运算符和逗号表达式 25	3.4 数据类型转换 25	3.4.1 不同数据类型的数据间的混合运算 25	3.4.2 强制类型转换 26	3.5 自增运算和自减运算 27	3.6 位运算 28	小结 30	习题 31	第4章 数据的输入和输出	33	4.1 数据的输出 33	4.1.1 格式输出函数printf 33	4.1.2 字符输出函数putchar 36	4.2 数据的输入 37	4.2.1 格式输入函数scanf 37	4.2.2 字符输入函数getchar 39	4.3 应用举例 41	小结 42	习题 42	第5章 选择结构	45	5.1 关系运算符和关系表达式 45	5.1.1 关系运算符 45	5.1.2 关系表达式 45	5.2 逻辑运算符和逻辑表达式 46	5.2.1 逻辑运算符 46	5.2.2 逻辑表达式 47	5.3 选择语句 47	5.3.1 if语句 48	5.3.2 if语句的嵌套 50	5.3.3 switch语句 51	5.4 条件运算符和条件表达式 53	5.5 应用举例 54	小结 56	习题 57	第6章 循环结构	60	6.1 goto语句与标号 60	6.2 while循环语句 61	6.3 do-while循环语句 62	6.4 for循环语句 64	6.5 三种循环语句的比较 66	6.6 循环嵌套 66	6.7 break语句、continue语句和空语句 69	6.7.1 break语句 69	6.7.2 continue语句 69	6.7.3 空语句 70	6.8 应用举例 71	小结 75	习题 76	第7章 数组	82	7.1 一维数组 82	7.1.1 一维数组的定义和引用 82	7.1.2 一维数组的初始化 83	7.1.3 一维数组程序举例 84	7.2 二维数组 86	7.2.1 二维数组的定义和引用 86	7.2.2 二维数组的初始化 87	7.2.3 二维数组程序举例 87	7.3 字符数组 90	7.3.1 字符数组的定义 90	7.3.2 字符数组的初始化 91	7.3.3 字符数组的引用 91	7.3.4 字符数组与字符串 92	7.3.5 字符数组的输入和输出 92	7.3.6 字符串处理函数 93	7.3.7 字符数组应用举例 95	小结 98	习题 98	第8章 函数	106	8.1 函数的基本概念 106	8.1.1 函数的概念 106	8.1.2 函数的定义 107	8.1.3 函数的调用 108	8.1.4 函数参数的传递方式 110	8.1.5 函数的返回值 111	8.1.6 函数的原型声明 113	8.2 数组作为函数参数 114	8.2.1 一维数组作为函数参数 114	8.2.2 二维数组作为函数参数 115	8.2.3 数组作为函数参数的函数调用方式 115	8.3 函数的嵌套调用和递归调用 117	8.3.1 函数的嵌套调用 117	8.3.2 函数的递归调用 119	8.4 变量的作用域和存储方法 122	8.4.1 局部变量和全局变量 122	8.4.2 变量的存储方法 125	8.5 内部函数和外部函数 128	8.6 编译预处理 129	8.6.1 宏定义 129	8.6.2 文件包含 131	8.6.3 条件编译 132	8.7 函数应用举例 133	小结 138	习题 139	第9章 指针	146	9.1 指针的基本概念及指针变量的定义 146	9.1.1 指针的基本概念 146	9.1.2 指针变量的定义方法 146	9.2 指针运算 147	9.2.1 赋值运算 147	9.2.2 取地址运算 147	9.2.3 取内容运算 148	9.2.4 指针表达式与整数相加、减运算 149	9.2.5 自增、自减运算 149	9.2.6 同类指针相减运算 150	9.2.7 关系运算 151	9.2.8 强制类型转换运算 151	9.2.9 空指针 151	9.3 指针变量与一维数组 152	9.3.1 指针变量与一维数组之间的联系和区别 152	9.3.2 字符串指针与字符串 153	9.4 指针与函数 154	9.4.1 指针作为函数参数 154	9.4.2 返回指针的函数 157	9.4.3 函数的指针和指向函数的指针变量 159	9.5 指针与二维数组 160	9.5.1 二维数组的结构 160	9.5.2 二维数组元素及其地址 161	9.5.3 指针数组 162	9.5.4 指针与字符串数组 163	9.5.5 指向数组的指针变量 165	9.6 二级指针 166	9.7 内存空间的动态分配 168	9.7.1 指向void的指针 168	9.7.2 常用内存管理函数 169	9.8 main函数的参数 170	9.8.1 命令行参数 170	9.8.2 指针数组作为main函数的形参 170	9.9 应用举例 171	小结 175	习题 176	第10章 结构体与共用体	183	10.1 结构体类型与结构体变量 183	10.1.1 结构体类型的定义 183	10.1.2 结构体变量的定义 184	10.1.3 结构体变量的引用 185	10.1.4 结构体变量的初始化 186	10.2 结构体数组 186	10.2.1 结构体数组的定义 186	10.2.2 结构体数组的引用 187	10.2.3 结构体数组的初始化 187	10.2.4 应用举例 188	10.3 结构体指针 189	10.3.1 结构体指针变量的定义 189	10.3.2 结构体数组指针 190	10.4 结构体类型数据在函数间的传递 191	10.4.1 结构体变量作为函数参数 191	10.4.2 结构体指针变量作为函数参数 192	10.4.3 结构体数组作为函数参数 193	10.4.4 应用举例 193	10.5 共用体 196	10.5.1 共用体类型的定义 196	10.5.2 共用体变量的定义 196	10.5.3 共用体变量的引用和初始化 197	10.6 枚举类型 200	10.6.1 枚举类型的说明 200	10.6.2 枚举型变量的定义 200	10.7 用typedef定义类型 202	10.8 链表及其简单操作 203	10.8.1 链表的概念 203	10.8.2 链表的基本操作 204	小结 206	习题 207	第11章 文件	211	11.1 文件概述 211	11.1.1 文件的概念 211	11.1.2 文件的分类 211	11.1.3 文件缓冲区 212	11.1.4 文件类型指针 212	11.2 文件的打开与关闭 213	11.2.1 打开文件 213	11.2.2 关闭文件 214	11.3 文件的顺序读写 214	11.3.1 格式化读写函数fscanf和fprintf 214	11.3.2 字符方式读写函数fgetc和fputc 214	11.3.3 数据块读写函数fread和fwrite 215	11.3.4 字符串读写函数fgets和fputs 216	11.4 文件的定位与随机读写 216	11.4.1 文件指针重定位函数rewind 216	11.4.2 随机读写函数fseek 217	11.4.3 其他相关函数 219	小结 221	习题 221	第12章 面向对象程序设计与C++基础	228	12.1 面向对象程序设计的基本概念 228	12.2 面向对象程序设计语言C++简介 230	12.2.1 C++程序结构 230	12.2.2 C++对C的补充 232	12.2.3 C++中的类 234	12.2.4 C++中的构造函数和析构函数 236	12.2.5 C++中的继承 238	12.2.6 C++中的多态性、函数重载和虚函数 240	小结 241	习题 242	习题参考答案	244	附录A C语言的关键字	248	附录B 双目算术运算中两边运算量类型转换规律	249	附录C 运算符的优先级和结合性	250	附录D 常用字符与ASCII码对照表	251	附录E 常用库函数	253	参考文献	257
（注：目录排版顺序为从左列至右列）
教学资源
配套教材
《C语言程序设计教程（第3版）》有配套使用的习题解析与上机指导——《C语言程序设计习题解析与上机指导（第2版）》。
书名	C语言程序设计习题解析与上机指导（第2版）
作者	罗晓芳、李慧、孙涛、孙大为、朱鸣华、杨微
出版社	机械工业出版社
出版时间	2014.12
ISBN	978-7-111-44993-5
教材特色
该书在内容编排上体现出易学的特点，增加趣味程序设计实例以激发学生学习的兴趣；在文字叙述上条理清晰，注重程序书写的规范，使程序更容易理解；在教材体系上重视理论与实践相结合，以便于读者低起点、高效率地掌握C语言的编程技巧。
作者简介
朱鸣华，女，大连理工大学计算机基础教学实验中心副主任、教授、硕士生导师，长期从事计算机课程的教学、教学改革与研究及教材建设等方面的工作。
刘旭麟（1951—），男，大连理工大学副教授，主要研究方向为新材料研制、金属凝固组织控制、铸件质量控制、金属材料防腐蚀。
杨微，大连理工大学副教授、计算机基础教研室副主任，主要研究计算机基础教学方式、方法以及计算机在工程中的应用。