前言C语言是在国内外广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。C语言诞生后,许多原来用汇编语言编写的软件,现在可以用C语言编写了(例如,著名的UNIX操作系统就是用C语言编写的),而学习和使用C语言要比学习和使用汇编语言容易得多。近年来,C语言不仅为计算机专业工作者所使用,而且为广大计算机应用人员(包括大量原来是非计算机专业的使用计算机的人们)所喜爱和使用。许多高等学校,不仅在计算机专业开设了C语言课程,而且在非计算机专业也开设了C语言课程。全国计算机等级考试、全国计算机应用技术证书考试(NIT)和全国各地区组织的大学生计算机统一考试都将C语言列入了考试范围。许多人用它编写应用软件。学习C语言已经成为广大计算机应用人员和广大青年学生的迫切要求。由于C语言牵涉的概念比较复杂,规则繁多,使用灵活,容易出错,不少初学者感到困难,迫切希望有一本容易入门、容易学习的C语言教材。在许多同志的鼓励和督促下,作者于1991年编写了《C程序设计》,由清华大学出版社出版,以期抛砖引玉。
该书针对初学者的特点和认知规律,精选内容,分散难点,降低台阶,例题丰富,通过深入浅出地叙述,阐明了复杂的概念,力求做到内容新颖、概念清晰、实用性强、通俗易懂。该书出版后受到广大读者的热烈欢迎,许多读者说“C语言原来是比较难学的,但自从《C程序设计》出版后,C语言变得不难学了”, “作者深入浅出地叙述,使我们对C语言由害怕到兴趣盎然”. 1999年,作者对本书进行了修订,使之进一步完善,出版了本书的第二版。十多年来,该书累计发行了700多万册,平均每年印刷50万册,居全国同类书的首位。全国大多数高校把本书作为正式教材。许多高校的研究生入学考试都指定本书为必读教材,国内许多介绍C语言的书籍以本书为蓝本,许多在职干部和计算机爱好者通过自学本书掌握了C语言程序设计。在推广普及计算机程序设计过程中,本书成为广大初学者学习C语言程序设计的主流用书。本书曾荣获原电子工业部优秀教材一等奖、全国高等院校计算机基础教育研究会优秀教材一等奖、高校出版社优秀畅销书特等奖。这是对我的莫大鼓励和鞭策。我深切地感受到广大读者对作者的殷切期望。根据计算机科学技术的发展和教学实践的需要,作者对《C程序设计》一书再次进行了修订,出版第三版。
第三版保持了第一版的写作风格,保留了通俗易懂的特点,并在以下几方面做了修改。(1) 在本书的前两版中,采用Turbo C 2.0对程序进行编译。由于近年来,大多数人习惯使用Windows操作系统的图形界面,用鼠标进行操作,感到用Turbo C 2.0不大方便。在第三版中改用Turbo C++ 3.0作为编译工具。Turbo C++ 3.0虽然是基于DOS界面的,但它支持鼠标操作,可以在Windows环境下方便地使用。它的使用方法与Turbo C类似。用过Turbo C的人很容易掌握Turbo C++ 3.0. Turbo C++本来是用来编译C++程序的,由于C++是从C语言发展而来的,C++对C语言是兼容的,用C语言编写的程序可以用C++编译系统进行编译。在与本书配套的《C程序设计题解与上机指导》(第三版)中还介绍了Visual C++ 6.0对C程序的编译方法。读者也可以使用Visual C++ 6.0。这样也有利于读者今后向C++过渡。本书的例题程序是用Turbo C++ 3.0或Visual C++ 6.0进行编译的。用C++编译系统时,对程序要求更加规范。例如,在定义和声明函数时,必须指定函数类型;程序中如果用到系统提供的库函数(包括printf和scanf函数),都必须在程序文件的开头用#include命令将有关头文件包含进来。
因此,本书的程序基本上采用下面的形式: #include /* 如果程序中用到系统提供的输入输出函数 */void main()/* 要求指定main函数的类型 */{}(2) 对各章内容和表述进行了细致的修改,调整了部分内容和例题,使读者更容易理解。(3) 本书第二版的14章和15章介绍C++的初步知识。由于作者已出版了《C++程序设计》(清华大学出版社出版),对C++做了全面、详细的介绍,读者如需了解和学习C++,可以参考该书,同时为了压缩篇幅,在第三版中不再保留这两章的内容。相信修订后的第三版会更加符合读者的需要。关于怎样学习程序设计,作者提出以下几点看法。(1) 近年来,有一些面向对象的计算机语言陆续问世,受到欢迎。有些人认为面向过程的C语言已经过时了,不必学了。这是一种误解。不应把面向对象和面向过程对立起来,在面向对象程序设计中仍然要用到面向过程的知识。作为计算机程序开发人员,既要掌握面向对象程序设计的知识,又要掌握面向过程程序设计的知识。面向过程程序设计仍然是计算机工作者的基本功。C++是为开发大型程序而研制的,它比C语言要复杂得多,学习C++也比学习C语言困难得多。
事实上,将来并不是每个人都需要用C++编制大型程序。对于计算机专业人员,学习和使用C++是理所当然的。对于非计算机专业人员,可以先学习C语言,打下程序设计的基础,在以后需要时再学习和使用C++。有了C语言基础,再学习C++就容易多了。也可以在学习C语言的基础上,再学习一些面向对象程序设计的初步知识,为以后进一步学习和使用C++打下基础。目前,国内外的高等学校都把C语言程序设计作为一门重要的课程,我国各种计算机统一考试都包括C语言程序设计的科目。现在大多数高校把C语言作为第一门计算机语言进行教学,这是可行的,学生是能够学习好的。(2) 在学校中,学习程序设计课程的目的是掌握设计程序的思路,学会用计算机语言编写程序,以实现所需处理的任务。要正确处理算法与语法的关系,算法是程序的核心、是灵魂,语法是外壳、是工具。不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序,但是只学会语法,甚至能把语法背得滚瓜烂熟,也不可能编写出好的程序。一定要把重点放在解题的思路上,通过大量的例题学习怎样设计一个算法,构造一个程序。在学习开始时更不要在语法细节上死背死抠。请记住: 重要的是学会编程序,而不是背语法。
一开始就要学会看懂程序,编写简单的程序,然后逐步深入。有一些语法细节是需要通过较长期的实践才能熟练地掌握的。初学时,切忌过早地滥用C语言的某些容易引起错误的细节(如不适当地使用++和--的副作用). (3) 不能设想今后一辈子只使用在学校里学过的某一种语言。但是,无论用哪一种语言进行程序设计,其基本规律是一样的。在学习时一定要学活用活,举一反三,掌握规律,在以后需要时能很快地掌握其他新的语言进行工作。 (4) 在学校学习阶段,主要是学习程序设计的方法,进行程序设计的基本训练,打下将来进一步学习的基础。对多数学生来说,不可能通过几十小时的学习,由一个门外汉变成编程高手,编写出大型而实用的程序。学习程序设计课程时,应该把精力放在最基本、最常用的内容上,学好基本功。如果对学生有较高的程序设计要求,应当在学习本课程后,安排一次集中的课程设计环节,按照实际工作的要求,完成有一定规模的程序设计。(5) 程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行,希望读者一定要重视实践环节,包括编程和上机。既会编写程序,又会调试程序。衡量这门课学习的好坏,不是看你“知不知道”,而是“会不会干”. 考核的方法不能主要用是非题和选择题,而应当把重点放在编制程序和调试程序上。
(6) 使用哪一种编译系统并不是原则问题,重要的是编程能力的培养。程序编好以后,用哪一种编译系统进行编译都可以。读者不应该只会用某一种编译环境,应当了解、接触和使用不同的编译环境。不同的编译系统,其功能和使用方法有些不同,编译时给出的信息也不完全相同,要注意参阅使用说明书,特别要在使用中积累经验,举一反三。为了帮助读者学习本书,作者还编了一本《C程序设计题解与上机指导》(第三版),提供本书中各章习题的参考答案,以及上机实习指导。作者从事计算机教育和计算机普及工作二十多年,最深刻的体会是:作者心中要永远装着读者,要处处为读者考虑,要和读者将心比心。我的心中经常浮现出千万读者殷切期望的目光。读者热切地期望作者能为他们写出一批好书,使他们的学习能事半功倍。作者多年来以此来鞭策自己,希望能摸索出一些能减少初学者困难的方法,并做了一些探索和尝试。要写好一本书,是不容易的。要深入了解自己工作的对象,有的放矢,准确定位;要根据应用的需要,合理取舍,精选内容;要认真研究学习者的认识规律,采用读者容易理解的方法,深入浅出,通俗易懂;要善于把复杂问题简单化,而不能把简单问题复杂化。写书不仅是简单地把有关的技术内容告诉读者,而且要考虑怎样写才能使读者容易理解。
要下很大的功夫,有时为了找到一个好的例子或一个通俗的比喻,苦苦思索好几天,每一句话都要反复斟酌推敲,总是努力把每一本书都做成精品。作为教师和作者,可以不计较自己的作品是否获奖,但是应当努力使自己的作品得到千万读者的认可和赞誉,成为事实上的精品,这才是最高的奖赏。最后,对多年来关心支持本书和本书作者的领导和朋友们表示由衷的感谢。尤其是原全国政协副主席、国务委员、科委主任、中国工程院院长宋健院士,中国计算机学会名誉理事长、中国科学院资深院士张效祥先生等前辈给予作者有力的支持和指导。全国高等院校计算机基础教育研究会多年来始终全力支持和帮助作者在计算机教育和计算机普及领域所从事的工作。全国高校广大教师多年来和我共同奋斗,千万读者每时每刻都给予我巨大的、宝贵的关心和支持。清华大学出版社十几年始终密切合作与支持。没有这一切,我不可能取得今天的成就。我永远感谢曾经帮助和支持过我的、相识的和不相识的同志和朋友。谭亦峰工程师参加了本书部分章节的编写和程序调试工作。由于作者水平有限,本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评指正。谭浩强于清华园
more >