前言 程序设计语言是计算机相关专业的必修课程,目前大多数院校选择C语言作为程序设计语言课程的讲授内容。C语言采用结构化程序设计,既具备高级语言的特点,又能对硬件进行操作,因此既可以用于编写应用软件,也可以编写系统软件,是广受欢迎的程序设计语言之一。其实,各种语言间的语法大同小异,都要遵守一些基本规则,所以当掌握了一门程序设计语言的语法后再学习其他程序设计语言的语法,就相对容易。因此,程序设计语言课程的目的在于帮助学生理解计算机进行工作的基本原理以及进行程序设计的基本方法,培养学生的计算思维,为后续课程的学习奠定基础。 本书针对计算机相关专业新生或对程序设计感兴趣的初学者的特点进行编写,教学内容与素材均由一线教师积累多年教学经验总结而成。希望通过本书的学习,能使读者了解高级程序设计语言的组成与特点、程序的设计思路与编写技巧,学习并掌握C程序在数据表达、数据结构、模块处理、流程控制等方面的相关知识,能够掌握一些简单的、典型的算法,具有一定的阅读程序和设计程序的能力,为后续课程的学习打好基础。 全书分为10章,内容包括C语言概述、数据类型、运算符和表达式、数据的输入和输出、选择结构、循环结构、数组、函数、指针、结构体、共用体、枚举与链表,以及文件操作。 本书注重理论与实践相结合,同时兼顾激发读者的学习兴趣,在教学内容上采用了“沉浸阅读”+“启发思考”+“知识点巩固”+“一例多解”+“实战体验”的设计方法,每一个章节都有先导或预备知识,由此引入本章要讲解的具体内容,同时在关键节点提出问题,启发读者思考,并及时通过重点提示、题目巩固、实例分析和知识扩展等加深读者对知识点的理解,最后通过大量的实战练习锻炼和培养读者的计算思维。每章结尾都附有各种类型的习题,使读者能快速有效地复习和掌握章节知识,提高解决实际问题的能力。 基于独特的教学内容设计方法,本书的主要特色如下。 (1) 尽量避免枯燥地罗列和介绍知识点,语言严谨中略带风趣,将知识点与现实生活中的场景相结合,更有利于加深读者对知识点的理解和掌握。例如,在学习数组时,先探讨现实生活中若有团队入住宾馆,应以何种方式安排住宿才能更方便也更容易记住每位团员的房号,再由此推断出为什么数组名可以代表首元素地址,以及为什么数组下标要从0开始进行编号的原因。 (2) 设计和使用“问题来了”“小技巧”“注意”和“长知识”等模块,在读者阅读和自学过程中,适时地进行引导,从而达到启发思考、强调重点和拓展知识的目的。 (3) 为重点知识设计例题,并对经典题目和实例采用“一题多解”的方式。同时,针对初学者容易犯的错误进行用例测试与结果分析,一是避免再犯类似犯错,二是如果今后在编程过程中出现类似情况,也能快速找到问题所在。例如,在第4章的分段函数编程示例中,先借甲、乙、丙3位同学之手设计了3种不同方案,再通过测试用例的运行结果分析出丙方案的错误原因,最后总结了编写多分支题目时可以采用的方法以及需要避免的问题。 (4) 为每章提供大量实战题,部分章节的理论与实战篇幅的占比超过了1∶2。每道实战题都包括问题分析、程序设计和程序实现3部分,并且选题领域覆盖面较广,可以让读者举一反三。例如,第7章中,以“判断用户输入的数是否是对称素数”为例,先分析了用户既可以采用字符串形式也可以采用整数形式读取数据,再针对不同形式讨论如何以模块化的方式进行程序设计,最后将每个模块拆分成不同的实战题,并进行相应扩展,例如将整数的字符串形式与整数形式的相互转换扩展为K进制数的转换等。 为方便读者学习,本书附有配套PPT教学课件、本书全部示例和实战程序的源码,以及课后习题答案,方便学校教学和读者自学。 因编者水平有限,不足之处在所难免,恳请读者批评指正。 编者2023年1月