新書推薦:
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:HK$
109.8
《
药食同源中药鉴别图典
》
售價:HK$
67.0
《
设计中的比例密码:建筑与室内设计
》
售價:HK$
87.4
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:HK$
55.8
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:HK$
76.2
《
汗青堂丛书144·决战地中海
》
售價:HK$
168.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:HK$
54.9
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:HK$
87.4
|
編輯推薦: |
荣获首届全国优秀教材一等奖的《C程序设计(第五版)》的姊妹篇,全国高校出版社优秀畅销书一等奖,普通高等教育“十一五”国家级规划教材
|
內容簡介: |
C语言是国内外广泛使用的计算机语言。学会使用C语言进行程序设计是计算机工作者的一项基本功。本书系统地介绍怎样使用C语言进行程序设计。通过本书的学习,可以基本掌握C语言的主要内容、程序设计的方法及有关算法的基本知识,初步掌握用计算机解题的全过程。 本书作者具有丰富的教学经验和编写教材的经验,善于把复杂的问题简单化,化解了学生学习过程中的许多困难。作者所著的《C程序设计》一书受到专家和读者的一致好评,被公认为学习C程序设计的理想教材,被全国大多数高校选用,是学习C语言的主流用书,已累计发行逾1700万册,并荣获首届“全国优秀教材一等奖”。 根据国内普通高等学校的教学需要,作者在《C程序设计》一书的基础上重新改写并出版了《C程序设计教程》,适当减少内容,紧扣基本要求,突出重点,适合“少学时”的需要。根据近年来的教学实践,本书重新构建教材体系,进一步压缩内容,突出重点,加强算法训练,更加实用。用通俗易懂的方法和语言阐明复杂的概念,使读者更加容易学习,同时采取适当的方法,注意培养包括计算思维在内的科学思维能力。 本书可用作普通高等学校各专业的正式教材,同时也是一本供广大读者自学的好教材。本书配有辅助教材《C程序设计教程(第4版)学习辅导》和微课视频、在线作业等丰富的教学资源。
|
關於作者: |
谭浩强,我国著名计算机教育专家。全国高等院校计算机基础教育研究会荣誉会长,曾任全国计算机应用水平考试委员会主任委员,享受国务院政府特殊津贴。曾获国家科技进步奖、国家级教学成果奖,被评为全国先进科普工作者、北京市有突出贡献的专家。
|
目錄:
|
第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
|
內容試閱:
|
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月于清华园
|
|