正版保障 假一赔十 可开发票
¥ 39.35 8.0折 ¥ 49 全新
仅1件
作者谭浩强 谭亦峰 金莹
出版社清华大学出版社
ISBN9787302556169
出版时间2020-07
装帧平装
开本16开
定价49元
货号29001866
上书时间2024-12-15
程序设计是计算机工作者的一项基本功。C语言是在国内外广泛学习和使用的一种计算机语言,受到广大计算机爱好者的喜爱。我国几乎所有的理工科大学都开设了C语言程序设计课程。
为了使C语言程序设计课程教学取得更好的效果,需要弄清楚以下几个问题。
一、 为什么要学习程序设计
计算机的本质是“程序的机器”,程序和指令的思想是计算机系统中基本的概念。只有懂得程序设计,懂得计算机是怎样工作的,才能较深入地理解和应用计算机,才能较好地懂得怎样使计算机按照人们的意图进行工作。学习程序设计,能学习到计算机处理问题的方法,培养计算思维,培养分析问题和解决问题的能力。
通过学习程序设计,使学生具有程序设计的初步知识,具有编写程序的初步能力,知道软件开发的过程和特点,有利于在各专业领域的工作者在今后工作中能够与程序开发人员沟通合作,进行应用软件的开发工作。因此,大学生(包括高职高专学生)学习程序设计是很有好处的。
具体地说,学习程序设计的目的有两个方面: ①学习用计算机解决问题的思路和方法; ②学习怎样用计算机工具去实现算法,即利用计算机去完成任务。
二、 C语言是基础而实用的语言
进行程序设计,必须用计算机语言作为工具,否则只是纸上谈兵。可供选择的语言很多且各有特点。C语言既是基础,又是实用的语言。并不是每一种语言都具有此特点,有的语言实用,但不能作为基础语言(如FORTRAN);有的语言可以作为基础语言,但实际应用不多(如Pascal)。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点;既适合于编写系统软件,又能方便地用来编写应用软件,是多年来在国内外使用广泛的一种计算机语言。
国内外许多专家认为,C语言是基本的通用语言,有了C语言的基础后,以后过渡到任何一种语言(如C 、C#、Java)都不会困难。C语言被认为是计算机专业人员的基本功。
三、 怎样学习C语言程序设计
1. 准确掌握本课程的特点与定位
C语言程序设计不是一门理论课程,它有很强的应用性,要根据应用的需要来设计课程体系和取舍内容。学习好坏的标准不是“知道什么”,而是“会做什么”,应当强调培养应用能力。但是它又不同于高职高专一些技能性或工艺性的课程,学习的过程不是简单重复模仿、“熟能生巧”,而是需要领会精神、掌握规律、开动脑筋、认真思考、有所创造,学习的过程是充满思想活力的过程。学习的方法不是简单的“动手干”,而是要“动脑思考,动手实践”,实践包括编程和上机。拿到任务后,首先要认真思考解题思路,设计算法,然后编写出优质的程序,这是有创造性的智力劳动,是学习和培养科学思维的过程。
本书介绍了许多例题,并不是要求学生只是看懂和重复这些例题,而是要求学生学习解决问题的思路,从而能举一反三,能独立解决其他问题。
2. 正确处理好算法和语法的关系
程序设计有四个要素: ①算法是程序的灵魂; ②数据结构是加工的对象; ③语言是编程工具(算法要通过语言来实现); ④要采用合适的程序设计方法。程序设计教学是否成功取决于能否将以上四个要素(尤其是算法与语言二者)紧密结合。
本书自始至终把四个要素自然而有机地结合,尤其是能正确处理好算法和语法的关系。算法和语法这二者都重要,不掌握算法就如同无头苍蝇,无从编程;不掌握语法就编不出能用的程序。学习程序设计应当把主要精力放在算法上,算法是活的,语法是死的。基本的语法规则是需要了解和掌握的,但是没有必要去死记那些烦琐的语法细节,用到时查一下就行了。程序看多了、编多了,自然就会正确使用语法规则,学习C语言程序设计,不要把重点放在死记语法规则上。
本书不是介绍语法的书籍,不是以语法为主线构建课程体系,也不是系统介绍算法的教材,而是从应用的角度出发, 以编程为目的和主线,由浅入深地介绍怎样用C语言处理问题。通过精心安排顺序,细心选择例子,算法的选择也是由易而难,与此同时引入相应的语法规则,把算法和语法紧密结合,同步展开,步步深入,使读者容易学习。
具体的做法是: 每一章先举几个比较简单的例子,引入新的问题,接着介绍怎样利用C语言去解决比较简单的问题,然后再循序渐进地介绍较深入的算法和程序,使学生在富有创意、引人入胜的编程中学会了算法,掌握了语法,领悟了程序设计的思想和方法。把枯燥无味的语法规则变成生动活泼的编程应用。
建议教师在讲授本书内容时,以程序为中心展开,着重讲清解题思路以及怎样用程序去实现它,不要孤立地介绍语法规则。可以在讲解程序时扼要地介绍有关的语法规则,请学生课后自己阅读,并通过上机实践掌握它。
3. 采取新的教学思路和方法
以往的课程教学采取的方法是 “提出概念—解释概念—举例说明”的方式,作者在多年前根据课程特点提出了“提出问题—解决问题—归纳分析”这种新方式,不是先抽象后具体,先理论后实际,先一般后个别,而是由具体到抽象,由实际到理论,由个别到一般,由零散到完整。实践证明这种方法对广大计算机的初学者是成功的,可以收到事半功倍的效果。根据这个原则,我们创建了新的教学和教材体系,已在实践中证明效果很好。
在介绍每一个程序时,我们的做法是: 先提出任务目标,然后分析问题,探讨解题思路,构造算法,接下来才是根据算法编写程序,而不是先列出一个程序再解释程序。对每一个问题都按照“任务要求—解题思路—编写程序—运行结果—程序分析”等步骤展开。对每个求解的问题不仅给出程序,而且给出运行结果,使读者看到结果,便于读者对照分析。有些程序还包括对改进程序的讨论,这样学生在学习过程中就不觉得抽象,而会觉得算法具体有趣,看得见,摸得着。
本书的叙述充满启发性,在程序分析中不断提出问题让读者思考,如“这是为什么?”“为什么要这样做?”“为什么这个方法是错的?”“还有什么更好的方法吗?”等,启发学生自己思考求解,培养他们独立思考的能力。对于需要学生注意的内容用说明、注意、提醒、思考等标题以醒目的字体标注,从而引起注意,使读者的思路更加清晰,更容易接受和理解。
在各章中由浅入深地结合例题介绍各种典型的算法。对穷举、递推、迭代、递归、排序(包括比较交换法、选择法、起泡法)、矩阵运算、字符处理应用等算法做了详细的介绍,对难度较大的算法还做了清晰详尽的分析。引导读者在拿到题目后,先考虑算法再编程,而不是坐下来就写程序,着力培养学生的科学思维能力,培养好的习惯。
4. 作者对有效地学习C语言程序设计的建议
(1) 在学习开始时不要在语法细节上死记死抠。请记住: 重要的是学会编程序,而不是死记语法。一开始就要学会看懂程序,编写简单的程序,然后逐步深入。有一些语法细节需要通过长期的实践才能熟练地掌握。初学时,切忌过早地滥用C语言的某些容易引起歧义的细节(如不适当地使用 和--,就会出现一些副作用)。
(2) 不能设想今后一辈子只使用在学校里学过的某一种计算机语言。但是无论使用哪一种语言进行程序设计,其基本思路和方法都是一样的,在大学里学哪一种语言并不是一个很重要的原则问题。学会了一种计算机语言,可以很快地学会另一种语言。因此,在学习时一定要学活用活,举一反三,掌握规律,学会算法,在以后需要时能很快地掌握其他的计算机语言来进行工作。
(3) 在学校学习阶段主要是学习程序设计的方法,进行程序设计的基本训练,打好将来进一步学习和应用的基础。学习程序设计课程时,应该把精力放在基本、常用的内容上,学好基本功。如果对学生有较高的程序设计要求,应当在学习本课程后安排一次集中的课程设计环节,完成有一定规模的程序设计。
(4) 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行,希望读者一定要重视实践环节,包括编程和上机。既会编写程序,又会调试程序。考核的方法不能采用标准题(是非题或选择题),而应当把重点放在编制程序和调试程序上。
(5) 使用哪一种编译系统并不是原则问题。程序编好以后,用哪一种编译系统进行编译都可以。如果有条件,可以了解和使用不同的编译环境。不同的编译系统,其功能和使用方法有些不同,编译时给出的信息也不完全相同,但基本方法是大同小异的。要在使用中积累经验,举一反三。
四、 本书的特点1. 本书的主要特点是概念清晰、通俗易懂(1) 概念清晰。本书对所有重要的概念都做了明确、清晰和透彻的阐述与分析,每引出一个概念,都明确讲清楚三点: ①它是什么?②它有什么用?③怎么用它去处理和解决问题。所有的概念都能从本书找到明确的说明。
(2) 通俗易懂。作者善于用通俗易懂的方法和语言阐明复杂的概念,尽量少用深奥难懂的专业术语。不把简单的问题复杂化,而是使复杂的问题简单化。例如“指针”是C语言的一个大难点,许多人感到难以理解,但在本书中作者对“指针”的概念做了科学而通俗的说明,使人容易理解,一看即懂。
2. 本书内容是根据高职高专的特点与要求确定的,适用于高职高专院校
在内容选取时,本书没有包括C语言中一些不常用的内容(如较复杂的输入/输出格式控制、指针较深入的部分、共用体类型、枚举类型、随机文件等。作者把它们作为提高的内容放入与本书的学习辅导一书中供大家选学),但是仍然保持了本书内容的系统性和完整性。由于本书通俗易懂,易于理解,因此,学生能够在有限的学时内学到更多的内容,达到更高的要求。作者认为应当保证高职教学的质量,不宜过分降低高职学习的要求,否则掌握不了基本的编程方法。
3. 本书从有效学习程序设计的角度出发来构建教材体系
本书不以理论知识来构建教材体系,也不以C语言的语法规则来构建教材体系,而是从怎样有效学习程序设计的角度出发来设计教材的内容,使学生从易到难、从简到繁、循序渐进地学会编程。作者在多年教学实践中对初学者的情况有深入的了解和研究,充分考虑学生的认知规律,构建了一个既科学又易学的教材体系,并精心设计教材体系,以程序设计为主导,降低门槛,分散难点,使每一章每一节的“台阶”都不大,很容易循序渐进,逐步深入。
4. 怎样使用本书
(1) 本书中的内容是基本的要求,希望学生能基本掌握。在每一章的后有本章小结,归纳本章的要点,尽量做到提纲挈领、画龙点睛,以加深印象,增强条理性。
本书内容较多,希望能安排足够的学时。前面几章难度较小,后面几章难度稍大些,希望教学时能合理安排,统筹兼顾,防止前松后紧。尤其对“指针”部分要多花些时间和精力,使学生能真正理解并掌握。如果有少数学校学时实在不够,可以对第8章和第9章的内容做简单介绍,以使学生有一个初步了解,但不要跳过不学,这样在以后需要时再深入学习就不会感到困难。
(2) 本书便于自学。具有高中以上文化水平的人,即使没有教师讲解,也能基本上看懂本书的大部分内容,这样就有可能做到: 教师少讲,指定部分自学,保证上机实践。
(3) 为了满足学习能力较好的学生进一步提高的要求,我们另外出版了《C语言程序设计教程学习辅导》(ISBN 9787302556176)一书(清华大学出版社出版),其中的第二部分提供了学习本书各章时应进一步提高的内容,可供师生在教学中参考。
(4) 在教材的每一章的后都有习题,教师可从中选择一部分要求学生练习并完成。习题包括两类: 一类是程度适中,大多数学生是可以独立完成的;另一类有一定难度,水平较高的学生可以完成其中一部分。如果学生感到无从下手,可以参考《C语言程序设计教程学习辅导》的部分“各章习题参考解答”。在该部分中提供了近100个问题的解答,实际上是提供了100个补充例题供师生参考。教师可以从中选一些作为补充例题在课堂上讲授,或指定学生自学,这样可以进一步提高教学水平。
希望大家善于利用《C语言程序设计教程学习辅导》中的“习题解答”和“提高部分”这两类资源。实际上我们提供的是一个多层面的教学体系,教师可以根据不同学校的教学要求、学生基础、学时情况等因素,把教材基本内容、习题解答、提高部分、上机调试四者合理选用、有机组合,组成适合不同人群的教学方案,以取得更好的效果。
(5) 学习程序设计必须重视实践环节,至少保证上机实践的时间不少于课堂讲授的1/2,能增多一点时间更好。可以把课后指定要完成的作业与上机调试程序统一起来,完成作业后即上机调试程序。《C语言程序设计教程学习辅导》的第三部分“上机实践指南”可供上机实践时参考。
(6) 为了帮助更多的人学好C语言程序设计,本书作者之一、南京大学计算机基础教学部主任金莹副教授以谭浩强所著的《C程序设计》一书为教材,制作了慕课(MOOC),在爱课平台(http://www.icourse163.org/course/NJU1207002811)和清华大学出版社平台(https://www.wqketang.com/course/88091)都可以收看到。《C程序设计》与本书的思路、体系和内容都是一致的,只是《C程序设计》内容更多一些。学习本书的读者可以选择该慕课。
本书是在谭浩强教授主持下由谭浩强的团队合作完成的,参加者有谭浩强、谭亦峰和金莹老师,谭浩强为主要执笔者。本书的编写和出版得到全国高校计算机基础教育研究会高职高专专业委员会和清华大学出版社的大力支持,得以在短时间内顺利出版,在此特向所有支持我们的朋友们表示由衷的谢意。
本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评、指正。
谭浩强2020年3月1日于清华园
本书共分为9章:*章主要介绍简单的C语言程序及程序编辑环境的应用;第二章主要讲解C语言的数据类型和表达式;第三章主要讲解简单程序的设计方法;第四章主要讲解结构化程序设计;第五章主要讲解数组;第六章主要讲解函数;第七章主要讲解地址和指针;第八章主要介绍结构体;第九章主要介绍C语言中的文件。
谭浩强,男,教授,现担任全国高等院校计算机基础教育研究会会长、*全国计算机应用技术证书(NIT)考试委员会主任委员,知名计算机教育专家。
第1章程序设计和C语言1
1.1计算机程序和计算机语言1
1.2C语言的发展过程2
1.3从简单的C语言程序开始3
1.4C语言程序的结构7
1.5运行C语言程序的步骤与方法8
1.6算法是程序的灵魂10
1.6.1什么是算法10
1.6.2算法 数据结构=程序11
1.6.3怎样表示一个算法12
1.7结构化程序设计方法18
本章小结20
习题21
第2章C语言程序设计初步22
2.1顺序程序设计举例22
2.2数据的类型和表现形式26
2.2.1C语言的数据类型26
2.2.2数据表现形式——常量和变量27
2.3在计算机中存储数据28
2.3.1数据在计算机中以二进制形式存储28
2.3.2位、字节和地址29
2.4整型数据的属性与运算30
2.4.1整型数据的分类30
2.4.2整型数据在内存中的存储方式31
2.4.3整型数据运算程序举例32
2.5实型数据的属性与运算33
2.5.1实型数据的分类33
2.5.2实型常量的表示形式342.5.3实型数据的存储形式34
2.6字符型数据的属性与运算35
2.6.1字符数据运算的简单例子35
2.6.2字符常量和字符变量35
2.6.3字符型数据的存储方式36
2.6.4字符数据与整型数据在一定条件下可以通用37
2.6.5字符串常量39
2.7运算符与表达式40
2.7.1算术运算符40
2.7.2算术表达式41
2.8C语言的语句综述43
2.9赋值表达式和赋值语句44
2.9.1赋值表达式44
2.9.2赋值语句46
2.10数据的输入/输出47
2.10.1数据输入/输出的概念47
2.10.2字符数据的输入/输出48
2.10.3格式的输入/输出52
本章小结59
习题61
第3章选择结构程序设计63
3.1简单的选择结构程序63
3.2选择结构中的关系运算65
3.2.1关系运算符及其优先次序65
3.2.2关系表达式65
3.3选择结构中的逻辑运算66
3.3.1逻辑运算符及其优先次序67
3.3.2逻辑表达式68
3.4用if语句实现选择结构69
3.4.1if语句的三种形式69
3.4.2if语句的嵌套71
3.5利用switch语句实现多分支选择结构72
3.7选择结构程序综合举例75
本章小结80
习题80
第4章循环结构程序设计82
4.1程序中需要用循环结构82
4.2用while语句和do...while语句实现循环82
4.2.1用while语句实现循环82
4.2.2用do...while语句实现循环84
4.3用for 语句实现循环87
4.3.1for语句的一般形式和执行过程87
4.3.2for循环程序举例88
4.4循环的嵌套91
4.5提前结束循环92
4.5.1用break语句提前退出循环92
4.5.2用continue语句提前结束本次循环93
4.6几种循环的比较95
4.7循环程序综合举例96
本章小结101
习题101
第5章利用数组处理批量数据103
5.1为什么要用数组103
5.2怎样定义和引用一维数组103
5.2.1怎样定义一维数组104
5.2.2怎样引用一维数组的元素104
5.2.3一维数组的初始化105
5.2.4一维数组程序举例106
5.3怎样定义和引用二维数组109
5.3.1怎样定义二维数组109
5.3.2怎样引用二维数组的元素110
5.3.3二维数组的初始化111
5.3.4二维数组程序举例112
5.4字符数组115
5.4.1怎样定义字符数组及对其初始化115
5.4.2怎样引用字符数组116
5.4.3字符串和字符串结束标志117
5.4.4怎样进行字符数组的输入/输出119
5.4.5字符串处理函数121
5.4.6字符数组应用举例122
本章小结125
习题126
第6章用函数实现模块化程序设计128
6.1函数是什么128
6.2函数的定义和调用130
6.2.1为什么要定义函数130
6.2.2怎样定义函数131
6.2.3怎样调用函数132
6.2.4对被调用函数的声明和函数原型135
6.3函数的嵌套调用137
6.4函数的递归调用139
6.5数组作为函数参数145
6.5.1用数组元素作函数实参145
6.5.2用数组名作函数参数147
6.6变量的作用域——局部变量和全局变量153
6.6.1什么是局部变量153
6.6.2什么是全局变量153
本章小结156
习题157
第7章善于使用指针158
7.1什么是指针158
7.2指针变量160
7.2.1使用指针变量访问变量160
7.2.2怎样定义指针变量161
7.2.3怎样引用指针变量162
7.2.4指针变量作为函数参数164
7.3通过指针引用数组170
7.3.1数组元素的指针170
7.3.2通过指针引用数组元素170
7.3.3指针的运算172
7.3.4用数组名作函数参数174
7.4通过指针引用字符串180
7.4.1字符串的表示形式180
7.4.2用字符指针作函数参数184
7.4.3字符指针变量和字符数组的区别186
本章小结188
习题190
第8章根据需要创建数据类型192
8.1定义和引用结构体变量192
8.1.1怎样创建结构体类型192
8.1.2怎样定义结构体类型变量194
8.1.3怎样引用结构体变量195
8.2使用结构体数组198
8.2.1定义结构体数组198
8.2.2结构体数组应用举例200
8.3结构体指针201
8.3.1指向结构体变量的指针201
8.3.2指向结构体数组的指针203
本章小结205
习题206
第9章利用文件保存数据 207
9.1C语言文件的有关概念207
9.1.1什么是文件207
9.1.2文件名208
9.1.3文件的分类208
9.1.4文件缓冲区209
9.1.5文件类型指针209
9.2文件的打开与关闭210
9.2.1用fopen()函数打开文件210
9.2.2用fclose()函数关闭文件212
9.3文件的顺序读/写212
9.3.1向文件读/写字符212
9.3.2向文件读/写一个字符串216
9.3.3文件的格式化读/写219
9.3.4用二进制方式读/写文件220
本章小结224
习题225
附录A常用字符与ASCII代码对照表227
附录BC语言中的关键字229
附录C运算符和结合性230
附录DC语言常用语法提要232
附录EC语言库函数236
参考文献242
本书共分为9章:*章主要介绍简单的C语言程序及程序编辑环境的应用;第二章主要讲解C语言的数据类型和表达式;第三章主
— 没有更多了 —
以下为对购买帮助不大的评价