编辑推荐
由谭浩强教授*、清华大学出版社出版的《C程序设计(第4版)》保持了《C程序设计》前三版的写作风格和概念清晰、通俗易懂的特点,为*切合当前需要,在以下几个方面作了改进:按照C99标准进行介绍,以适应C语言的发展,使程序*加规范。采用Visual C++ 6.0作为编译和运行环境。加强算法,以程序设计为中心把算法与语言工具紧密结合。*加通俗易懂,容易学习。
内容简介
书籍 计算机书籍
由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言和程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学、组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。
《C程序设计(第四版)》内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文字流畅,通俗易懂,是初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。本书还配有辅助教材《C程序设计(第四版)学习辅导》。
作译者
谭浩强教授,1952年毕业于上海市上海中学,1958年清华大学自动控制系毕业。学生时代曾担任清华大学学生会主席、北京市学联副主席、全国学联执行委
员,北京市人大代表。毕业后留在清华工作,担任清华大学团委副书记,同时承担教学工作。从70年代末开始,投入计算机教育。现担任全国高等院校计算机基础
教育研究会会长、教育部全国计算机应用技术证书(NIT)考试委员会主任委员,教育部全国计算机等级考试委员会副主任,是在中国大陆知名的计算机教育专
家。
目录
《C程序设计(第四版)》
第1章程序设计和C语言1
1.1什么是计算机程序1
1.2什么是计算机语言1
1.3C语言的发展及其特点3
1.4最简单的C语言程序5
1.4.1最简单的C语言程序举例6
1.4.2C语言程序的结构10
1.5运行C程序的步骤与方法12
1.6程序设计的任务14
习题15
第2章算法——程序的灵魂16
2.1什么是算法16
2.2简单的算法举例17
2.3算法的特性21
2.4怎样表示一个算法22
2.4.1用自然语言表示算法22
2.4.2用流程图表示算法22
2.4.3三种基本结构和改进的流程图26
2.4.4用NS流程图表示算法28
2.4.5用伪代码表示算法31
2.4.6用计算机语言表示算法32
2.5结构化程序设计方法34
习题36
第3章最简单的C程序设计——顺序程序设计37
3.1顺序程序设计举例37
3.2数据的表现形式及其运算39
3.2.1常量和变量39
3.2.2数据类型42
3.2.3整型数据44
3.2.4字符型数据47
3.2.5浮点型数据49
3.2.6怎样确定常量的类型51
3.2.7运算符和表达式52
3.3C语句57
3.3.1C语句的作用和分类57
3.3.2最基本的语句——赋值语句59
3.4数据的输入输出65
3.4.1输入输出举例65
3.4.2有关数据输入输出的概念67
3.4.3用printf函数输出数据68
3.4.4用scanf函数输入数据75
3.4.5字符数据的输入输出78
习题82
第4章选择结构程序设计85
4.1选择结构和条件判断85
4.2用if语句实现选择结构87
4.2.1用if语句处理选择结构举例87
4.2.2if语句的一般形式 89
4.3关系运算符和关系表达式91
4.3.1关系运算符及其优先次序91
4.3.2关系表达式92
4.4逻辑运算符和逻辑表达式92
4.4.1逻辑运算符及其优先次序93
4.4.2逻辑表达式94
4.4.3逻辑型变量96
4.5条件运算符和条件表达式97
4.6选择结构的嵌套99
4.7用switch语句实现多分支选择结构102
4.8选择结构程序综合举例105
习题111
第5章循环结构程序设计114
5.1为什么需要循环控制114
5.2用while语句实现循环115
5.3用do…while语句实现循环117
5.4用for 语句实现循环120
5.5循环的嵌套124
5.6几种循环的比较125
5.7改变循环执行的状态125
5.7.1用break语句提前终止循环126
5.7.2用continue语句提前结束本次循环127
5.7.3break语句和continue语句的区别128
5.8循环程序举例131
习题140
第6章利用数组处理批量数据142
6.1怎样定义和引用一维数组142
6.1.1怎样定义一维数组143
6.1.2怎样引用一维数组元素144
6.1.3一维数组的初始化145
6.1.4一维数组程序举例146
6.2怎样定义和引用二维数组148
6.2.1怎样定义二维数组149
6.2.2怎样引用二维数组的元素150
6.2.3二维数组的初始化151
6.2.4二维数组程序举例152
6.3字符数组154
6.3.1怎样定义字符数组154
6.3.2字符数组的初始化155
6.3.3怎样引用字符数组中的元素155
6.3.4字符串和字符串结束标志156
6.3.5字符数组的输入输出159
6.3.6使用字符串处理函数161
6.3.7字符数组应用举例165
习题168
第7章用函数实现模块化程序设计170
7.1为什么要用函数170
7.2怎样定义函数172
7.2.1为什么要定义函数172
7.2.2定义函数的方法173
7.3调用函数174
7.3.1函数调用的形式174
7.3.2函数调用时的数据传递175
7.3.3函数调用的过程177
7.3.4函数的返回值178
7.4对被调用函数的声明和函数原型179
7.5函数的嵌套调用182
7.6函数的递归调用184
7.7数组作为函数参数192
7.7.1数组元素作函数实参193
7.7.2数组名作函数参数194
7.7.3多维数组名作函数参数197
7.8局部变量和全局变量199
7.8.1局部变量199
7.8.2全局变量200
7.9变量的存储方式和生存期204
7.9.1动态存储方式与静态存储方式204
7.9.2局部变量的存储类别205
7.9.3全局变量的存储类别208
7.9.4存储类别小结212
7.10关于变量的声明和定义214
7.11内部函数和外部函数215
7.11.1内部函数215
7.11.2外部函数215
习题218
第8章善于利用指针220
8.1指针是什么220
8.2指针变量222
8.2.1使用指针变量的例子222
8.2.2怎样定义指针变量223
8.2.3怎样引用指针变量224
8.2.4指针变量作为函数参数226
8.3通过指针引用数组230
8.3.1数组元素的指针230
8.3.2在引用数组元素时指针的运算231
8.3.3通过指针引用数组元素233
8.3.4用数组名作函数参数237
8.3.5通过指针引用多维数组245
8.4通过指针引用字符串255
8.4.1字符串的引用方式 255
8.4.2字符指针作函数参数259
8.4.3使用字符指针变量和字符数组的比较263
8.5指向函数的指针266
8.5.1什么是函数指针266
8.5.2用函数指针变量调用函数266
8.5.3怎样定义和使用指向函数的指针变量268
8.5.4用指向函数的指针作函数参数270
8.6返回指针值的函数274
8.7指针数组和多重指针277
8.7.1什么是指针数组 277
8.7.2指向指针数据的指针280
8.7.3指针数组作main函数的形参282
8.8动态内存分配与指向它的指针变量285
8.8.1什么是内存的动态分配285
8.8.2怎样建立内存的动态分配285
8.8.3void指针类型 287
8.9有关指针的小结288
习题291
第9章用户自己建立数据类型293
9.1定义和使用结构体变量293
9.1.1自己建立结构体类型293
9.1.2定义结构体类型变量 295
9.1.3结构体变量的初始化和引用297
9.2使用结构体数组300
9.2.1定义结构体数组300
9.2.2结构体数组的应用举例301
9.3结构体指针303
9.3.1指向结构体变量的指针303
9.3.2指向结构体数组的指针304
9.3.3用结构体变量和结构体变量的指针作函数参数306
9.4用指针处理链表309
9.4.1什么是链表 309
9.4.2建立简单的静态链表310
9.4.3建立动态链表311
9.4.4输出链表315
9.5共用体类型317
9.5.1什么是共用体类型317
9.5.2引用共用体变量的方式318
9.5.3共用体类型数据的特点319
9.6使用枚举类型323
9.7用typedef声明新类型名326
习题330
第10章对文件的输入输出331
10.1C文件的有关基本知识331
10.1.1什么是文件331
10.1.2文件名332
10.1.3文件的分类332
10.1.4文件缓冲区333
10.1.5文件类型指针333
10.2打开与关闭文件335
10.2.1用fopen函数打开数据文件335
10.2.2用fclose函数关闭数据文件337
10.3顺序读写数据文件338
10.3.1怎样向文件读写字符338
10.3.2怎样向文件读写一个字符串341
10.3.3用格式化的方式读写文件344
10.3.4用二进制方式向文件读写一组数据345
10.4随机读写数据文件349
10.4.1文件位置标记及其定位349
10.4.2随机读写 352
10.5文件读写的出错检测353
习题354
第11章常见错误分析355
附录370
附录A在Visual C++ 6.0环境下运行C程序的方法370
附录B常用字符与ASCII代码对照表377
附录CC语言中的关键字378
附录D运算符和结合性378
附录EC语言常用语法提要380
附录FC库函数384
参考文献390
媒体评论
如果只是编写和运行一个很简单的程序,上面介绍的步骤就够了。但是实际上要处理的问题比上面见到的例子复杂得多,需要考虑和处理的问题也复杂得多。程序设计是指从确定任务到得到结果、写出文档的全过程。
从确定问题到最后完成任务,一般经历以下几个工作阶段:
(1)问题分析。对于接手的任务要进行认真的分析,研究所给定的条件,分析最后应达到的目标,找出解决问题的规律,选择解题的方法。在此过程中可以忽略一些次要的因素,使问题抽象化,例如用数学式子表示问题的内在特性。这就是建立模型。
(2)设计算法。即设计出解题的方法和具体步骤。例如要解一个方程式,就要选择用什么方法求解,并且把求解的每一个步骤清晰无误地写出来。一般用流程图来表示解题的步骤。
(3)编写程序。根据得到的算法,用一种高级语言编写出源程序。
(4)对源程序进行编辑、编译和连接,得到可执行程序。
(5)运行程序,分析结果。运行可执行程序,得到运行结果。能得到运行结果并不意味着程序正确,要对结果进行分析,看它是否合理。例如把“b=a;”错写为“a=b;”,程序不存在语法错误,能通过编译,但运行结果显然与预期不符。因此要对程序进行调试(debug)。调试的过程就是通过上机发现和排除程序中故障的过程。经过调试,得到了正确的结果,但是工作不应到此结束。不要只看到某一次结果是正确的,就认为程序没有问题。例如,求c-b/a,当a=4,b=2时,求出c的值为0.5,是正确的,但是当a-0,b-2时,就无法求出c的值。说明程序对某些数据能得到正确结果,对另外一些数据却得不到正确结果,程序还有漏洞,因此,还要对程序进行测试(test)。所谓测试,就是设计多组测试数据,检查程序对不同数据的运行情况,从中尽量发现程序中存在的漏洞,并修改程序,使之能适用于各种情况,作为商品提供使用的程序,是必须经过严格测试的。
在本书的配套书《C程序设计(第四版)学习辅导》中对程序的调试和测试做了进一步的说明,读者可以参考。
(6)编写程序文档。许多程序是提供给别人使用的,如同正式的产品应当提供产品说明书一样,正式提供给用户使用的程序,必须向用户提供程序说明书(也称为用户文档)。内容应包括:程序名称、程序功能、运行环境、程序的装入和启动、需要输入的数据,以及使用注意事项等。
……
书摘
如果只是编写和运行一个很简单的程序,上面介绍的步骤就够了。但是实际上要处理的问题比上面见到的例子复杂得多,需要考虑和处理的问题也复杂得多。程序设计是指从确定任务到得到结果、写出文档的全过程。
从确定问题到最后完成任务,一般经历以下几个工作阶段:
(1)问题分析。对于接手的任务要进行认真的分析,研究所给定的条件,分析最后应达到的目标,找出解决问题的规律,选择解题的方法。在此过程中可以忽略一些次要的因素,使问题抽象化,例如用数学式子表示问题的内在特性。这就是建立模型。
(2)设计算法。即设计出解题的方法和具体步骤。例如要解一个方程式,就要选择用什么方法求解,并且把求解的每一个步骤清晰无误地写出来。一般用流程图来表示解题的步骤。
(3)编写程序。根据得到的算法,用一种高级语言编写出源程序。
(4)对源程序进行编辑、编译和连接,得到可执行程序。
(5)运行程序,分析结果。运行可执行程序,得到运行结果。能得到运行结果并不意味着程序正确,要对结果进行分析,看它是否合理。例如把“b=a;”错写为“a=b;”,程序不存在语法错误,能通过编译,但运行结果显然与预期不符。因此要对程序进行调试(debug)。调试的过程就是通过上机发现和排除程序中故障的过程。经过调试,得到了正确的结果,但是工作不应到此结束。不要只看到某一次结果是正确的,就认为程序没有问题。例如,求c-b/a,当a=4,b=2时,求出c的值为0.5,是正确的,但是当a-0,b-2时,就无法求出c的值。说明程序对某些数据能得到正确结果,对另外一些数据却得不到正确结果,程序还有漏洞,因此,还要对程序进行测试(test)。所谓测试,就是设计多组测试数据,检查程序对不同数据的运行情况,从中尽量发现程序中存在的漏洞,并修改程序,使之能适用于各种情况,作为商品提供使用的程序,是必须经过严格测试的。
在本书的配套书《C程序设计(第四版)学习辅导》中对程序的调试和测试做了进一步的说明,读者可以参考。
(6)编写程序文档。许多程序是提供给别人使用的,如同正式的产品应当提供产品说明书一样,正式提供给用户使用的程序,必须向用户提供程序说明书(也称为用户文档)。内容应包括:程序名称、程序功能、运行环境、程序的装入和启动、需要输入的数据,以及使用注意事项等。
……