高级搜索  |  搜索帮助
最近的浏览历史
购买此书的人还购买过
书  名:C程序设计教程
  • 作  者: 谭浩强
  • 出版时间: 2007-07-01
  • 出 版 社: 清华大学出版社
  • 字  数: 504 千字
  • 印  次: 1-9
  • 印  张: 21
  • 开  本: 16开
  • ISBN: 9787302151579
  • 装  帧: 平装
  • 定  价:¥25.00
电子书价:¥17.50 折扣:70折 节省:¥7.50 vip价:¥17.50 电子书大小:5.17M
配套资源下载:
  • 名称
  • 说明
  • 权限
  • 文件大小
  • 点击图标下载
  • 图书样章
  • 所有用户
  • 256K
  • 图书课件
  • 教师
  • 1M
共有商品评论0条 查看评论摘要
内容简介
  本书以清华大学出版社出版的《C程序设计》(已发行900万册)一书的内容为基础,适当减少内容,压缩篇幅,突出重点,紧扣最基本的教学要求。经教育部评审,本书已正式列入教育部普通高等教育“十一五”国家级规划教材,向全国各高校推荐。
和《C程序设计》相比,《C程序设计教程》一书在以下几方面作了调整:
(1) 取消原来的第2章(算法),把算法的思想分散到各章,结合具体程序进行介绍,这样可以使读者更早地直接进入程序设计,能提高读者的兴趣。
(2) 对于初学者暂时用得不多的部分内容(如“预处理命令”、“位运算”)不再保留。对“链表”只作简单的介绍而不深入展开。对输入输出格式着重介绍最常用的部分,不详细介绍其他复杂和少用的格式。对不同类型数据之间的赋值只介绍比较基本的内容。“常见错误和程序调试”的内容由教材移放到《C程序设计教程学习辅导》中。这样教材由原来的14章减到10章,篇幅也相应地减少了。
(3) 由于许多学校把C语言的教学安排在一年级,而学生还未学完高等数学,在本书中不包括有关高等数学知识的例题。
(4) 过去学习C语言的读者,大多数是学习过其他计算机语言的(如BASIC语言),有初步的程序设计知识,而现在大多数学校把C语言作为第一门计算机语言来学习,学生缺乏程序设计的基础知识。为降低学习难度,本书减少了难度较大的例题,对比较难懂的程序也作了比较详细的说明。
(5) 在章节编排上,作了适当的改变,在叙述概念和解释难点时,采取了更加通俗易懂的方法,使读者更易于理解。
(6) 采用Visual C++作为编译环境,使程序的编译和运行更加方便。
由于《C程序设计》的内容和写作风格已经为广大读者熟悉,在教学的实践中取得了很好的效果,因此本书保持了《C程序设计》的基本内容和写作风格,可以认为本书是《C程序设计》的简明教程。在学习本书的过程中,如需要进一步深入,可以参考《C程序设计》一书。
本书最大的特点是:把复杂的问题简单化,而不把简单的问题复杂化。例题丰富,容易入门,分解难点,缩小台阶,循序渐进。即使没有教师讲授,学生也能通过自学掌握书中的基本内容。本书通俗易懂、深入浅出的特点在同类书中是非常突出的。

08年3月13日新增程序
前言
  C语言是在国内外广泛使用的一种计算机语言。学会使用C语言进行程序设计是计算机工作者的一项基本功。

自20世纪90年代以来,C语言在国内迅速普及,不仅为计算机专业工作者所使用,而且为广大计算机应用人员(包括大量原来是非计算机专业的使用计算机的人们)所喜爱和使用。几乎所有的理工科大学不仅在计算机系开设了C语言课程,而且在非计算机专业也开设了C语言课程。全国计算机等级考试、全国计算机应用技术证书考试(NIT)和全国各地区各部门组织的计算机考试都将C语言列入了考试范围。学习C语言已经成为广大计算机应用人员和广大青年学生的迫切要求。

作者在1991年编著了《C程序设计》一书,由清华大学出版社出版。该书出版后受到广大读者的热烈欢迎,许多读者说“C语言原来是比较难学的,但自从《C程序设计》出版后,C语言变得不难学了”,该书被全国大多数高校选为正式教材,许多高校都指定该书为研究生入学考试必读教材。该书已成为国内读者学习C语言的主流用书。国内许多介绍C语言的书籍大多以此书为蓝本,许多在职干部和计算机爱好者通过自学本书掌握了C语言程序设计。十多年来,该书已出了三版,重印了100多次,累计发行了900多万册,创同类书的全国发行最高纪录。近年来每年印刷量都在80万册以上。作者到全国各高校和各企事业单位访问时,许多在校师生和已毕业参加了工作的人士都说他们学过这本书,印象很深,作者在内心深切地感受到广大读者对作者的殷切期望。

各校师生普遍认为《C程序设计》内容系统、讲解详尽,包含了许多其他教材中没有的内容,尤其是针对编程实践中容易出现的问题作了提醒和分析,是学习C语言程序设计的理想教材。同时有的学校提出,由于各校情况不完全相同(例如,学校的类型不同,教学要求不同,安排的学时数不同,学生的基础不同……),希望在保持原有的优点的基础上,能提供适用于不同要求的教材。作者和清华大学出版社征求了多方面的意见,进行了反复的研究,决定除了继续完善《C程序设计》以外,针对学时较少的学校,另外出版一本新的《C程序设计教程》,该书以《C程序设计》一书的内容为基础,适当减少内容,压缩篇幅,突出重点,紧扣最基本的要求。经教育部批准,《C程序设计教程》已正式列入教育部普通高等教育“十一五”国家级教材规划,向全国各高校推荐。

和《C程序设计》相比,本书在以下几方面作了调整:

(1) 取消原来的第2章(算法),把算法的思想分散到各章,结合具体程序进行介绍,这样可以使读者更早地直接进入程序设计,能提高读者的兴趣。

(2) 对于初学者暂时用得不多的部分内容(如“预处理命令”、“位运算”)不再保留。对“链表”只作简单的介绍而不深入展开。对输入输出格式着重介绍最常用的部分,不详细介绍其他复杂和不常用的格式。对不同类型数据之间的赋值只介绍比较基本的内容。“常见错误和程序调试”的内容由主教材移放到《C程序设计教程学习辅导》中。这样教材由原来的14章减少到10章,篇幅由378页减少到323页。

(3) 由于许多学校把C语言的教学安排在一年级,而学生还未学完高等数学,在本书中不包括有关高等数学知识的例题。

(4) 过去学习C语言的读者,大多数是学习过其他计算机语言的(如BASIC语言),有初步的程序设计知识,而现在大多数学校把C语言作为第一门计算机语言来学习,学生缺乏程序设计的基础知识,为减少学习难度,减少了难度较大的例题,对比较难懂的程序也作了比较详细的说明。

(5) 在章节编排上,作了适当的改变,在叙述概念和解释难点时,采取了更加通俗易懂的方法,使读者更易于理解。

(6) 采用Visual C++作为编译环境,使程序的编译和运行更加方便。

由于《C程序设计》的内容和写作风格已经为广大读者熟悉,在教学的实践中取得了很好的效果,因此本书保持了《C程序设计》的基本内容和写作风格,可以认为本书是《C程序设计》的简明教程。在学习本书的过程中,如需要进一步深入,可以参考《C程序设计》一书。

对于要求较高的学校,建议仍选用《C程序设计》作为教材,可以学得深入一些。

对于怎样学习程序设计,作者提出以下几点看法:

(1) 近年来,有一些面向对象的计算机语言陆续问世,受到欢迎。有些人认为面向过程的C语言已经过时了,不必学了。这是一种误解。不应把面向对象和面向过程对立起来,在面向对象程序设计中仍然要用到面向过程的知识。作为计算机程序开发人员,既要掌握面向对象程序设计的知识,又要掌握面向过程程序设计的知识。面向过程程序设计仍然是计算机工作者的基本功。

C++是为开发大型程序而研制的,它比C语言要复杂得多,学习C++也比学习C语言困难得多。事实上,将来并不是每个人都需要用C++编制大型程序。对于计算机专业人员,学习和使用C++是理所当然的。对于非计算机专业人员,可以先学习C语言,打下程序设计的基础,在以后需要时再学习和使用C++。有了C语言基础,再学习C++就容易多了。也可以在学习C语言的基础上,再学习一些面向对象程序设计的初步知识,为以后进一步学习和使用C++打下基础。

(2) 在学校中,学习程序设计课程的目的是掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务。要正确处理算法与语法的关系,算法是程序的核心、是灵魂,语法是外壳、是工具。本书不是一本介绍语法的书,而是帮助读者通过大量实例了解怎样设计和运用算法,怎样运用语言工具和编程环境去实现编程,从而处理实际问题。不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序,但是只学会语法,甚至能把语法背得滚瓜烂熟,也不可能编写出好的程序。一定要把重点放在解题的思路上,通过大量的例题学习怎样设计一个算法,构造一个程序。在学习初期更不要在语法细节上死背死抠。请记住: 重要的是学会编程序,而不是背语法。一开始就要学会看懂程序,编写简单的程序,然后逐步深入。有一些语法细节是需要通过较长期的实践才能熟练掌握的。初学时,切忌过早地滥用C语言的某些容易引起错误的细节(如不适当地使用++和--的副作用)。

(3) 不能设想今后一辈子只使用在学校里学过的某一种语言。但是,无论用哪一种语言进行程序设计,其基本规律是一样的。在学习时一定要活学活用,举一反三,掌握规律,在以后需要时能很快地掌握其他新的语言进行工作。

(4) 在学校学习阶段,主要是学习程序设计的方法,进行程序设计的基本训练,为将来进一步学习打下基础。对多数学生来说,不可能通过几十小时的学习,由一个门外汉变成编程高手,编写出大型而实用的程序。学习程序设计课程时,应该把精力放在最基本、最常用的内容上,学好基本功。如果对学生有较高的程序设计要求,应当在学习本课程后,安排一次集中的课程设计环节,按照实际工作的要求,完成有一定规模的程序设计。

(5) 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行,希望读者一定要重视实践环节,包括编程和上机。既会编写程序,又会调试程序。衡量这门课学习的好坏,不是看你“知不知道”,而是“会不会干”。考核的方法不能主要用是非题和选择题,而应当把重点放在编制程序和调试程序上。

(6) 使用哪一种编译系统并不是原则问题,重要的是编程能力的培养。程序编好以后,用哪一种编译系统进行编译都可以。读者不应该只会用某一种编译环境,应当了解、接触和使用不同的编译环境。不同的编译系统,其功能和使用方法有些不同,编译时给出的信息也不完全相同,要注意参阅使用说明书,特别要在使用中积累经验,举一反三。

(7) 本书的写法既通俗又精练,许多叙述是在大量实践经验基础上提练和总结出来的。学习时一定要对照程序反复琢磨和思考,深入掌握有关概念及其应用的方法,千万不要浅尝辄止,一带而过。有些重要的叙述最好反复阅读两遍甚至多遍。

为了帮助读者学习本书,作者还编了一本《C程序设计教程学习辅导》,提供本书中各章习题的参考答案以及上机实习指导。该书由清华大学出版社于2007年出版。

作者从事计算机教育和计算机普及工作近三十年,对这项工作有深厚的感情和深切的体会。在许多年前我就下了决心,把自己的后半生献给我国的计算机教育和计算机普及事业,要安于平凡,脚踏实地,把看似平凡的工作做成伟大。我最大的愿望是:通过全社会的共同努力,使全体人民都能享受到信息技术发展的成果。我提出了一个口号:“要把计算机从少数计算机专家手中解放出来,使它成为广大群众手中的工具”,要使广大群众轻松愉快、兴趣盎然地进入计算机的天地。经过近二十年的努力,这个愿望正在逐步变成现实。

我始终认为,作为作者,不能想怎么写就怎么写,作为教师,不能想怎么讲就怎么讲,必须考虑怎样才能使学生易于理解。作者心中要永远装着读者,处处为读者着想。要写出一本好书是不容易的,要讲好一堂课也是不容易的,要下很大的功夫。要深入了解自己工作的对象,有的放矢,准确定位;要根据应用的需要,合理取舍,精选内容;要认真研究学习者的认识规律,采用读者容易理解的方法,深入浅出,通俗易懂;要善于把复杂问题简单化,而不能把简单问题复杂化。写书不是简单地把有关的技术内容告诉读者,而是要考虑怎样写才能使读者容易理解。有时为了找到一个好的例子或一个通俗的比喻,我往往苦苦思索好几天,每一句话都要反复斟酌推敲。希望所有的教师和作者共同努力,把每一本书、每一门课程都做成精品,得到千万学生和读者的肯定和赞扬,这才是对我们劳动的最高奖赏。

由于作者水平有限,本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评指正。


2007年5月于清华园
目录
第1章C语言概述1

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

1.2C语言出现的历史背景2

1.3C 语言的特点3

1.4简单的C语言程序4

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

1.5.1运行C程序的步骤8

1.5.2上机运行C程序的方法8

本章小结15

习题16

第2章数据类型、运算符与表达式17

2.1C语言的数据类型17

2.2常量与变量17

2.2.1常量18

2.2.2变量19

2.3整型数据20

2.3.1整型常量的表示形式20

2.3.2整型变量21

2.3.3整型数据在内存中的存放形式22

2.3.4整型数据的溢出23

2.3.5整型常量的类型24

2.4浮点型数据24

2.4.1浮点型常量的表示形式24

2.4.2浮点型变量25

2.4.3浮点型常量的类型26

2.5字符型数据27

2.5.1字符常量27

2.5.2字符变量28

2.5.3字符数据在内存中的存储形式及其使用方法28

2.5.4字符串常量31

2.6各类数值型数据间的混合运算32

2.7算术运算符和算术表达式33

2.7.1C语言运算符和C算术表达式简介33

2.7.2主要的算术运算符和算术表达式34

2.8逗号运算符和逗号表达式36

本章小结38

习题38

第3章最简单的C程序设计——顺序程序设计40

3.1程序的三种基本结构40

3.2C语句概述41

3.3赋值表达式和赋值语句43

3.3.1赋值表达式43

3.3.2赋值过程中的类型转换46

3.3.3赋值语句48

3.3.4变量赋初值48

3.4数据输入输出的概念及在C语言中的实现49

3.5字符数据的输入输出50

3.5.1用putchar函数输出一个字符50

3.5.2用getchar函数输入一个字符51

3.6简单的格式输入与输出52

3.6.1用简单的printf函数输出数据52

3.6.2用简单的scanf函数输入数据55

3.7较复杂的输入输出格式控制58

3.7.1输出数据格式控制58

3.7.2输入数据格式控制63

3.8顺序结构程序设计举例64

本章小结66

习题67

第4章选择结构程序设计69

4.1关于算法69

4.1.1算法的概念69

4.1.2怎样表示算法71

4.2条件判断73

4.2.1关系运算和关系表达式73

4.2.2逻辑运算符和逻辑表达式75

4.3用if语句实现选择结构78

4.3.1if语句的3种形式78

4.3.2if语句的嵌套81

4.3.3条件运算符和条件表达式84

4.4利用switch语句实现多分支选择结构87

4.5程序举例89

本章小结94

习题94

第5章循环结构程序设计96

5.1循环的概念96

5.2用while语句和do…while语句实现循环96

5.2.1用while语句实现循环96

5.2.2用do…while语句实现循环98

5.2.3while和do…while循环的比较99

5.2.4while循环程序举例100

5.3用for 语句实现循环101

5.3.1for语句的一般形式和执行过程101

5.3.2for语句的各种形式102

5.3.3for循环程序举例105

5.4循环的嵌套106

5.5用break语句和continue语句改变循环状态107

5.5.1用break语句提前退出循环107

5.5.2用continue语句提前结束本次循环108

5.6几种循环的比较109

5.7程序举例109

本章小结112

习题113

第6章数组115

6.1数组的概念115

6.2一维数组的定义和引用115

6.2.1定义一维数组115

6.2.2引用一维数组元素116

6.2.3一维数组的初始化117

6.2.4一维数组程序举例117

6.3二维数组的定义和引用120

6.3.1定义二维数组120

6.3.2引用二维数组的元素120

6.3.3二维数组的初始化121

6.3.4二维数组程序举例122

6.4字符数组124

6.4.1定义字符数组124

6.4.2字符数组的初始化125

6.4.3引用字符数组的元素125

6.4.4字符串和字符串结束标志126

6.4.5字符数组的输入输出128

6.4.6字符串处理函数130

6.4.7字符数组应用举例134

本章小结137

习题138

第7章函数调用140

7.1函数概述140

7.2函数定义的一般形式142

7.2.1为什么要定义函数142

7.2.2怎样定义无参函数142

7.2.3怎样定义有参函数143

7.2.4定义空函数143

7.3函数参数和函数的值144

7.3.1形式参数和实际参数144

7.3.2函数的返回值145

7.4函数的调用147

7.4.1函数调用的一般形式147

7.4.2函数调用的方式148

7.4.3对被调用函数的声明和函数原型148

7.5函数的嵌套调用152

7.6函数的递归调用153

7.7数组作为函数参数160

7.7.1数组元素作函数实参160

7.7.2数组名作函数参数161

7.7.3用多维数组名作函数参数165

7.8变量的作用域——局部变量和全局变量166

7.8.1局部变量166

7.8.2全局变量167

7.9变量的存储方式和生存期170

7.9.1局部变量的存储类别171

7.9.2全局变量的存储类别174

7.9.3存储类别小结177

7.10关于变量的声明和定义179

7.11内部函数和外部函数180

7.11.1内部函数180

7.11.2外部函数181

本章小结183

习题184

第8章指针186

8.1地址和指针的概念186

8.2变量的指针和指向变量的指针变量188

8.2.1怎样定义指针变量188

8.2.2怎样引用指针变量190

8.2.3指针变量作为函数参数192

8.3通过指针引用数组197

8.3.1数组元素的指针197

8.3.2指针的运算197

8.3.3通过指针引用数组元素199

8.3.4用数组名作函数参数203

8.3.5通过指针引用多维数组210

8.4通过指针引用字符串218

8.4.1字符串的表示形式218

8.4.2字符指针作函数参数221

8.4.3对使用字符指针变量和字符数组的讨论224

8.5指向函数的指针226

8.5.1什么是函数指针226

8.5.2用函数指针变量调用函数227

8.5.3用指向函数的指针作函数参数230

8.6返回指针值的函数233

8.7指针数组和多重指针235

8.7.1指针数组的概念235

8.7.2指向指针数据的指针238

8.8动态内存分配与指向它的指针变量241

8.8.1什么是内存的动态分配241

8.8.2怎样建立内存的动态分配241

8.8.3void指针类型242

本章小结244

习题246

第9章用户建立的数据类型248

9.1结构体类型和结构体变量248

9.1.1结构体类型248

9.1.2定义结构体类型变量250

9.1.3引用结构体变量251

9.1.4结构体变量的初始化252

9.2结构体数组253

9.2.1定义结构体数组253

9.2.2结构体数组的初始化254

9.2.3结构体数组应用举例255

9.3结构体指针256

9.3.1指向结构体变量的指针变量257

9.3.2指向结构体数组的指针258

9.3.3结构体变量和指向结构体的指针作函数参数260

9.4用指针处理链表262

9.4.1链表概述262

9.4.2建立简单的静态链表263

9.4.3建立动态链表264

9.4.4输出链表267

9.5共用体类型269

9.5.1什么是共用体类型269

9.5.2共用体变量的引用方式270

9.5.3共用体类型数据的特点271

9.6枚举类型274

9.7用typedef命名类型278

本章小结280

习题281

第10章文件操作283

10.1C文件的有关概念283

10.1.1什么是文件283

10.1.2文件名284

10.1.3文件的分类284

10.1.4文件缓冲区285

10.1.5文件指针285

10.1.6文件的位置指针286

10.2文件的打开与关闭287

10.2.1文件的打开287

10.2.2文件的关闭288

10.3文件的顺序读写289

10.3.1向文件读写一个字符289

10.3.2向文件读写一个字符串292

10.3.3向文件进行格式化读写295

10.3.4向文件读写一组数据296

10.4文件的随机读写300

10.4.1文件位置指针的定位300

10.4.2随机读写302

10.5文件读写的出错检测303

本章小结303

习题305

附录A常用字符与ASCII代码对照表306

附录BC语言中的关键字307

附录C运算符和结合性308

附录DC语言常用语法提要311

附录EC库函数316

参考文献323
Copyright(C)清华大学出版社有限公司,All Rights Reserved 京ICP备10035462号 联系我们