本书以程序设计为主线,以编程需要带动知识的学习。全书共9章,系统介绍了C语言的相关知识及其程序设计技术,包括简单的C程序设计、基本数据类型、数据运算、结构化程序设计、数组和字符串、指针、函数、复合数据类型、文件与预处理;通过丰富的C程序设计实例,详尽介绍了相应的知识和算法;各章编排了一定量的练习题,以帮助读者在初步掌握语言的基础上,着重培养程序设计的能力。 本书内容充实、体系合理、概念清晰、讲解详尽、例题丰富,是学习C程序设计的理想教材,可作为高等学校本科以上教学用书。为了方便学习,建议与本书配套的《大学C语言实用教程实验指导与习题》(第2版)(ISBN 978-7-302-58564-0 )一起使用。
程序设计发展到今天,已经由技艺推进到科学,有了自己的一套基本原理和方法。进行程序设计,需要很强的逻辑思维能力,是一种极富创造性的智力劳动。对初学者而言,使他们望而生畏的,往往也正是这一点。可以这样认为,语言是一种技能,程序设计是一门科学。因此,任何计算机语言及其程序设计的基本特点就是理论性和实践性并重,教学上应强调科学训练与技能培养并存。基于这一认识,本书以应用为目的,以提高程序设计能力为目标,以程序设计方法学为依据,系统介绍了C语言及其程序设计技术,把程序设计作为科学来讲授,把语言作为技能来培养,让读者在大量的程序设计实践中自然而然地熟悉和掌握。
C语言是广泛应用的计算机语言,学会使用C语言进行程序设计是计算机工作者的一项基本功。当今流行的面向对象语言C 、Visual C 、C#以及Java语言就源于C语言。
在计算机日益普及、计算机技术日新月异、新型计算机软件层出不穷的今天,程序设计仍然是每一位当代大学生的基本功,是计算机素质教育的重要环节之一。尤其是那些希望用计算机解决本专业领域实际问题的有识之士,更需要加强程序设计的学习与训练。
学习计算机语言的目的是应用,而应用要通过程序设计来体现。程序设计发展到今天,已经由技艺推进到科学,有了自己的一套基本原理和方法。进行程序设计,需要很强的逻辑思维能力,是一种极富创造性的智力劳动。对初学者而言,使他们望而生畏的,往往正是这一点。可以这样认为,语言是一种技能,程序设计是一门科学。因此,任何计算机语言及其程序设计的基本特点就是理论性和实践性并重,教学上应强调科学训练与技能培养并存。基于这一认识,本书以应用为目的,以提高程序设计能力为目标,以程序设计方法学为依据,系统介绍了C语言及其程序设计技术,把程序设计作为科学来讲授,把语言作为技能来培养,让读者在大量的程序设计实践中自然而然地熟悉和掌握。
根据C语言自身的特点,本书从内容上做了如下安排: 第1章是简单的C程序设计,尽管简单,但它是学习C语言的纲;第2、5、8章从易到难介绍了C语言的各种数据结构(基本数据类型、数组和字符串、复合数据类型);第3章专门介绍C语言的数据运算;第4章集中介绍C语言的控制结构和程序设计的基本思维方法,体现结构化程序设计的特点;第6章介绍指针,这是C语言的精髓和特色,也是学习的难点;第7、9章介绍函数和文件,这是模块化程序设计的需要;第10章介绍C语言环境中特殊而较为深入的问题(如编译预处理、分割编译等),这些问题基本不影响本书对初学者的要求,但对较高层次的读者来说又是必要的资料,可以作为自学之用;附录部分给出了Visual C 6.0 操作指导、C语言运算符集、ASCII代码表、常用库函数、习题解答以及综合应用示例,便于读者查阅。书中所有例题源程序均通过Visual C 6.0编译系统调试,为方便读者上机实践以及课后练习与检测,本书配有辅助教材《大学C语言实用教程实验指导与习题(第2版)》。
潘旭华教授制定了本书的写作大纲,王桂荣编写第1~3章和附录A~D及附录E的部分内容;潘旭华编写第4~7章、附录E部分内容;姜书浩编写第8章及附录E部分内容;赵玉刚编写第9章、第10章及附录E部分内容。全书由潘旭华教授担任主编并统稿,高福成教授精心审阅了全部书稿。本书在编写和出版过程中,得到作者所在学校的大力支持,清华大学出版社的编校人员为此书的出版付出了大量辛勤的劳动,在此一并表示感谢。
本书配套的电子教学资源(教学大纲、实验大纲、授课计划、电子教案、电子图书等),读者可在清华大学出版社网站(http://www.tup.com.cn)本书相应的页面中下载。
由于作者学识水平所限,书中难免存在疏漏和错误,恳请读者不吝指正。
编者2021年8月
潘旭华 天津市教学名师,天津市五一劳动奖章获得者。主要从事电子商务、智能计算与数量经济学研究。是电子商务一流本科专业建设点负责人、市级电子商务专业教学团队负责人、市级信息技术实验教学示范中心负责人;主持项目获得高等教育天津市级教学成果二等奖、全国商业科技进步一等奖和二等奖等;主持或参与多项和省部级教学和科研项目;出版普通高等教育十一五规划教材《大学C语言实用教程》等十余部。
第1章简单的C程序设计1
1.1C语言的产生和发展1
1.2开发环境2
1.3编译环境3
1.4结构特点和书写风格6
1.4.1一个简单的C程序6
1.4.2C程序的结构特点7
1.4.3C程序书写风格8
1.5输入与输出8
1.5.1赋值语句8
1.5.2格式输入输出函数9
1.5.3库函数和标题文件10
1.6运行程序10
习题112
第2章基本数据类型、常量和变量14
2.1基本数据类型及关键字14
2.2常量16
2.3变量18
2.4符号常数19
2.5输入和输出22
2.5.1格式化输出函数22
2.5.2格式化输入函数26
2.5.3单字符输出函数29
2.5.4单字符输入函数30
习题231
第3章数据运算35
3.1算术运算35
3.1.1算术运算符35
3.1.2算术表达式36
3.2赋值运算40
3.3逗号运算(顺序运算)42
3.4关系运算和逻辑运算44
3.5位运算48
3.6常用数学函数52
习题354
第4章结构化程序设计57
4.1基本结构57
4.2选择结构58
4.2.1if…else语句与二分支结构58
4.2.2if…else语句与多分支结构63
4.2.3条件表达式65
4.2.4switch语句67
4.2.5switch与break语句69
4.3循环结构70
4.3.1for循环70
4.3.2while循环74
4.3.3do…while循环76
4.3.4循环的嵌套78
4.4转移控制语句80
4.4.1break语句81
4.4.2continue语句82
4.4.3goto语句和标号83
习题484
第5章数组和字符串90
5.1数组的概念90
5.2数组的定义和初始化91
5.2.1数组的定义91
5.2.2数组的存储92
5.2.3数组的初始化93
5.2.4初始化定义数组95
5.3数组的基本操作96
5.4数组的应用101
5.4.1数值数组的应用101
5.4.2字符串处理函数109
习题5117
第6章指针120
6.1地址、指针和指针变量120
6.1.1地址和地址的运算120
6.1.2指针和指针变量123
6.2指针的运算126
6.3指针与一维数组128
6.4指针与二维数组130
6.5指针与字符串136
6.6二级指针和多级指针140
习题6142
第7章函数147
7.1模块化程序设计147
7.2C函数的定义和调用149
7.3数据传递153
7.3.1参数传递方式153
7.3.2函数返回值方式163
7.3.3全局变量方式165
7.3.4函数指针166
7.4存储类型与函数调用169
7.4.1变量的存储类型169
7.4.2函数的存储类型与函数调用174
7.5函数的递归调用175
7.6main()函数的参数与返回值178
习题7181
第8章复合数据类型188
8.1结构类型188
8.1.1结构类型的定义188
8.1.2结构类型的初始化190
8.1.3访问结构变量和结构数组192
8.1.4结构类型的赋值与输入输出194
8.2结构数据在函数间的传递196
8.3递归结构与链表203
8.3.1递归结构与链表的概念203
8.3.2内存的动态分配204
8.3.3动态链表的基本操作206
8.4枚举类型213
8.5类型定义215
习题8217
第9章文件与预处理223
9.1文件概述223
9.2文件的打开与关闭225
9.3文件的读写操作227
9.3.1文本文件读写227
9.3.2二进制文件读写233
9.4文件检测函数235
9.5顺序存取与随机存取文件237
9.6编译预处理247
9.6.1宏定义247
9.6.2文件包含251
9.6.3条件编译253
习题9256 附录AC语言运算符集263
附录BASCII代码表264 附录CC常用库函数及其标题文件265 附录D习题参考答案270 附录EC程序应用开发案例276