序
从20世纪70年代末、80年代初开始,我国的高等院校开始面向各个专业的全体大学生开展计算机教育。面向非计算机专业学生的计算机基础教育牵涉的专业面广、人数众多,影响深远,它将直接影响我国各行各业、各个领域中计算机应用的发展水平。这是一项意义重大而且大有可为的工作,应该引起各方面的充分重视。
三十多年来,全国高等院校计算机基础教育研究会和全国高校从事计算机基础教育的老师始终不渝地在这片未被开垦的土地上辛勤工作,深入探索,努力开拓,积累了丰富的经验,初步形成了一套行之有效的课程体系和教学理念。高等院校计算机基础教育的发展经历了3个阶段:20世纪80年代是初创阶段,带有扫盲的性质,多数学校只开设一门入门课程;20世纪90年代是规范阶段,在全国范围内形成了按3个层次进行教学的课程体系,教学的广度和深度都有所发展;进入21世纪,开始了深化提高的第3阶段,需要在原有基础上再上一个新台阶。
在计算机基础教育的新阶段,要充分认识到计算机基础教育面临的挑战。
(1) 在世界范围内信息技术以空前的速度迅猛发展,新的技术和新的方法层出不穷,要求高等院校计算机基础教育必须跟上信息技术发展的潮流,大力更新教学内容,用信息技术的新成就武装当今的大学生。
(2) 我国国民经济现在处于持续快速稳定发展阶段,需要大力发展信息产业,加快经济与社会信息化的进程,这就迫切需要大批既熟悉本领域业务,又能熟练使用计算机,并能将信息技术应用于本领域的新型专门人才。因此需要大力提高高校计算机基础教育的水平,培养出数以百万计的计算机应用人才。
(3) 21世纪,信息技术教育在我国中小学中全面开展,计算机教育的起点从大学下移到中小学。水涨船高,这样也为提高大学的计算机教育水平创造了十分有利的条件。
迎接21世纪的挑战,大力提高我国高等学校计算机基础教育的水平,培养出符合信息时代要求的人才,已成为广大计算机教育工作者的神圣使命和光荣职责。全国高等院校计算机基础教育研究会和清华大学出版社于2002年联合成立了“中国高等院校计算机基础教育改革课题研究组”,集中了一批长期在高校计算机基础教育领域从事教学和研究的专家、教授,经过深入调查研究,广泛征求意见,反复讨论修改,提出了高校计算机基础教育改革思路和课程方案,并于2004年7月发布了《中国高等院校计算机基础教育课程体系2004》(简称CFC 2004)。国内知名专家和从事计算机基础教育工作的广大教师一致认为CFC 2004提出了一个既体现先进性又切合实际的思路和解决方案,该研究成果具有开创性、针对性、前瞻性和可操作性,对发展我国高等院校的计算机基础教育具有重要的指导作用。根据近年来计算机基础教育的发展,课题研究组先后于2006、2008和2014年发布了《中国高等院校计算机基础教育课程体系》的新版本,由清华大学出版社出版。
为了实现CFC提出的要求,必须有一批与之配套的教材。教材是实现教育思想和教学要求的重要保证,是教学改革中的一项重要的基本建设。如果没有好的教材,提高教学质量只是一句空话。要写好一本教材是不容易的,不仅需要掌握有关的科学技术知识,而且要熟悉自己工作的对象,研究读者的认识规律,善于组织教材内容,具有较好的文字功底,还需要学习一点教育学和心理学的知识等。一本好的计算机基础教材应当具备以下5个要素:
(1) 定位准确。要明确读者对象,要有的放矢,不要不问对象,提笔就写。
(2) 内容先进。要能反映计算机科学技术的新成果、新趋势。
(3) 取舍合理。要做到“该有的有,不该有的没有”,不要包罗万象、贪多求全,不应把教材写成手册。
(4) 体系得当。要针对非计算机专业学生的特点,精心设计教材体系,不仅使教材体现科学性和先进性,还要注意循序渐进,降低台阶,分散难点,使学生易于理解。
(5) 风格鲜明。要用通俗易懂的方法和语言叙述复杂的概念。善于运用形象思维,深入浅出,引人入胜。
为了推动各高校的教学,我们愿意与全国各地区、各学校的专家和老师共同奋斗,编写和出版一批具有中国特色的、符合非计算机专业学生特点的、受广大读者欢迎的优秀教材。为此,我们成立了“中国高等院校计算机基础教育课程体系规划教材”编审委员会,全面指导本套教材的编写工作。
本套教材具有以下几个特点:
(1) 全面体现CFC的思路和课程要求。可以说,本套教材是CFC的具体化。
(2) 教材内容体现了信息技术发展的趋势。由于信息技术发展迅速,教材需要不断更新内容,推陈出新。本套教材力求反映信息技术领域中新的发展、新的应用。
(3) 按照非计算机专业学生的特点构建课程内容和教材体系,强调面向应用,注重培养应用能力,针对多数学生的认知规律,尽量采用通俗易懂的方法说明复杂的概念,使学生易于学习。
(4) 考虑到教学对象不同,本套教材包括了各方面所需要的教材(重点课程和一般课程,必修课和选修课,理论课和实践课) ,供不同学校、不同专业的学生选用。
(5) 本套教材的作者都有较高的学术造诣,有丰富的计算机基础教育的经验,在教材中体现了研究会所倡导的思路和风格,因而符合教学实践,便于采用。
本套教材统一规划,分批组织,陆续出版。希望能得到各位专家、老师和读者的指正,我们将根据计算机技术的发展和广大师生的宝贵意见及时修订,使之不断完善。
全国高等院校计算机基础教育研究会荣誉会长
“中国高等院校计算机基础教育课程体系规划教材”编审委员会主任
前言
C语言是国内外广泛使用的计算机语言。许多高校都开设了“C语言程序设计”课程。作者于1991年编写了《C程序设计》,由清华大学出版社出版,并于1999年、2005年和2010年进行了三次修订,受到了广大读者的欢迎,认为概念清晰,叙述详尽,例题丰富,深入浅出,通俗易懂,被大多数高校选为教材。至2017年5月该书已累计发行1400万册,成为国内C语言教学的主流用书。
根据发展的需要,作者于2017年出版《C程序设计(第五版)》,为了配合该教材的教学,同时编写了这本《C程序设计(第五版)学习辅导》。
本书包括4个部分。
第1部分是《C程序设计(第五版)》习题和参考解答。在这一部分中包括了清华大学出版社出版的《C程序设计(第五版)》一书的全部习题。其中有些题的难度高于书中的例题,目的是使学生不满足于已学过的内容,而要举一反三,善于拓展已有知识,提倡创新精神,培养解决问题的能力。希望教师能指定学生完成各章中有一定难度的习题。希望学生能尽量多做习题,以提高自己的水平。
为了方便读者,本书提供了参考解答。除了其中少数概念问答题,由于能在教材中直接找到答案,为节省篇幅本书不另给出答案外,对所有编程题一律给出参考解答,包括程序代码和运行结果。对于比较难的习题,除了给出程序(程序中加了注释)外,还给出NS流程图,并作了比较详细的说明,以便于读者理解。对于相对简单的问题,只给出程序代码和运行结果,不作详细说明,以便给读者留下思考的空间。对有些题目,我们给出了两种参考答案,供读者参考和比较,以启发思路。
在这部分中提供了132个不同类型、不同难度的程序,全部程序都在Visual C++ 6.0环境下调试通过。由于篇幅和课时的限制,在教材和讲授中不可能介绍很多例子,只能介绍一些典型的例题。本书中给出的程序实际上是对《C程序设计(第五版)》一书例题的补充,希望读者能充分利用它。即使没有时间自己做出全部习题,如果能把全部习题的参考解答都看一遍,而且都能看懂,理解不同程序的思路,也会大有裨益,能扩大眼界,丰富知识。
应该说明,本书给出的程序并非是唯一正确的解答,甚至不一定是最佳的一种。对同一个题目可以编出多种程序,我们给出的只是其中的一种。读者在使用本书时,千万不要照抄照搬,我们只是提供了一种参考方案,读者完全可以编写出更好的程序。
第2部分是深入学习C程序设计。包括预处理指令、位运算、常见错误分析和C程序案例,这是对教材内容的补充。
“预处理指令”一章详细地介绍预处理指令,使读者对这些指令有系统的了解并善于利用它们,以提高编程效率。
位运算是C语言区别于其他高级语言的一个重要特点。C语言能对位进行操作,使得C具有比较接近机器的特点。在编写系统软件和数据采集、检测与控制中往往需要用到位运算。信息类专业的学生需要学习这方面的知识,因此,本书专门列出一章,介绍位运算的基本知识,供需要者选学,信息类专业可以把它列入教学内容。
“常见错误分析”是作者总结归纳的初学者常犯的35种错误,供读者编写程序时参考。“C程序案例”一章介绍了3个实用程序,可以帮助读者把学习到的C程序设计的知识用于解决实际问题,能根据需要编写应用程序。在教材中,为了便于课堂教学,例题程序的规模一般都不大。在学完各章内容之后,需要综合应用已学过的知识,编写一些应用程序,同时提高编程能力。因此在本书中专门组织“C程序案例”一章,供读者阅读参考。这些案例很有实用价值。建议读者在学完教材后,仔细阅读这几个案例,对于提高编程能力会有很大的帮助。
第3部分是C语言程序上机指南。介绍了Visual C++ 6.0和Visual Studio 2010集成环境下的上机方法,使读者上机练习有所遵循。
第4部分是上机实践指导,介绍了程序调试和测试的初步知识,提出了上机实验的目的与要求,并且安排了12个实验,供各校安排实验时参考。
可以看到,本书内容很丰富,是学习《C程序设计(第五版)》的重要参考书。考虑到大多数学校的学时安排和多数初学者的基础,在主教材《C程序设计(第五版)》中只介绍程序设计的基本知识和C语言的最基本最常用的内容,为以后进一步学习和应用打下一定的基础。许多学生对C语言产生很大的兴趣,希望了解更多一些,掌握更深入些,尤其有些大学生在参加科研和毕业后工作中要求具有编程的实际能力,希望有更多的指导。因此,作者精心编写了本书,作为主教材的重要补充,帮助读者有效地提高应用能力。许多老师说,如果能把本书的习题全部独立地做出来,C语言就基本过关了。希望广大教师和读者能充分利用本书提供的资源,共同提高C程序设计的教学质量。
本书不仅可以作为《C程序设计(第五版) 》的配套教材,而且可以作为其他版本的C语言教材的参考书;既适用于高等学校教学,也可供自学者参考。
本书的第14章由林小茶副教授编写。薛淑斌、谭亦峰高级工程师参加了本书的编写和修订工作。
本书难免会有错误和不足之处,作者愿得到广大读者的指正。
谭浩强2017年5月