
《C语言基础与应用》中存在不少涉及C语言语法及部分实际应用的章节内容,无专业与非专业之分。相比现有教材,本书具有以下特点:
(1)面向非计算机专业的学生,内容更加侧重于基础、常用的语法知识。
(2)在内容阐述、代码举例时,充分结合已讲授的知识点,帮助学生形成知识体系。
(3)语言浅显通俗、习题示例丰富,以多个代码示例介绍知识点。每章均设有习题、上机实验题,以培养学生解决实际问题的能力。
本书适合作为经管类等非计算机专业的本科生及低年级研究生的学习用书,也适合其他有需要的人士进行自学之用。
前 言 计算机是一个极具技术性的领域。由于学科差异,在过去很长的一段时间里, 高校里非计算机专业的学生基本上不需要掌握计算机的相关知识或技能。因此, 计算机语言与程序设计这一类课程曾经是计算机专业学生的专属。但是,在如今 技术高度发达、信息与数据极大丰富的形势下,各个学科、行业都与计算机产生 了千丝万缕的联系,甚至对其产生了高度的依赖。因此,计算机语言与程序设计 相关课程逐渐进入非计算机专业学生的课堂。甚至,它成为作者所在的清华大学 经济管理学院全体本科生的必修课程之一。 本书作者在清华大学经济管理学院、清华大学深圳国际研究生院讲授“计算机 语言与程序设计(C、Python) ”“金融数据分析”等课程。对于经济管理类的学生 而言,毕业后一般不会从事程序开发的专业性工作。也许,Python等简洁、易用、 近年来十分受欢迎的语言工具能更加高效地帮助使用者进行程序设计、解决实际问 题。但是,对 C语言的学习能够带来其他语言无法比拟的好处:① C语言是最为基础、 通用的语言之一,它能够广泛地应用于不同的平台与场景,在实际问题的解决上具 有更高的普适性。②相对于其他更为高级、抽象的语言,C语言比较基础、接近机 器。因此,它的语法也更为基础、严谨,更能帮助学习者触类旁通、掌握语言的应 用。并且,也会帮助学习者更加轻松地掌握其他更为高级、抽象的语言。③ C语言 作为面向过程的结构化语言,有着清晰的层次,可按照模块的方式对程序进行编写。 这种结构化的编程范式,能够很好地培养学习者的结构化思维模式。这种思维模式 是超越语言本身的,能够被应用到非计算机(如经济管理)领域,通过严密的逻辑、 清晰的结构解决领域中的实际问题。 虽然非计算机专业学生学习 C语言具有众多益处,但对学生而言,学习难度 也较大,对讲授 C语言的教师而言也极具挑战性。作者在为课程选择 C语言方面 的参考书时,往往比较苦恼。当前许多优秀的 C语言类图书并不是特别符合非计 算机专业学生的需求。作者在教学过程中,深感教材的重要。一本精心设计的教 材不仅能够帮助学生更好地学习,还能方便教师更好地讲授。这促使作者参考众 多同类教材,结合自己的教学体会,从非计算机专业(尤其是经济管理类)学生 的角度出发,进行本书的设计与撰写。 相对于当前国内已有的 C语言教材,本书具有如下特点。 (1)内容的安排经过精心挑选。由于本书主要面向非计算机专业的学生,在 内容的选择上更加侧重于基础、常用的语法知识,而略过一些更多地应用在计算 机领域的专业性知识。 (2)知识体系结构经过合理安排。在介绍某一板块的语法知识时,在内容 阐述、代码举例中都尽可能地避免涉及未讲授的内容,从而降低读者的理解难度。 同时,会与已讲授的知识点进行充分的结合,帮助读者融会贯通并形成知识体系。 (3)语言浅显通俗、示例习题丰富。书中每一个知识点的介绍都伴随着多个 专门针对该语法知识的代码示例,这有助于读者及时地掌握。此外,第 1~10章 都有实验案例,并提供了参考答案,能够帮助读者在掌握语法之后,培养解决实 际问题的能力。 本书所面向的读者主要为经济、管理等非计算机专业的本科生及低年级的研 究生。并且,书中不少涉及 C语言语法及部分实际应用的章节内容并无专业领域 之分。因此,本书自然适合各个专业领域的学生进行 C语言的入门学习。此外, 书中由浅入深的讲解以及具体的实例,也适合其他有需要的人士进行自学之用。 本书章节结构虽然经过精心挑选、多次调整,但篇幅有限,无法涵盖过多的 内容,因此可能无法满足读者的部分需求。内容虽然经过多次修改和校对,但由 于作者水平有限,加之时间仓促,疏漏在所难免。对此,作者热切期望得到各位 读者的批评指正。 书中所涉及的程序例子主要基于 C 99版本。所有的源代码及相关文件资料, 请读者从以下网址下载:https://cloud.tsinghua.edu.cn/d/ea43ee82ebab43a4a2c8/。 林志杰 清华大学经济管理学院 2021年 12月
程序设计与C语言……………………………………………001
计算机程序………………………………………………………………001
计算机语言………………………………………………………………002
C语言发展历程和特点…………………………………………………006
简单的C语言程序………………………………………………………008
运行C语言程序的步骤和方法…………………………………………028
类型、变量、运算符…………………………………………034
比特和字节………………………………………………………………034
数据类型…………………………………………………………………035
变量………………………………………………………………………045
运算符……………………………………………………………………049
类型转换…………………………………………………………………054
运算符的优先级…………………………………………………………057
运算符的结合性…………………………………………………………058
控制流…………………………………………………………064
语句和语句块……………………………………………………………064
执行顺序…………………………………………………………………065
条件判断…………………………………………………………………065
3.4控制流语句:选择语句
3.5控制流语句:循环语句
3.6控制流语句:跳转语句
…………………………………………………067
…………………………………………………075
…………………………………………………080
IVC语言程序设计
—语法基础与实验案例
第4章
4.14.24.34.44.54.64.7
第5章5.15.25.35.4
第6章6.16.26.3
第7章7.17.27.3
第8章8.18.2
8.3
函数……………………………………………………………091
函数的概念………………………………………………………………091
函数的定义………………………………………………………………093
函数的调用………………………………………………………………098
函数的声明………………………………………………………………098
函数的递归调用…………………………………………………………102
变量的作用域……………………………………………………………103
变量的存储类别…………………………………………………………109
数组……………………………………………………………119
一维数组…………………………………………………………………119
二维数组及多维数组……………………………………………………126
数组与函数………………………………………………………………133
可变长度数组……………………………………………………………140
结构体…………………………………………………………149
结构体的基本用法………………………………………………………149
结构体与数组……………………………………………………………155
结构体与函数……………………………………………………………157
共同体、枚举类型、自定义类型……………………………167
共同体……………………………………………………………………167
枚举类型…………………………………………………………………173
自定义类型………………………………………………………………178
指针……………………………………………………………184
指针与指针变量…………………………………………………………184
指针与数组………………………………………………………………192
指针与函数………………………………………………………………199
V
8.4指针与结构体……………………………………………………………207
8.5动态内存分配……………………………………………………………210
第9章9.19.29.3
9.4
文本处理………………………………………………………222
字符………………………………………………………………………222
字符串……………………………………………………………………223
字符指针…………………………………………………………………238
字符串与函数……………………………………………………………241
第10章10.110.210.310.410.5
第11章
11.111.211.311.411.511.611.711.811.9
11.10
输入输出………………………………………………………248
输入输出的概念…………………………………………………………248
标准输入输出……………………………………………………………248
格式化输入输出…………………………………………………………253
字符串输入输出…………………………………………………………256
文件输入输出……………………………………………………………257
综合实践题目…………………………………………………274
二手交易…………………………………………………………………274
商品推荐…………………………………………………………………275
模拟投资…………………………………………………………………275
会计记账…………………………………………………………………276
仓库管理…………………………………………………………………276
机票购买…………………………………………………………………277
疫情观察…………………………………………………………………277
足球资讯…………………………………………………………………278
学习平台…………………………………………………………………278
患者管理………………………………………………………………279
清华大学经管学院本科生指定用书。
林志杰,清华大学经济管理学院管理科学与工程系副教授,博士毕业于新加坡国立大学信息系统专业。目前担任中国信息经济学会理事会常务理事、中国信息经济学会青工委主任。主要讲授C、Java、Python语言的程序设计与应用。