内容提要
本教材从C 语言与计算机的关系入手,分析了计算机的五大组成部分在C 语言中是如
何控制的,计算机中数字化信息编码与 C 语言中数据类型的对应关系。围绕优先级、结合
性、序列点和数据类型转换等求值原则,分析了 C 语言表达式的求值过程,实际上也是计
算机的“计算”过程。从“变量用于标识内存中的存储单元”入手,清晰地分析了数组变量
与指针变量的本质特征。由于洞悉了 C 语言的知识点,本教材得以始终把能力培养作为出
发点和归宿,让读者体会到了“C 语言”(计算机)是如何利用“循环”解决“所有”问题
的。
本书通俗易懂、概念清晰、视角独特、以能力培养为宗旨,是一本支持启发式教学的全
新的C 语言教材。本书可作为各专业的C 语言教材,也可用于自学。为便于使用,提供了
配套的电子课件和教学视频。
前言
C 语言是一种经典的计算机语言,被计算机专业人员和应用人员广泛地使用。C 语言通
常是计算机专业的第一门专业基础课,对培养学生的专业素养、专业兴趣意义重大。C 语言
概念多且杂,初学者往往难以理解和掌握。“C 语言”利用“循环”解决问题,用“单一”
的方法解决“所有”的问题,这种“化繁为简”的境界也非初学者能轻易体会。C 语言是同
计算机交流的工具,不了解计算机就不可能精通C 语言。学习C 语言时,初学者往往对计
算机一知半解。多种因素导致初学者很难掌握C 语言。
课堂教学是教育的基础,而教材又是课堂教学的基石。基于以启发读者思维、提高发现
问题能力、解决问题能力和创造能力为核心的教材势必会对创新人才的培养起到事半功倍的
效果。国内的一些C 语言教材立意不高,以介绍语法为主,国外的C 语言教材与中国学生
的结合性差。
语言的作用在于交流,学习 C 语言与学习英语异曲同工。仅凭记单词背语法想学好英
语,是枯燥的,乏味的,绝对行不通的。学习 C 语言的关键在于编程能力的培养。所谓编
程就是把解决问题的方法用C 语言表述出来,从而让计算机实际地解决问题。
国外“经典”的C语言教材过分追求技术之美,忽视了学习C语言时学生的基础与初次
接触编程时的不适应,这样的教材虽然可以让编程爱好者津津乐道,但却使相当一部分初学
者望而却步。从软件工程的角度看,程序的可读性和效率之间应该有所折中。
鉴于 C 语言在计算机专业中的地位和作用,作者编写了这本理念新颖、视角独特的 C
语言教材,以期引起大家思考。
本教材的特点如下:
(1)注重启发读者思考
C 语言毕竟是与机器交流的工具,它的知识点都“有章可循”。让读者 “死记硬背”这
些知识点不仅效果差,而且还会使他们思维窒息。本教材在呈现知识点时注重引导读者思考
知识点中蕴含的科学规律,让读者既知其然,又知其所以然。如:补码的符号位为何可以参
加算术运算?C 语言中的整数为何构成一个环?float 型为何只能精确到小数点后的 6 至 7
位?同为传值调用形参为指针时为何可以改变实参的值?全局变量的作用域为何可以扩
展?为何不能用整数为指针变量赋值?为何常用文本文件保存程序的输出结果?等等。
(2 )以培养读者的编程能力为宗旨
本教材着重强调了用计算机解决问题的规律(循环)及如何把解决问题的步骤用 C 语
言准确地描述出来。每道例题都给出以自然语言描述的算法及转化为何种 C 语句的提示。
经试用,对学生读、写程序能力的培养效果明显。程序中的每条语句学生知道计算机是如何
执行的,反之遇到问题能想出算法,算法中的每步知道该使用何种语句来描述。
(3 )深入浅出
虽然揭示了知识点中蕴含的科学规律,但在组织素材时考虑到读者为初学者,引导读者
思考的基础全为他们已掌握的知识。有时以实例演示来代替科学的推理,这种作法可能不够
严谨,但必定会得到更多读者的理解。如在2.2 节中以码长1个字节的整型为例,模拟了计
算机如何对127+1、127+127、-128-1、127-1 求值,然后引导读者得出结论:计算机中的整
数构成一个环;超出取值范围时运算结果必然因溢出而出错。
(4 )概念清晰
想系统而有条理地呈现 C 语言多而杂的知识点,而不是简单地介绍和机械地强调,必
须能抓住它们的本质特征,找出它们之间的内在联系,然后用启发式的方式呈现,让读者思
考并最终掌握。有太多学过 C 语言的学生对其中太多的知识点存在