高级搜索  |  搜索帮助
最近的浏览历史
浏览此书的还浏览过
购买此书的人还购买过
书  名:C语言程序设计(第3版)
  • 作  者: 谭浩强
  • 出版时间: 2014-09-01
  • 出 版 社: 清华大学出版社
  • 字  数: 557 千字
  • 印  次: 3-1
  • 印  张: 22.5
  • 开  本: 16开
  • ISBN: 9787302369646
  • 装  帧: 平装
  • 定  价:¥44.80
电子书价:¥31.40 折扣:70折 节省:¥13.40 vip价:¥31.40 电子书大小:26.27M
配套资源下载:
  • 名称
  • 说明
  • 权限
  • 文件大小
  • 点击图标下载
  • 图书样章
  • 所有用户
  • 256K
共有商品评论0条 查看评论摘要
内容简介
  谭浩强教授所著的《C程序设计》一书受到国内专家和读者的一致好评,被公认为学习C语言程序设计的优秀教材,被全国大多数高校选用,是学习C语言的主流用书。已累计发行了1250多万册,创同类书的全国发行最高纪录。
  针对我国应用型大学的实际情况,谭浩强教授于21世纪初在《C程序设计》一书的基础上编写出版了《C语言程序设计》,降低起点,精简内容,通俗易懂,突出重点,紧扣基本要求,使读者容易学习。该书出版后受到广泛欢迎,十多年已出了两版,重印50多次。本书是在《C语言程序设计(第2版)》的基础上修订再版的。
在这次修订中,保持了原书概念清晰、通俗易懂的特点,同时根据C99新标准介绍程序设计,体现教材的先进性和规范性,并且更加容易学习与入门。本书定位准确,体系科学,内容适当、取舍合理、例题丰富,分析透彻。作者采用的“提出问题—解决问题—归纳分析”的三部曲,符合初学者的认知规律,取得很好的效果。
凡具有计算机初步知识的读者都能读懂本书。本书可作为应用型大学各专业学习C语言程序设计的教材,基础较好的高职高专也可选用,本书也是不可多得的用于自学的好教材。
  本书还配有辅助教材《C语言程序设计(第3版)学习辅导》。
前言
  程序设计是计算机工作者的一项基本功。C语言是在国内外广泛学习和使用的一种计算机语言,受到广大计算机爱好者的喜爱。我国几乎所有的理工科大学都开设了C语言程序设计课程。
  为了使C语言程序设计课程教学取得更好的效果,需要弄清楚几个问题:
1. 为什么要学习程序设计
计算机的本质是“程序的机器”,程序和指令的思想是计算机系统中最基本的概念。只有懂得程序设计,懂得计算机是怎样工作的,才能较深入地理解和应用计算机,才能较好地懂得怎样使计算机按照人们的意图进行工作。学习程序设计,能学到计算机处理问题的方法,培养计算思维,培养分析问题和解决问题的能力。
虽然非计算机专业的大学生,大多数将来并不一定会成为专业的软件开发人员,不一定有许多机会用C语言编写实用程序,但是在大学期间仍然需要学习程序设计。通过学习程序设计,使大学生具有程序设计的初步知识,具有编写程序的初步能力,知道软件开发的过程和特点,有利于各专业人士在今后工作中与程序开发人员沟通合作,进行应用软件的开发工作。因此,大学生(尤其是理工类学生)学习程序设计是很有好处的。
具体地说,学习程序设计的目的有两个方面: (1)学习用计算机解决问题的思路和方法;(2)学习怎样用计算机工具去实现算法,即实现用计算机解题。
2. C语言是基础而实用的语言
进行程序设计,必须用计算机语言作为工具,否则只是纸上谈兵。可供选择的语言很多,各有特点。C语言是基础而实用的语言。并不是每一种语言都具有此特点的,有的语言实用,但不能作为基础语言(如FORTRAN),有的语言可以作为基础,但实际应用不多(如Pascal)。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好。既具有高级语言的优点,又具有低级语言的许多特点,既适合于编写系统软件,又能方便地用来编写应用软件。是多年来在国内外使用最广泛的语言。国内外许多专家认为,C语言是最基本的通用语言,有了C语言的基础,以后过渡到任何一种语言(如C++,C#,Java)都不会困难。C语言被认为是计算机专业人员的基本功。
3. 正确处理好算法和语法的关系
  C程序设计课程既有基础的性质(了解计算机处理问题的方式,学习算法),又有应用和工具的性质(掌握语言工具,具有编程的初步能力,能具体应用)。因此,既要注意讲清概念,使学生建立正确的概念,又要培养学生实际处理问题的能力。
  程序设计有4个要素: (1)算法是程序的灵魂;(2)数据结构是加工的对象;(3)语言是编程工具(算法要通过语言来实现);(4)要采用合适的程序设计方法。程序设计教学是否成功取决于能否将以上4个要素(尤其是算法与语言二者)紧密结合。
  本书自始至终把这4个要素自然有机地结合起来,全面兼顾。算法和语法二者都很重要,都要重视。本书不是孤立地介绍语法,也不是全面系统地介绍算法,更不是根据语言规则的分类和顺序作为教学和教材的章节和顺序,而是从应用的角度出发, 以编程为目的和主线,由浅入深地介绍怎样用C语言处理问题,把算法和语法紧密结合,同步展开,步步深入。作者精心安排顺序,算法的选择由易而难,细心选择例子,使该读者容易学习。在此基础上,构造了新的教学和教材体系。
  具体的做法是: 在每一章中,首先举几个简单的例子,引入新的问题;接着介绍怎样利用C语言去解决简单的问题;然后再循序渐进地介绍较深入的算法和程序。使学生在富有创意、引人入胜的编程过程中,学会了算法,掌握了语法,领悟了程序设计的思想和方法。把枯燥无味的语法规则变成生动活泼的编程应用。多年的实践表明,这种做法是成功的。
  既然要学习编写程序,就离不开计算机语言。如果不掌握语法规则的应用,连最简单的程序也编写不出来,或者错误百出。问题不是要不要掌握语言工具,而是通过什么方法学习和掌握语言工具的使用方法,是枯燥地死记语法规则,还是通过实例掌握语言的使用?初学时可以学习最基本的语法现象而淡化语法的细节,有些细节不必一一讲授,可以让学生自查自学。
  建议教师在讲授时,以程序为中心展开,着重讲清解题思路以及怎样用程序去实现它,不要孤立介绍语法规定,教材中叙述的语法规定,可以在介绍编写程序的过程中加以说明,或在作简单介绍后请学生自己阅读,并通过上机实践掌握它。
  4. 在学习和应用计算机过程中培养计算思维
  计算机基础教育应该面向计算机应用,着眼于提高大学生的计算机应用能力,培养各个领域中的计算机应用人才,同时在教学过程中要注意培养学生的科学思维和信息素养。计算思维是科学思维的一部分。有专家认为: 计算思维是运用计算机科学的基础概念进行问题求解、系统设计和理解人类行为的思维活动。计算思维的本质是抽象和自动化。程序设计中的算法思维就是典型的计算思维。学习程序设计的过程就是培养计算思维的过程。
  作者认为: 计算思维是在学习和应用计算机的过程中自然而然地培养的,计算思维并不神秘,它是自然而然的结果,而不是生硬进行的过程;是本身存在的内在关联,而不是外界强加的概念。我们要善于在教学过程中有意识地引导学生善于思考,掌握规律,举一反三,养成科学思维(包括计算思维)。
  培养计算思维不是最终目的。培养计算思维是为了更好地应用计算机,培养更多更好的计算机应用人才。
  5. 要从实际出发,准确定位
  在学习C语言程序设计的人群中,有不同的情况和要求。有的是计算机专业的,有的是非计算机专业的;有的是本科生,有的是高职生;有的来自研究型大学,有的来自应用技术型大学;有的以后成为计算机专业人员,有的是计算机应用人员;有的要求精通,有的要求粗通,有的则只求一般了解。必须准确定位,从具体实际出发,对不同对象提出不同的要求。不可能要求一个没有计算机基础的人,通过三四十学时的课程就能精通程序设计,掌握复杂的算法,编写出复杂的程序。要求必须恰当,內容要有所取舍。在有限的学时内,只能学习基本的内容,为今后进一步的学习和使用打下必要的基础。如果有少数人将来需要熟练地编程,甚至成为专业的软件开发人员,则应当在学习本课程的基础上继续进行更深入的学习,例如至少应当完成一个综合作业,开发一个具有一定规模的应用软件的实践项目。
  本书的对象是应用型大学本科学生,程度较高的高职(大专)学生也可以用本书作为教材。
  为了推动C程序设计教学,作者于1991年在全国率先编著了《C程序设计》一书,由清华大学出版社出版,向全国发行。各校师生普遍认为该书内容全面而系统、概念清晣而易懂,例题丰富,讲解详尽、包含了许多其他教材中没有的内容,尤其是针对编程实践中容易出现的问题作了分析,被认为是学习C语言程序设计的理想教材,至今已出版了四版,重印180次。21世纪初,作者根据不同学校(尤其是应用型大学)的需要,在《C程序设计》一书的基础上,编写出版了《C语言程序设计》一书,适当降低要求,精简内容,降低起点,更加易于学习,很受广大师生欢迎。被教育部定为“普通高等教育十一五国家级规划教材”,向全国推荐,至今已出版了两版,重印50余次。以上这两本程度不同的教材至今已累计发行超过1250万册,成为大学C程序设计的主流用书,有力地推动了我国高校的C程序设计教学。
  本书是在《C语言程序设计(第2版)》的基础上进行修订的。修订中遵循以下原则:
  (1) 保持原有特点和风格。由于作者所著的《C程序设计》和《C语言程序设计》内容全面,叙述清晰,通俗易懂,在教学实践中取得了很好的效果,因此在修订时尽量保持原有的优点,基本上保留原书的体系,注意概念准确,讲解透彻,使读者对C语言和程序设计有全面、完整的理解。
  (2) 按照C99标准进行介绍,以适应C语言的发展,使编写程序更加规范。目前国内许多介绍C语言的教材是按照C89标准介绍的,而国外的同类教材已改为以C99标准为蓝本。本书按照C99标准的规定介绍程序设计,例如:
① 数据类型中,C99增加了双长整型(long long int)、复数浮点型(float_complex,double_complex,long long _complex)、布尔型(bool)等。
② 根据C99的建议,main函数的类型一律指定为int型,并在函数的末尾加返回语句“return 0;”。
③ C99增加了注释行的新形式——以双斜线“//”开始的内容作为注释行,这本来是C++的注释行形式,现在C99把它扩充进来了,使编程更加方便。同时保留了原来的“/* …… */”形式,以使原来按C89标准编写的程序可以不加修改仍可使用。本书采用C99的注释新形式,读者使用更方便,而且符合发展需要。因此,本书的程序基本上采用下面的形式: #include // 以"//"作为注释行的开始
int main() // 指定main函数为int类型
{

return 0; // 如函数正常执行,返回整数0
}
  由于C99是在C89的基础上增加或扩充一些功能而成的,因此C89和C99基本上是兼容的。过去用C89编写的程序在C99环境下仍然可以运行。C99所增加的许多新的功能和规则,是在编制比较复杂的程序时为方便使用和提高效率而用的,在初学时可以不涉及,因此本书对目前暂时用不到的内容不作介绍,以免读者分心,增加学习难度。在将来进行深入编程时再逐步了解和学习。
  (3) 加强算法,强化解题思路。在介绍例题时,先进行问题分析,探讨解题思路,构造算法,然后才是根据算法编写程序,而不是先列出程序再解释程序。在各章中由浅入深地结合例题介绍各种典型的算法。对穷举、递推、迭代、递归、排序(包括比较交换法、选择法、起泡法)、矩阵运算、字符处理应用等算法作了详细的介绍,对难度较大的链表操作的算法作了清晰的思路说明。引导读者在拿到题目后,先考虑算法再编程,而不是坐下来就写程序,以培养好的习惯,培养算法思维。
  (4) 更加通俗易懂,容易学习。作者充分考虑到广大初学者的情况,精心设计体系,适当降低门槛,便于读者入门。尽量少用深奥难懂的专业术语,用通俗易懂的方法和语言阐述清楚复杂的概念,使复杂的问题简单化。没有学过计算机原理和高等数学的读者完全可以掌握本书的内容。
  本书采用作者提出的“提出问题—解决问题—归纳分析”的新的教学三部曲,先具体后抽象,先实际后理论,先个别后一般。而不是先抽象后具体,先理论后实际,先一般后个别。实践证明这样做符合读者的认知规律,读者很容易理解。
  在介绍每个例题时,都采取以下的步骤: 给出问题→解题思路→编写程序→运行结果→程序分析→程序改进。对有关内容用说明、注意、提醒、思考等标注,并用楷体字以引起注意。这种方法符合读者认知规律,使读者思路更加清晰,更容易接受和理解。通过运行程序,读者看到结果,便于验证算法的正确性,学习过程不觉得抽象,而会觉得算法具体有趣,看得见,摸得着。
在每一章的最后有“本章小结”,归纳本章的要点,提纲挈领,画龙点睛,以加深印象,增强条理性。
  本书便于自学。具有高中以上文化水平的人,即使没有教师讲解,也能基本掌握本书的内容。这样,就有可能做到: 教师少讲,提倡自学,上机实践。
  (5) 把教学内容分为基本要求和提高要求两个部分。这是考虑到不同对象的要求的差别。在各章中把一部分较深入的内容作为“提高部分”,单独列出,放在各章的最后,供学生选学和参考。如果学时不够,可以只学基本部分。通过学习基本部分,能初步掌握C程序设计的基本内容,写出相对简单的程序,如果希望学习得更深入一些,掌握更多的编程思路和技巧,可以选学各章的“提高部分”。也可以教师讲授基本部分,学生自学“提高部分”,以培养学生的自学能力。
  应当怎样学习C语言程序设计呢?作者给出以下建议:
  (1) 在开始学习时不要死记语法细节。请记住: 重要的是学会编程序,而不是背语法。一开始就要学会看懂程序,编写简单的程序,然后逐步深入。有一些语法细节是需要通过较长期的实践才能熟练地掌握的。初学时,切忌过早地滥用C语言的某些容易引起错误的细节(如不适当地使用++和--的副作用)。
  (2) 不能设想今后一辈子只使用在学校里学过的某一种语言。但是无论用哪一种语言进行程序设计,其基本思路和方法都是一样的。从这个意义上说,在大学里学哪一种语言,并不是很重要的原则问题。学会了一种计算机语言,可以很快地学会另一种语言。因此,在学习时一定要学活用活,举一反三,掌握规律,在以后需要时能很快地掌握其他语言进行工作。
  (3) 在学校学习阶段,主要是学习程序设计的方法,进行程序设计的基本训练,打下将来进一步学习的基础。学习程序设计课程时,应该把精力放在最基本、最常用的内容上,学好基本功。如果对学生有较高的程序设计要求,应当在学习本课程后,安排一次集中的课程设计环节,完成有一定规模的程序设计。
  (4) 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行,希望读者一定要重视实践环节,包括编程和上机。既会编写程序,又会调试程序。衡量这门课学习的好坏,不是“知不知道”,而是“会不会干”。 考核的方法不应当采用标准题(是非题或选择题),而应当把重点放在编制程序和调试程序上。
  (5) 使用哪一种编译系统并不是原则问题。程序编好以后,用哪一种编译系统进行编译都可以。读者不应该只会用某一种编译环境,应当了解、接触和使用不同的编译环境。不同的编译系统,其功能和使用方法有些不同,编译时给出的信息也不完全相同,要注意参阅使用说明书,特别要在使用中积累经验,举一反三。
为了帮助读者学习本书,作者还编写了本书的配套参考书《C语言程序设计(第3版)学习辅导》,提供本书中各章习题的参考答案以及上机实习指导。
  薛淑斌高级工程师和金莹副教授参加了本书的修订。许多高校老师多年来使用本教材,提出了许多宝贵的意见和建议,使本书得以日臻完善。在此谨向一切帮助和支持过作者的人士表示由衷的感谢。
  本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评指正。


  谭浩强2014年3月1日于清华园
目录
第1章程序设计与C语言1
1.1计算机与程序、程序设计语言1
1.2C语言的出现和发展过程2
1.3简单的C语言程序2
1.4运行C程序的步骤与方法7
1.4.1运行C程序的步骤7
1.4.2上机运行C程序的方法8
本章小结15
习题16
第2章数据的存储与运算17
2.1数据在计算机中是怎样存储的17
2.1.1数据在计算机中是以二进制形式存储的17
2.1.2位、字节和地址18
2.1.3不同类型数据的存储方式19
2.2整型数据的运算与分析21
2.2.1整型数据运算程序举例和分析21
2.2.2整型常量与整型变量23
2.3实型数据的运算与分析26
2.3.1实型数据的运算举例26
2.3.2实型常量的表示形式28
2.3.3实型变量29
2.4字符型数据的运算31
2.4.1字符数据运算的简单例子31
2.4.2字符常量和字符变量32
2.4.3字符串常量36
2.5符号常量37
2.5.1为什么要用符号常量 38
2.5.2符号常量的性质和使用方法40
2.6算术运算符和算术表达式41
2.6.1算术运算符41
2.6.2算术表达式43
2.7C运算符和C表达式45
2.7.1C运算符45
2.7.2C表达式46
2.8提高部分46
2.8.1求补码的方法46
2.8.2整型常量的表示形式47
2.8.3整型变量的类型47
2.8.4整型常量的类型48
2.8.5C语言允许使用的数据类型49
2.8.6运算符的优先级与结合性50
本章小结50
习题51
第3章最简单的C程序设计——顺序程序设计53
3.1算法是程序的灵魂53
3.1.1什么是算法53
3.1.2怎样表示算法55
3.2程序的三种基本结构58
3.3C语句综述59
3.4赋值表达式和赋值语句62
3.4.1赋值表达式62
3.4.2赋值过程中的类型转换64
3.4.3赋值语句65
3.4.4变量赋初值66
3.5数据输入输出的概念67
3.6字符数据的输入输出68
3.6.1用putchar函数输出一个字符69
3.6.2用getchar函数输入一个字符70
3.7简单的格式输入与输出72
3.7.1用简单的printf函数输出数据72
3.7.2用简单的scanf函数输入数据76
3.8顺序结构程序设计举例79
3.9提高部分83
3.9.1关于无符号数据与有符号数据之间的赋值83
3.9.2较复杂的输入输出格式控制85
3.9.3简单易用的C++的输入输出92
本章小结93
习题94
第4章选择结构程序设计96
4.1条件判断96
4.1.1条件判断的含义96
4.1.2关系运算符和关系表达式97
4.1.3逻辑运算符和逻辑表达式98
4.2用if语句实现选择结构102
4.2.1用if语句实现选择结构举例102
4.2.2if语句的一般形式104
4.2.3if语句使用的说明104
4.2.4使用嵌套的if语句实现多层条判断106
4.3利用switch语句实现多分支选择结构110
4.4程序综合举例112
4.5提高部分116
4.5.1用条件表达式实现简单的选择结构116
4.5.2在程序中使用条件表达式118
本章小结119
习题120
第5章循环结构程序设计123
5.1程序中需要用循环结构123
5.2用while语句和dowhile语句实现循环124
5.2.1用while语句实现循环124
5.2.2用dowhile语句实现循环126
5.3用for 语句实现循环128
5.3.1for语句的一般形式和执行过程128
5.3.2for循环程序举例 129
5.4循环的嵌套133
5.5提前结束循环133
5.5.1用break语句提前退出循环 133
5.5.2用continue语句提前结束本次循环135
5.6几种循环的比较137
5.7循环程序综合举例137
5.8提高部分142
5.8.1while和dowhile循环的比较142
5.8.2for语句的各种形式143
本章小结147
习题147
第6章利用数组处理批量数据149
6.1为什么要用数组149
6.2怎样定义和引用一维数组149
6.2.1怎样定义一维数组150
6.2.2怎样引用一维数组的元素150
6.2.3一维数组的初始化152
6.2.4一维数组程序举例153
6.3怎样定义和引用二维数组156
6.3.1怎样定义二维数组 156
6.3.2怎样引用二维数组的元素157
6.3.3二维数组的初始化157
6.3.4二维数组程序举例159
6.4字符数组162
6.4.1怎样定义字符数组及对其初始化 162
6.4.2怎样引用字符数组163
6.4.3字符串和字符串结束标志164
6.4.4怎样进行字符数组的输入输出166
6.4.5字符串处理函数168
6.4.6字符数组应用举例169
6.5提高部分173
6.5.1为什么在定义二维数组时采用两对双括号的
形式173
6.5.2对C的字符串函数的详细说明174
本章小结178
习题179
第7章用函数实现模块化程序设计181
7.1函数是什么181
7.2函数的定义和调用184
7.2.1为什么要定义函数184
7.2.2怎样定义函数184
7.2.3怎样调用函数185
7.2.4对被调用函数的声明和函数原型188
7.3函数的嵌套调用和递归调用191
7.3.1函数的嵌套调用191
7.3.2函数的递归调用193
7.4数组作为函数参数199
7.4.1用数组元素作函数实参199
7.4.2用数组名作函数参数200
7.5变量的作用域和生存期207
7.5.1变量的作用域——局部变量和全局变量207
7.5.2变量的存储方式和生存期210
7.5.3关于作用域和生存期的小结214
7.6内部函数和外部函数215
7.6.1什么是内部函数215
7.6.2什么是外部函数215
7.7提高部分218
7.7.1实参求值的顺序218
7.7.2递归的典型例子——Hanoi(汉诺)塔问题218
本章小结221
习题223
第8章善于使用指针 225
8.1什么是指针225
8.2指针变量226
8.2.1使用指针变量访问变量的例子226
8.2.2怎样定义指针变量228
8.2.3怎样引用指针变量229
8.2.4指针变量作为函数参数231
8.3通过指针引用数组236
8.3.1数组元素的指针236
8.3.2通过指针引用数组元素237
8.3.3用数组名作函数参数241
8.4通过指针引用字符串246
8.4.1字符串的表示形式246
8.4.2字符指针作函数参数250
8.4.3使用字符指针变量和字符数组的区别254
8.5提高部分257
8.5.1指针使用的技巧257
8.5.2多维数组的指针259
8.5.3指向函数的指针260
8.5.4返回指针值的函数260
8.5.5指针数组261
8.5.6多重指针——指向指针的指针262
本章小结263
习题265
第9章使用结构体类型处理组合数据——用户自定义
数据类型2679.1定义和使用结构体变量267
9.1.1自己建立结构体类型267
9.1.2定义结构体类型变量269
9.1.3结构体变量的初始化和引用271
9.2结构体数组275
9.3结构体指针278
9.4用结构体变量和结构体变量的指针作函数参数282
9.5用指针处理链表285
9.5.1什么是线性链表285
9.5.2建立简单的静态链表286
9.5.3建立动态链表287
9.6提高部分289
9.6.1共用体类型289
9.6.2枚举类型290
本章小结293
习题294
第10章利用文件保存数据295
10.1C文件的有关概念295
10.1.1什么是文件295
10.1.2文件名296
10.1.3文件的分类296
10.1.4文件缓冲区297
10.1.5文件指针297
10.2文件的打开与关闭298
10.2.1用fopen函数打开数据文件298
10.2.2用fclose函数关闭文件300
10.3文件的顺序读写300
10.3.1向文件读写字符301
10.3.2向文件读写一个字符串304
10.3.3文件的格式化读写308
10.3.4用二进制方式读写文件308
10.4文件的随机读写312
10.4.1文件位置标记及其定位313
10.4.2随机读写文件315
10.5提高部分317
10.5.1系统定义的文件指针317
10.5.2回车换行符的转换317
10.5.3fread和fwrite函数用于二进制文件的输入
输出318
10.5.4文件读写的出错检测318
本章小结319
习题320
附录A常用字符与ASCII代码对照表322
附录BC语言中的关键字323
附录C运算符和结合性324
附录DC语言常用语法提要326
附录EC库函数331
参考文献337
Copyright(C)清华大学出版社有限公司,All Rights Reserved 京ICP备10035462号 联系我们