C语言程序设计教程(第四版)

C语言程序设计教程(第四版) 教材名称: C语言程序设计教程(第四版)
ISBN号: 978-7-89436-771-6 作者: 邱建华
字数: 560千字 规格: 16开
印制时间: 2020-08-01 出版日期: 2020-08-01
定价: 49.8 元 样章下载: C语言程序设计教程(第四版)—样章.pdf
购买地址:

1.教材特点
C语言是许多大学计算机及相关专业开设的一门重要的专业基础课,也是大多数学生学习的第一门程序设计类课程。C语言课程中,讲授语法只是一个方面,更重要的是培养学生的程序设计思想,这一目的的达成需要建立在大量编程实践基础之上。
本教材在编写之前调研了业界工程师对C语言编程人员的要求,在编写过程中,与工程师深入探讨每个知识点需要达到的深度,结合后续数据结构课程对编程能力的要求,编者希望读者在掌握C语言语法的基础上,不仅能够运用C语言编程解决实际问题,而且能够理解与之相关的原理,进而达到灵活应用。
本教材具备如下特点:
(1)切合业界需求,相关知识点不仅介绍了用法,还适当探究原理,使读者知其然,亦知其所以然;
(2)以CDIO教育理念撰写各章内容,各案例编写蕴含构思、设计、实现、运行实施的过程;
(3)对知识点的难度进行分层,将较复杂、难度较高、原理性较强的知识点放在“拓展知识”中,适合不同层次的读者学习;
(4)使用代码说话,全部代码可运行,代码解释透彻;
(5)覆盖C99标准95%以上的语法;
(6)案例选取贴近生活或有趣的实例,例如冰雹猜想、埃及分数等数学小常识;
(7)为适合不同层次读者,编程练习题也分为基础篇和进阶篇。
2.教材基本信息
(1)适用对象
本教材适用于计算机相关专业本科C语言系列课程和专科C语言系列课程的教学。本教材亦可作为非计算机专业C语言课程的教材及C语言零起点的读者的参考用书。读者学习本教材后,能够掌握C语言的基础语法,并利用所学到的C语言理论知识解决简单规模的程序设计。
(2)需要具备的知识和能力基础
学习本教材需要读者预先掌握计算机的基本概念,包括文件、文件夹、内存的概念及计算机的基本工作原理等,同时还需要读者掌握操作系统的基本操作,如创建文件夹、新建文件等。另外,为了对数据表示、指针、位运算等能更好地理解,读者应能初步理解计算机中数据的表示和存储及数制转换等知识。
本教材共分13章:第1章C语言概述、第2章数据类型、运算符和表达式、第3章顺序结构程序设计、第4章选择结构程序设计、第5章循环结构程序设计、第6章数组和指针、第7章函数、第8章编译预处理、第9章类型转换及内存管理、第10章结构和其他数据形式、第11章位运算、第12章文件,第13章三级项目实施。其中第1~5章由邱建华编写,第6~7章由刘振宇编写,第8~10章由周帅编写,第11~13章由卢田毅编写,最后由邱建华负责完成统稿。
3.教材基本结构与内容组织
本教材各章节内容的内在联系如图1所示。
图1各章节内在联系示意图
图1说明了本教材第1章是C语言开发的总体简介,是C程序开发的基础。第2章和第11章是C语言语法基础,由于位运算的特殊性,本教材将其放在第11章阐述。第3~5章是结构体程序设计的基础,也是C语言开发的基础。第6章和第7章是在3~4章的基础上进一步模块化程序和处理批量数据的方法,是C程序开发的进阶。第8章是程序预处理的必要内容。第12章文件可以固化C程序的处理结果。第9章是对第6章和第7章相关内容的深化理解,理解该章内容,有助于提升程序调试能力。第10章是各种复杂数据类型的处理,它在处理过程中需要之前的相关知识来支持,同时,也可以在处理结束后,将处理结果固化到文件中。
由于时间仓促和编者水平有限,教材中难免存在不妥或疏漏之处,敬请广大读者和专家不吝赐教。

第1章C语言概述4
项目导学1菜单显示5
1.1前导程序5
1.2相关术语6
1.2.1什么是计算机6
1.2.2什么是程序7
1.2.3什么是编译器8
1.3C语言发展简史及特点10
1.3.1C语言发展简史10
1.3.2C语言编译器与集成开发环境11
1.3.3C语言的特点和应用场合12
1.4C语言中的基本概念和程序结构13
1.4.1C语言中的基本概念13
1.4.2第1个程序15
1.4.3第2个程序17
1.4.4第3个程序19
1.5课后练习21
第2章数据类型、运算符和表达式23
2.1引导程序24
2.2二进制计量单位24
2.3数据类型25
2.3.1数据类型概述25
2.3.2C语言数据类型的分类26
2.3.3常量和变量27
2.3.4二进制补码和整数类型29
2.3.5浮点数类型38
2.3.6字符类型和字符串44
2.4运算符和表达式48
2.4.1运算符概述49
2.4.2表达式概述49
2.4.3算术运算符和算术表达式50
2.4.4赋值运算符和赋值表达式52
2.4.5自增自减运算符和自增自减表达式53
2.4.6左值和右值54
2.4.7sizeof运算符及其表达式55
2.4.8逗号运算符和逗号表达式56
2.4.9显式类型转换表达式57
2.4.10布尔类型57
2.5拓展知识59
2.6课后练习60
第3章顺序结构程序设计63
3.1结构化程序设计65
3.1.1程序控制结构的引入65
3.1.2什么是结构化程序设计66
3.1.3顺序结构69
3.2输入和输出函数69
3.2.1printf函数70
3.2.2scanf函数73
3.2.3getchar和putchar函数77
3.3拓展知识78
3.3.1格式说明符的可选项\[F|N|h|l\]78
3.3.2格式说明符的精度可选项\[.prec\]79
3.3.3格式说明符的可选项\[flags\]和\[width\]79
3.4课后练习81
第4章选择结构程序设计85
项目导学2移动拼图块86
4.1引导程序87
4.2关系运算符和关系表达式87
4.3逻辑运算符和逻辑表达式89
4.4if和if/else语句92
4.4.1if语句92
4.4.2“一条语句”的认定95
4.4.3if/else语句96
4.4.4if和if/else语句的嵌套97
4.4.5条件运算符和条件表达式100
4.5switch语句101
4.5.1switch语句的一般形式101
4.5.2使用break语句跳出switch语句103
4.6课后练习105
第5章循环结构程序设计112
项目导学3判定是否达到目标状态113
5.1引导程序113
5.2while循环语句114
5.3do/while循环语句117
5.4for循环语句121
5.5多重循环122
5.6循环结构中的跳转语句128
5.6.1break语句128
5.6.2continue语句129
5.7拓展知识132
5.7.1goto语句132
5.7.2选择结构语句结合goto语句形成循环语句134
5.8课后练习135
第6章数组和指针142
项目导学4逆序数计算144
6.1引导程序144
6.2数组的基本概念和操作146
6.2.1数组存储146
6.2.2数组的定义147
6.2.3数组元素的初始化148
6.2.4数组元素的访问148
6.2.5数组类型的字面量149
6.2.6数组应用举例150
6.3指针的基本概念和操作157
6.3.1指针引导程序158
6.3.2内存地址158
6.3.3指针类型159
6.3.4内存地址的字面常量及取地址运算160
6.3.5指针变量161
6.3.6间接访问运算符与间接访问表达式162
6.3.7内存地址的操作和运算165
6.3.8指针操作167
6.3.9const修饰指针169
6.4数组和指针的关系169
6.4.1数组的名字与下标运算170
6.4.2数组名和指针变量的异同172
6.4.3对数组名取地址175
6.4.4指针和数组字面量175
6.4.5指针数组和指向指针的指针176
6.5多维数组176
6.5.1多维数组的定义、初始化以及数组元素的访问176
6.5.2多维数组的名字与下标运算178
6.6字符数组和字符串180
6.6.1字符数组的初始化180
6.6.2字符数组和字符串的关系180
6.6.3字符串操作181
6.6.4字符串数组184
6.6.5指针和字符串字面常量185
6.7拓展知识187
6.7.1多维数组和数组指针187
6.7.2变长数组190
6.8课后练习192
第7章函数200
7.1引导程序201
7.2函数概述201
7.2.1一些术语202
7.2.2将函数看成黑盒204
7.2.3函数的作用204
7.3存储类207
7.3.1作用域和链接性207
7.3.2生命期209
7.3.3栈结构210
7.3.4存储类相关的关键字211
7.3.5存储类应用214
7.4函数的参数和返回值217
7.4.1参数传递217
7.4.2修改主调函数中的变量218
7.4.3将数组传递给函数220
7.4.4返回一个值225
7.4.5返回一个地址226
7.4.6函数的变长参数228
7.4.7main函数的参数和返回值229
7.4.8变长数组的作用231
7.5函数调用及递归函数与内联函数233
7.5.1函数调用233
7.5.2递归函数234
7.5.3内联函数239
7.6函数指针240
7.7拓展知识241
7.7.1字符类型的识别函数241
7.7.2数学函数242
7.7.3字符串与其他类型的转换243
7.7.4与内存操作有关的函数245
7.7.5restrict关键字246
7.7.6快速排序函数247
7.8课后练习249
第8章编译预处理254
8.1宏255
8.1.1不带参数的宏255
8.1.2带参数的宏257
8.1.3宏的重定义和取消259
8.1.4预定义的宏与库文件中的宏259
8.2包含文件260
8.3条件编译260
8.4课后练习262
第9章类型转换及内存管理265
9.1类型转换266
9.2指针和动态数组268
9.2.1堆区内存分配和释放268
9.2.2区分多级指针和多维数组270
9.3内存管理272
9.3.1栈区272
9.3.2静态区274
9.3.3堆区275
9.4课后练习276
第10章结构和其他数据类型279
项目导学5游戏数据类型定义280
10.1引导程序280
10.2结构体类型281
10.2.1结构体类型的声明和定义282
10.2.2结构体变量283
10.2.3结构体变量中成员的存储285
10.2.4结构体指针和结构体数组286
10.2.5结构体和函数287
10.2.6结构体类型的字面量288
10.2.7结构体和数组288
10.3联合体类型291
10.4枚举类型293
10.5typedef294
10.6拓展知识297
10.6.1链表的类型定义297
10.6.2链表的初始化和销毁299
10.6.3在链表的两端进行插入和删除300
10.6.4在链表中查找303
10.6.5在链表中指定位置插入和删除304
10.6.6在链表中删除满足条件的元素308
10.6.7链表的应用311
10.7课后练习315
第11章位运算319
11.1位运算320
11.1.1按位与、按位或和按位异或320
11.1.2按位反321
11.1.3左右移位322
11.1.4位运算的应用323
11.2拓展知识325
11.3课后练习327
第12章文件330
项目导学6游戏数据存盘331
12.1I/O操作331
12.2文件332
12.3文件操作333
12.3.1文件的打开、关闭及文件结束标志333
12.3.2文件的重定向334
12.3.3逐字节读写文件335
12.3.4逐行读写文件337
12.3.5格式化读写文件337
12.3.6逐块读写文件337
12.3.7随机读写文件338
12.4课后练习340
第13章三级项目实施343
13.1拼图问题描述344
13.2数据类型定义344
13.3逆序数344
13.4目标状态345
13.5初始化345
13.6打印346
13.7移动347
13.8存盘和加载349
13.9课后练习349
附录Ⅰ学习知识要点及能力要点350
附录ⅡASCII码对照表354
附录Ⅲ运算符优先级和结合性356
参考文献357

2016年6月,中国成为国际本科工程学位互认协议《华盛顿协议》的正式会员,这是中国工程教育国际化进程的重要里程碑。“回归工程”、培养学生的“大工程观”是当今国际工程教育的主流理念。《华盛顿协议》对毕业生提出的12条素质要求中,不仅要求工程知识、工程能力,还强调通用能力和品德伦理;在实践上,以学生为中心,以产出为导向,注重对目标达成的支撑及持续改进,与CDIO工程教育实质等效。
CDIO工程教育是近年来国际工程教育改革的最新成果,以“预期学习结果”集合来驱动课程内容、教学方法、教育文化的设计,重视营造工程教育文化,其注重工程能力培养和基于工程项目全生命周期的一体化设计思想,对于国内工程类和相关专业的建设具有重要的实施价值。
作为承载了教学改革思想的载体,融入CDIO工程教育理念的高品质教材,东软CDIO工程教育教材在注重理实结合的同时,也注重对学生八大能力的培养,即:技术知识与推理能力,开放式思维与创新,个人职业能力,沟通表达与团队合作,态度与习惯,责任,价值观,实践构思、设计、实现和运行对社会的贡献。
CDIO工程教育教材是 CDIO教育教学改革在教学实施过程中的集中体现,它不仅承载着课程和项目的教学内容,而且贯穿和体现了CDIO工程教育的理念、思想与方法,是在系统化理论的指导下,将知识、能力、素质培养进行一体化设计,有机融合在教材体系中。教材的编写以能力培养为主线,以案例教学为引导,以项目为载体,充分体现“做中学”和“学中做”的思想,具有以下优势:
(1)以能力培养为主线,培养学生专业知识学习能力和工程实践能力。
(2)以案例为驱动,在做案例的过程中学习新知识,充分体现了“做中学”。
(3)以项目为载体,基于工程化教育方法,按照分析、设计、实施、运行展开项目及知识点的讲解。
(4)围绕专业知识结构和能力体系设计教材,实现同一专业下不同教材紧密的关联性。
(5)内容编排循序渐进,符合人的认知规律。
(6)适应柔性化教学变革,构建一体化、立体化教学资源。
CDIO工程教育教材可供以应用型人才为培养目标的高等院校以及职业培训机构作为教材使用。
目前,CDIO工程教育教材的建设还处于探索阶段,是一项创造性的工作,尚需要通过改革的实践不断加以深化和持续改进,任重而道远。

教材简介
1.教材特点
C语言是许多大学计算机及相关专业开设的一门重要的专业基础课,也是大多数学生学习的第一门程序设计类课程。C语言课程中,讲授语法只是一个方面,更重要的是培养学生的程序设计思想,这一目的的达成需要建立在大量编程实践基础之上。
本教材在编写之前调研了业界工程师对C语言编程人员的要求,在编写过程中,与工程师深入探讨每个知识点需要达到的深度,结合后续数据结构课程对编程能力的要求,编者希望读者在掌握C语言语法的基础上,不仅能够运用C语言编程解决实际问题,而且能够理解与之相关的原理,进而达到灵活应用。
本教材具备如下特点:
(1)切合业界需求,相关知识点不仅介绍了用法,还适当探究原理,使读者知其然,亦知其所以然;
(2)以CDIO教育理念撰写各章内容,各案例编写蕴含构思、设计、实现、运行实施的过程;
(3)对知识点的难度进行分层,将较复杂、难度较高、原理性较强的知识点放在“拓展知识”中,适合不同层次的读者学习;
(4)使用代码说话,全部代码可运行,代码解释透彻;
(5)覆盖C99标准95%以上的语法;
(6)案例选取贴近生活或有趣的实例,例如冰雹猜想、埃及分数等数学小常识;
(7)为适合不同层次读者,编程练习题也分为基础篇和进阶篇。