首页 > 图书中心 >图书详情

C程序设计教程(第4版)

谭浩强教授**力作,荣获首届全国优秀教材一等奖的《C程序设计(第五版)》的姊妹篇,普通高等教育“十一五”国家级规划教材;全国高校出版社****书一等奖

作者:谭浩强
定价:49.90
印次:4-3
ISBN:9787302610250
出版日期:2022.08.01
印刷日期:2023.01.03

C语言是国内外广泛使用的计算机语言。学会使用C语言进行程序设计是计算机工作者的一项基本功。本书系统地介绍怎样使用C语言进行程序设计。通过本书的学习,可以基本掌握C语言的主要内容、程序设计的方法及有关算法的基本知识,初步掌握用计算机解题的全过程。 本书作者具有丰富的教学经验和编写教材的经验,善于把复杂的问题简单化,化解了学生学习过程中的许多困难。作者所著的《C程序设计》一书受到专家和读者的一致好评,被公认为学习C程序设计的理想教材,被全国大多数高校选用,是学习C语言的主流用书,已累计发行逾1700万册,并荣获首届“全国优秀教材一等奖”。 根据国内普通高等学校的教学需要,作者在《C程序设计》一书的基础上重新改写并出版了《C程序设计教程》,适当减少内容,紧扣基本要求,突出重点,适合“少学时”的需要。根据近年来的教学实践,本书重新构建教材体系,进一步压缩内容,突出重点,加强算法训练,更加实用。用通俗易懂的方法和语言阐明复杂的概念,使读者更加容易学习,同时采取适当的方法,注意培养包括计算思维在内的科学思维能力。 本书可用作普通高等学校各专业的正式教材,同时也是一本供广大读者自学的好教材。本书配有辅助教材《C程序设计教程(第4版)学习辅导》和微课视频、在线作业等丰富的教学资源。

more >

前言 C语言是国内外广泛使用的一种计算机高级语言。使用C语言进行程序设计是计算机工作者的一项基本功。 1991年,作者所著的《C程序设计》由清华大学出版社出版。该书出版后,许多读者说,“C语言原来是比较难学的,但自从《C程序设计》出版后,C语言变得不难学了。”该书经历了逾千所高校的教学实践和千万读者的检验,被公认为学习C程序设计的经典教材。30年来,《C程序设计》已改版4次,重印200多次,累计发行逾1700万册,创国内外计算机类书籍发行的最高纪录,荣获多项国家级和省部级奖项。2021年10月,国家教材委员会发布《关于首届全国教材建设奖奖励的决定》,公布了全国优秀教材奖励名单,这是我国教材工作领域的最高奖项,《C程序设计》(第五版)荣获“全国优秀教材(高等教育类)一等奖”。 作者到全国各高校和各企事业单位访问时,许多在校师生和已毕业参加工作的人士都说他们学过《C程序设计》,印象很深,作者深切地感受到广大读者的殷切期望。各校师生普遍认为该书内容系统,讲解详尽,是学习C语言程序设计的理想教材。同时也有的学校提出,由于各校情况不完全相同,希望在保持原有优点的基础上,能提供适用于不同要求的版本。作者和出版社征求了多方面的意见,进行了反复的研究,除了继续出版和完善《C程序设计》以外,还针对广大普通高等院校的教学要求,于2007年出版了《C程序设计教程》(即本书),作为《C程序设计》的姊妹篇。本书在保留《C程序设计》一书全部优点的基础上,紧扣基本要求,适当精简内容,突出重点,减少篇幅。出版后受到广泛欢迎,认为内容适当,概念清晰,用通俗易懂的方法和语言阐述清楚复杂的概念,便于学习。本书被教育部确定入选为普通高等教育“十一五”国家级规划教材,向全国各高校推荐。 经过十几年的教学实践,作者对《C程序设计教程》一书进行过多次修订。现在又进行一次新的修订,在修订的过程中,作者思考了以下几方面的问题。 1. 程序设计课程的作用与要求 近年来,在讨论C程序设计课程改革时,有的老师主张要学深学透;有的认为不能要求太高,主要是打好基础;有的认为有一些了解、初识即可;有的则认为大学生毕业后编程序的机会不多,因此可不必学,课程可以取消。这些引起人们深入思考: 理工科大学生要不要上程序设计课程?程序设计课程的目的和作用是什么?学习程序设计课程的要求是什么?程序设计课程的内容应该是什么? 作者认为,学习程序设计能够使大学生更好地理解计算机和应用计算机。计算机的本质是“程序的机器”,程序和指令的思想是计算机系统中最基本的概念。只有学过程序设计,才能懂得计算机是怎样工作的。通过学习程序设计,学生们了解到计算机处理问题的方法,培养了分析问题和解决问题的能力,具有编制程序的初步能力,能较好地应用计算机。即使他们将来不是计算机专业人员,由于学过程序设计,了解软件的特点和生产过程,也能与程序开发人员更好地沟通与合作,开展本领域中的计算机应用,开发与本领域有关的应用程序。所以我国所有大学的理工类专业都开设程序设计课程,并且把它作为进一步学习与应用计算机的基础,这是十分必要的。 2. 要不要学习C语言 进行程序设计,必须用计算机语言作为工具,否则只是纸上谈兵。可供选择的语言很多,各有特点。C语言是基础而实用的计算机语言,并不是每一种语言都具有此特点的,有的语言实用,但不能作为基础语言(如FORTRAN),有的语言可以作为基础,但实际应用不多(如Pascal)。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点;既适于编写系统软件,又能方便地用来编写应用软件。C语言是多年来国内外使用最广泛的语言之一。国内外许多专家认为,C语言是最基本的通用语言,有了C语言的基础后,掌握任何一种语言都不困难。C语言被认为是计算机专业人员的一项基本功。 有人认为有了C++语言以后,C语言就过时了,这是一种误解。C++语言是为设计大型程序应运而生的。将来从事系统开发的人员以及计算机专业学生需要学习C++语言或其他面向对象的语言。面向对象编程使用的是复杂的类层次结构与对象,适于处理大型的模块程序,但是在某些情况下并不比C语言程序更为有效。C语言作为传统的面向过程的程序设计语言,更适于解决某些小型程序的编程。在编写底层的设备驱动程序和内嵌应用程序时,往往是更好的选择。 对复杂的问题,面向对象方法符合人们的思维方式。对简单的问题,面向过程方法符合人们的思维方式,而面向过程是最基本的。对初学者来说,学习C语言显然比学习C++语言容易得多,许多学校把C语言作为大学生的第一门计算机语言,是比较合适的。有了C语言的基础,学习C++语言是不难的。 3. 程序设计课程的性质和体系,正确处理算法与语法的关系 关于C程序设计课程的性质,应该说,它既有基础的性质(了解计算机处理问题的方式,学习算法),又有应用和工具的性质(掌握语言工具,具有编程的初步能力,能具体应用),二者兼顾。因此,既要注意讲清概念,使学生建立正确的概念,又要培养学生实际处理问题的能力。 程序设计有4个要素:①算法——程序的灵魂;②数据结构——加工的对象;③语言——编程工具(算法要通过语言工具来实现);④合适的程序设计方法(如结构化程序设计方法)。程序设计教学是否成功取决于能否将以上4个要素紧密结合。 本书自始至终把这4个要素自然地、有机地结合,全面兼顾。不是孤立地介绍语法,也不是全面系统地介绍算法。本书不是根据语言规则的分类和顺序作为教学和教材的章节和顺序,而是从应用的角度出发,以编程为目的和主线,由浅入深地介绍怎样用C语言处理问题。把算法和语法紧密结合,同步展开,步步深入。精心安排顺序,算法的选择由易到难,细心选择例子,使读者容易学习。在此基础上,构造了新的教学和教材体系。具体的做法是:在每一章中,首先举几个简单的例子,引入新的问题,接着介绍怎样利用C语言解决简单的问题,然后再循序渐进地介绍较深入的算法和程序。使学生在富有创意、引人入胜的编程过程中,学会算法,掌握语法,领悟程序设计的思想和方法,把枯燥无味的语法规则变成生动活泼的编程应用。多年的实践表明,这种做法是成功的。 建议教师在讲授时,以程序为中心展开,着重讲清解题思路以及怎样用程序实现它,不要孤立介绍语法规定,教材中叙述的语法规定可以在介绍编写程序的过程中加以说明,或在简单介绍后请学生自己阅读,并通过上机实践掌握。 4. 在程序设计课程中要注意引导学生学习和掌握科学思维方法 学习程序设计的一个重要作用是可以培养学生的科学思维能力。近年来,国内外有些专家提出要重视和研究计算思维,认为计算思维是运用计算机科学的基础概念进行问题求解、系统设计和理解人类行为的思维活动。 计算思维是科学思维的组成部分。人们在学用计算机的过程中认识到:计算机不仅是工具,而且可以启发人们用科学的方法思考问题。通过学习和应用计算机,人们改变了旧的思维方式和工作方式,逐步培养了现代的科学思维方式和工作方式,懂得现代社会处理问题的科学方法,这个意义比掌握工具更为深远。计算思维是信息时代中的每个人都应当具备的一种思维方式,要让思维具有计算的特征。 计算机不仅为不同专业提供了解决专业问题的有效方法和手段,而且提供了一种独特的处理问题的思维方式。把计算机处理问题的方法和技术用于各有关领域,有助于提升各个领域的科学水平,开拓新的领域。积极在计算机的教学中引入跨学科元素,启迪跨学科计算思维,会对各个学科的发展产生深远的影响。 计算思维不是悬空的抽象概念,是体现在各个环节中的。算法思维就是典型的计算思维。学习程序设计就是培养计算思维的有效途径。 计算思维是在学习和应用计算机的过程中培养的,不需要另设课程进行讲授。多年来,人们在学习和应用计算机过程中不断学习和培养了计算思维,正如学习数学培养了理论思维,学习物理培养了实证思维一样。对计算机的学习和应用越深入,对计算思维的认识也越深刻。 培养计算思维不是目的,正如学习哲学不是目的一样。学习哲学的目的是认识世界、改造世界。培养计算思维的目的是更好地应用计算技术,推动社会各领域的发展与提高。要正确处理好培养计算思维与计算机应用的关系。 程序设计的各个环节都体现了计算思维。没有必要去声明或争论:这个问题是计算思维,那个问题属于其他什么思维,认为属于计算思维的就重视,否则就不重视。只要有利于培养大学生的科学思维,都应当大力提倡,大学生需要培养多种思维的能力。 本书注意在教学过程中努力培养学生的科学思维。在介绍每一个问题时,都采取以下步骤:提出问题→解题思路→编写程序→运行结果→程序分析→有关说明。在“解题思路”中,分析问题,介绍算法,建立数学模型。使读者首先把注意力放在处理问题的思路和方法上,而不是放在语法细节上。在确定算法之后,再使用C语言编写程序就顺理成章了。在“程序分析”中,再进一步分析程序的思路及其实现方法。这样,思路清晰,逻辑性强,有利于形成科学的思维方法。希望读者不仅要注重学习知识,更要注重学习方法,掌握规律,举一反三。 5. 本次修订版的特点 在本次修订中保持了本书概念清晰、通俗易懂的特点,体现了以下特点: (1) 按照C99标准进行介绍。以适应C语言的发展,使编写程序更加规范。例如: ① 数据类型介绍中,增加了C99扩充的双长整型(long long int)、复数浮点型(float_complex,double_complex,long long _complex)、布尔型(bool)等,使读者有所了解。 ② 根据C99的建议,main函数的类型一律指定为int型,并在函数的末尾加返回语句“return 0;”。 ③ C99增加了注释行的新形式——以双斜线“//”开始的内容作为注释行,这本来是C++的注释行形式,现在C99把它扩充进来了。本书采用C99的注释新形式,读者使用更方便,而且符合发展需要。 ④ C99增加的其他一些具体内容,会在书中有关章节中专门注明,以提醒读者。 (2) 加强算法,强化解题思路。在各章中由浅入深地结合例题介绍各种典型的算法。对穷举、递推、迭代、递归、排序(包括比较交换法、选择法、起泡法)、矩阵运算、字符处理应用等算法作了详尽的介绍,对难度较大的链表处理算法的思路作了清晰说明,使读者逐步建立算法思维。 介绍例题时,在给出问题后,先是进行问题分析,探讨解题思路,构造算法,然后才根据算法编写程序,而不是先列出程序再解释程序,从中了解算法。这样做,更符合读者的认知规律,更容易理解算法,有利于培养科学思维。引导读者在看到题目后,先考虑算法再编程,以培养好的习惯。 (3) 对指针作了更明确详尽的说明。指针是学习C语言的重点,也是难点。不少读者反映难以掌握指针的实质和应用。作者在《C程序设计》和本书中,明确指出了“指针就是地址”,许多读者反映这是“画龙点睛,点出了问题的实质”,觉得一通百通,许多问题迎刃而解了。许多学校的师生反映,原来在学习指针时感到特别难懂,看了《C程序设计》后豁然开朗了;希望作者在此基础上,对指针再作更详尽的说明。作者根据各校师生提出的问题,在本次修订中对指针的性质作了进一步说明,指出: 我们所说的指针就是地址,这个地址不仅是在内存中的位置信息(即纯地址),而且包括在该存储单元中的数据的类型信息,并对此作了清晰明确的说明,使读者对指针的性质有进一步的认识。请读者阅读本书时加以注意。 (4) 更加通俗易懂,容易学习。作者充分考虑广大初学者的情况,精心设计体系,适当降低门槛,便于读者入门。尽量少用深奥难懂的专业术语,用通俗易懂的方法和语言阐述清楚复杂的概念,使复杂的问题简单化。没有学过计算机原理和高等数学的读者完全可以掌握本书的内容。 本书采用作者提出的“提出问题→解决问题→归纳分析”的新的教学三部曲,先具体后抽象,先实际后理论,先个别后一般,而不是先抽象后具体,先理论后实际,先一般后个别。实践证明,这样做符合读者的认知规律,读者很容易理解。 在介绍每个例题时,都采取以下的步骤:给出问题→解题思路→编写程序→运行结果→程序分析→有关说明,对一些典型的算法,还有算法分析,使读者更容易理解。 把算法与语言二者紧密而自然地结合,而且通过运行程序,看到结果,便于验证算法的正确性。学习时不会觉得抽象,而会觉得算法具体有趣,看得见,摸得着。 本书便于自学。具有高中以上文化水平的人,即使没有教师讲解,也能基本上掌握本书的内容。这样就有可能做到:教师少讲,提倡自学,上机实践。 考虑到教学的基本要求,本书对以下几个问题进行了适当处理: ① 简化输入输出格式。C语言的输入输出格式比较烦琐复杂,初学者往往感到难以掌握。本次修订时,只介绍最基本的格式(%d,%f,%e,%c,%s),在初学时能够进行输入输出就行,其他附表供查用。 ② 在函数一章中,简化一些初学者不常用的内容,如内部函数和外部函数、变量的作用域与生存期等由必学改为选学。 ③ 指针一章主要介绍一级指针,关于二级指针只介绍有关二维数组的内容。对“指向函数的指针”“返回指针值的函数”“指针数组和多重指针”“动态内存分配与指向它的指针变量”等较深入而初学者用得不多的内容不再介绍。 ④ 第8章中只介绍常用的结构体类型,不介绍用得不多的共用体类型。枚举类型改为选学。 ⑤ 链表处理(链表的建立、插入、删除和输出等)的内容,需要数据结构的有关知识,对非计算机专业学生来说难度较大,因此在修订时不再介绍。 ⑥ 文件只作简单介绍,有初步概念即可。 ⑦ 由于许多学校把C语言的教学安排在一年级,而学生还未学完高等数学,因此本书不包括有关高等数学知识的例题。考虑有部分读者在学习高等数学后可能对这方面的内容感兴趣,在习题部分列出有关的题目(如用二分法和牛顿迭代法求一元方程的根),并在《C程序设计教程(第4版)学习辅导》中给出介绍和程序,可供自学参考。 ⑧ 在各章节标题前加“”符号的,是比较深入的内容,在教学时可以不讲,由学生自学参考。 相信经过修订后,本书会更加容易学习,读者的基本功会更扎实,效果会更好。 许多读者称赞我处处为读者着想,开创了计算机书籍贴近大众的新风,称我是计算机界的“平民作家”,我很珍惜群众给我的这一称谓,这是对我的莫大鞭策。希望所有的教师和作者共同努力,把每一本书、每一门课程都做成精品,得到千万学生和读者的肯定和赞扬,这才是对我们的最高奖赏。 为了帮助读者更好地学习C程序设计,本书还配有辅助教材《C程序设计教程(第4版)学习辅导》,以及微课视频、在线作业、电子课件、教学指南等丰富的教学资源,刮开本书封底二维码的银色防伪涂层并扫描即可获得学习权限,共享“全国优秀教材一等奖”获奖图书《C程序设计》(第五版)的线上课程(含题库)等教学资源。 南京大学金莹教授以及薛淑斌老师、谭亦峰高级工程师参加了本书的调研、收集资料、研讨以及编写部分章节和程序的工作。 由于作者水平有限,本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评指正。 谭浩强谨识 2022年1月于清华园

more >
扫描二维码
下载APP了解更多

同系列产品more >

C程序设计教程(第4版)学习辅导

谭浩强
定 价:45元

查看详情
C++程序设计(第4版)学习辅导

谭浩强
定 价:49.50元

查看详情
C++程序设计(第4版)

谭浩强
定 价:59.90元

查看详情
PHP动态网站开发(第2版)

唐四薪
定 价:59.90元

查看详情
C++面向对象程序设计(第3版)学习...

谭浩强
定 价:35元

查看详情
图书分类全部图书
more >
  • 谭浩强,我国著名计算机教育专家。全国高等院校计算机基础教育研究会荣誉会长,曾任教育部全国计算机应用水平考试委员会主任委员,享受国务院政府特殊津贴。曾获国家科技进步奖、国家级教学成果奖,被评为全国先进科普工作者、北京市有突出贡献的专家。
  • 荣获首届全国优秀教材一等奖的《C程序设计(第五版)》的姊妹篇,全国高校出版社****书一等奖,普通高等教育“十一五”国家级规划教材
more >
  • 目录

    第1章程序设计和C语言1

    1.1计算机与程序、程序设计语言1

    1.2C语言的特点2

    1.3简单的C语言程序3

    1.4C语言程序的结构6

    1.5运行C程序的步骤与方法8

    1.6程序设计的任务10

    1.7算法——程序的灵魂11

    1.7.1程序是什么11

    1.7.2什么是算法12

    1.7.3怎样表示一个算法13

    1.8结构化程序设计方法19

    1.9学习程序设计,培养科学思维21

    本章小结22

    习题23

    第2章最简单的C程序设计——顺序程序设计25

    2.1顺序程序设计举例25

    2.2数据的类型及存储形式29

    2.2.1C语言的数据类型29

    2.2.2数据的表现形式——常量和变量29

    2.2.3整型数据31

    2.2.4字符型数据36

    2.2.5浮点型数据41

    2.3用表达式进行数据的运算43

    2.3.1C表达式43

    2.3.2C运算符44

    2.3.3运算符的优先级与结合性46

    2.3.4不同类型数据间的混合运算46

    2.3.5强制类型转换47

    2.4最常用的C语句——赋值语句48

    2.4.1C语句综述48

    2.4.2赋值表达式50

    2.4.3赋值语句53

    2.5数据的输入输出56

    2.5.1C语言中输入输出的概念56

    2.5.2用printf函数输出数据57

    2.5.3用scanf函数输入数据62

    2.5.4字符数据的输入输出65

    本章小结67

    习题68

    第3章选择结构程序设计71

    3.1简单的选择结构程序71

    3.2选择结构中的关系运算73

    3.2.1关系运算符及其优先次序73

    3...

精彩书评more >

标题

评论

版权所有(C)2022 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802013248号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘