图书前言

“学而时习之,不亦乐乎。”孔子这句常学常新、深含哲理的名言对于真正学好C/C++编程,也具有指导意义。我们认为,这句话中的“习”并不只是看书、复习,而是包括演练、上机操作。对C/C++程序设计教学来说,这句话的确切意思是: 学了C/C++的语句和编程理论,课后照例复习一遍,是远远不够的;在学习过程中还要不断实践。只有培养出追求真理的兴趣,才能最终对实际问题应付自如,即所谓从“必然王国”进入“自由王国”. 

我们认为,要“时习”的并不只是教材本身及一般教材所指定的少数几个“实验”。实践证明,就算把教材读了多遍,完成了教材指定的那几个“实验”,遇到具体编程问题时,还是可能束手无策。我们所要培养的创新人才应能独立思考,并初步具有解决实际问题的能力。本书试图朝着这个方向进行探索。

由于各院校的具体情况很不相同,本书并不是作为一般意义上的“实验指示书”,简单地给出几个实验程序,让学生照着上机,加以验证。考虑到不同层次的读者有不同的要求,为了利于教师因材施教,在出版《C/C++程序设计实用教程》(清华大学出版社,2006年)一书(以下简称“教材”)时,曾给出录入到P、L、R三个目录的大量C/C++程序和多个讲座文稿,读者可以从http://www.tup.tsinghua.edu.cn进入http://www.tup.tsinghua.edu.cn后用书名搜索即可找到本书相关资源。如下载不便,可向本社来函、来电索取。下载。其中,P目录给出书中正文涉及的程序;L目录给出讲座所用的程序;R目录除收集以上两个目录的程序,还添加了许多例子。本书作为C/C++程序设计上机指导,将C/C++程序设计问题分成 56 个课题加以阐述。书中的部分程序选自上述几个目录和文稿,并多有增补。在myC_CPP目录中保存有书中的所有程序,同时也包含上述P、L、R三个目录和多个讲座文稿。几百个程序是让读者非常容易上机的巨大资源。我们用Visual C++ 6.0 编译系统核查了所有程序,并给出了比较详细的注解和部分运行结果;对错误语句,也指出了错误原因。为了利于读者分析书中所给程序,书中并未列出所有程序的运行结果。读者可预测运行结果,然后与网站中所给的“谜底”相比较。

总的来说,所选的 56个课题不仅会帮助读者巩固书本知识,更重要的是,将会帮助读者掌握设计高质量程序的能力。我们将用实例给读者带来一般教科书少有的新意。例如,这些实例将说明: 

 怎样正确地实施多文件的编译与连接。

 怎样通过多文件编程实现信息隐蔽。

 怎样调试程序。

 怎样分析程序设计中的难点(函数设计、访问二维数组的几种方法、用指针访问中文字符数组等). 

 常见的编程方法有哪几种。

 怎样设计C++的实用类(如基于直角坐标和极坐标的复数类、矩阵类、多项式类等)以及如何用于实践中(例如,计算FIR数字滤波器的频率特性等). 

在使用本书前,请将myC_CPP目录复制于C 盘,存放上机程序和有关文件。为了提高学习效率,建议读者: 

 在上机前,仔细阅读课题介绍以及教材(《C/C++程序设计实用教程》)的有关章节。要彻底弄懂基本语句的格式。

 在上机前,逐行逐句读懂所给程序,预测运行结果。

 理解并执行书中程序后,请合上书本,自行编制该程序。

 勤于上机,勤于思考。大胆修改程序。大胆怀疑程序是否有错,是否合理,是否能采用另一种实现方案。

本书分两部分。第一部分介绍C语言编程,第二部分介绍C++语言编程。这两部分的程序各用字母A 和B 为前缀。例如: A0202.CPP 表明该文件是C语言源文件,是课题A02的第二个程序的主文件;A0202A.h是头文件,A0202A.CPP是与之相应的实现文件。课题A02 的所有程序文件都存入目录C:\\myC_CPP\\A02 中。每个课题可能有多个程序,但每个程序只有一个主文件。