图书前言

前 言

        C 语言非常强大和灵活,常被作为专业程序员学习编程的入门语言。一旦掌握了 C 语言,学 

习其他语言(如 C++、Java 和 C#)将会变得更加轻松,因为这些语言基于 C 语言发展而来。掌 

握 C 语言的基础知识将为未来的编程学习奠定坚实的基础。由于 C 语言与底层计算机结构紧密 

关联,只要计算机体系结构不发生革命性变革,C 语言就不会被淘汰。C 语言简洁明了,非常适 

合描述算法。同时,C 语言贴近硬件,能够开发高效率、高性能的程序。许多重要操作系统和编 

程接口都采用 C 语言实现。C 语言的适用领域广泛,涵盖了从底层操作系统内核、各种运行时 

库、开发环境与工具、游戏引擎、高性能服务器、嵌入式应用到各种行业应用等。根据编程语言 

排行榜,C 语言近二三十年来一直位居前两名。只有真正掌握 C 语言,才能深入理解现代计算机 

系统的工作原理;反之亦然。 

       本书的目的是通过丰富的编程实例,引导读者轻松进入 C 语言程序设计的世界。强调在实践 

中学习,并鼓励读者与自己的集成开发环境互动,从而深入理解 C 语言编程。我们希望读者能够 

在解决各种问题的过程中,循序渐进地提高编程能力,通过实践获取乐趣和挑战。 

        对于不同层次的读者,本书提供了适合的编程实例、训练题目及深度理解核心概念的材料, 

具有循序渐进、由浅入深的编程学习路径。 

        对于入门者来说,本书提供了许多实用的编程实例和题目,并通过解题过程逐步提升读者的 

编程能力,实现循序渐进式的编程学习。在解决这些问题的过程中,读者能够从实践中获得成就 

感和维持编程兴趣,并加深对 C 语言编程的理解。 

       对于提高者来说,本书介绍了 C 语言的核心概念与解决问题时采用的算法和数据结构。读者 

将深入了解问题解决过程中各种关键因素的原理和实现方法,有助于读者深入理解 C 语言编程。 

       对于求职就业者来说,本书提供了 C 语言编程的全面指南,涵盖了语言基础、编程实例、算 

法和数据结构等方面。同时,书中还提供了大量实用的代码案例,供读者参考学习,帮助求职者 

掌握 C 语言编程所需的各种技能和能力。 

        本书注重实例的分类和丰富性,提供了 400 个实例和 150 道实练题目,让读者的学习过程充 

满挑战和乐趣。采用通俗易懂的语言,确保每位读者都能够轻松理解。 

        本书采用实例讲解的方式,着重解释 C 语言的核心知识点。以应用为重点,训练读者的计算 

机编程思维。书中的实例和实练都遵循相同的风格。注重选择有趣的实例,其中一些实例存在多 

个解决方案,以比较不同方法的特点,并强调算法设计思维和效率分析。此外,书中还融入了常 

用的算法设计方法,如枚举、递推、减治、分治、回溯、动态规划、贪心算法等。总之,通过实 

际应用和丰富的实例,帮助读者全面理解 C 语言的核心概念,并培养编程思维能力。 

        本书章节介绍 

        第 1 章  C 语言编程入门。共包含 35 个实例,主要涵盖了 C 语言的基本数据类型、常量和 

变量的概念、输入/输出方法、数学函数的使用、运算符的分类,以及表达式和语句的概念等基础 

知识。通过学习本章的实例,读者可以快速入门 C 语言编程,并掌握基本的编程技巧。 

       第 2 章   选择语句。共包含 25 个实例,详细介绍了 C 语言中的选择控制语句,包括单分支 

if 语句、双分支 if 语句、多分支 if 语句和 switch 语句等。通过学习本章的实例,读者可以学会根 

据问题的需求选择合适的选择语句,并掌握选择语句的嵌套使用,解决更加复杂的问题。 

        第 3 章  循环控制语句。共包含 42 个实例,重点介绍了 C 语言中的三种循环语句:for、while

 和 do…while。通过学习本章的实例,读者能够全面掌握循环语句的使用方法,并理解循环语句之

间的相互替代关系及循环嵌套等高级概念。在实践中逐步提升自己在计算机编程方面的能力,并体

验到计算机高效解决问题的潜力。 

       第 4 章  函数。共包含 29 个实例,主要介绍了函数的声明、定义和调用。通过将代码组织 

为函数,可以将程序分解为更小、更易于理解和维护的模块。使用函数来组织代码不仅增强了程 

序的可读性,还使得代码更加清晰、易于维护。通过学习本章的实例,可以帮助读者掌握自定义 

函数的方法和模块化程序设计思想。 

        第 5 章  数组。共包含 46 个实例,主要介绍了一维数组和二维数组的定义、初始化和访问 

等基本操作。通过学习本章的实例,读者将能够熟练运用一维数组和二维数组来存储和操作数据, 

并能够根据具体问题的需求选择合适的算法和处理方式,实现代码的高效和可靠运行。无论是初 

学者还是进阶者,本章的内容都能够为读者在程序设计中的学习和实践提供重要的指导。 

        第 6 章  指针。共包含 40 个实例,主要介绍了指针的定义、用途、与数组的关系、与函数 

的关系,以及动态内存分配等方面的内容。掌握指针是掌握 C 语言的重要一步,它可以让我们直 

接操作内存,提高程序的效率和灵活性。通过学习本章的实例,读者将全面掌握指针在 C 语言中 

的使用方法,并能够熟练运用指针来编写高效和可靠的程序,以及灵活应用指针来解决实际问题。 

       第 7 章  字符串。共包含 40 个实例,着重介绍了 C 语言中字符串相关的基础知识和常见操 

作。C 语言提供了字符串处理函数库 string.h,常用于进行字符串处理操作。通过学习本章的实 

例,将帮助读者在 C 语言编程中更加熟练地处理字符串,为解决实际问题提供强大的工具和技 

巧。无论是初学者还是进阶者,都能从本章的内容中获得丰富的字符串处理经验。 

        第 8 章   结构体、结构体数组与链表。共包含 30 个实例,着重介绍了结构体数组和链表在 

编程中的应用。本章的实例将深入讲解如何构建复杂的数据存储结构,如何综合运用结构体、数 

组和指针等知识,以及如何使用结构体数组和链表方便地组织和存储数据。无论是初学者还是进 

阶者,都可以通过本章的学习获得丰富的实践经验,为解决实际问题提供有力的支持。 

       第 9 章  位运算。共包含 15 个实例,介绍了位运算符的使用,包括位与、位或、位异或、 

位取反、位左移和位右移等。位运算是一种高效的运算方式,通过学习这些实例,读者可以理解 

位运算的概念和应用场景。 

        第 10 章  文件。共包含 6 个实例,介绍了文件读/写函数的选择原则和使用方法。通过这些 

实例的学习,读者可以灵活地进行文件操作,并根据需要选择适合的读/写函数。 

        第 11 章 递归。共包含 26 个实例,主要讲解了如何使用递归思想解决问题的算法,采用不 

同的策略应对不同类型的问题。常用策略包括减治策略、分治策略、回溯策略和深度优先搜索策 

略。通过学习本章的实例,能够培养读者的递归思维,以便更好地应用递归算法解决问题。 

        第 12 章  栈和队列。共包含 20 个实例,重点介绍了栈和队列在问题求解中的应用。通过学 

习本章的实例,读者将掌握栈和队列在程序设计中的应用技巧,为解决实际问题提供强大的工具 

和技巧。对于编写算法和处理复杂数据结构的程序设计人员而言,了解和掌握栈和队列的运用都 

是至关重要的。 

        第 13 章  前缀和与差分。共包含 9 个实例,重点介绍了前缀和与差分在程序设计中的应用。 

通过学习本章的实例,读者将深入了解前缀和与差分的应用,并掌握如何巧妙地利用它们解决实 

际问题。这些技巧能够有效降低对某个区间进行频繁操作时的查询时间复杂度,简化问题的求解 

过程。 

        第 14 章  贪心算法。共包含 10 个实例,主要介绍了使用贪心算法解决最优化问题的方法。 

贪心算法的核心思想是每一步选择当前最优的策略,以达到全局最优解。通过学习本章的实例, 

读者将深入理解贪心算法的原理和应用。 

        第 15 章  动态规划。共包含 27 个实例,主要介绍了递推、最长上升子序列、背包问题等几 

类问题的解决方法。通过学习本章的实例,读者将掌握动态规划的基本思想和解决问题的方法。

动态规划在算法竞赛和实际开发中都是一种强大的工具,能够高效地解决各种复杂的优化问题, 

对算法设计和解决实际问题都具有重要的帮助。 

       本书资源与服务 

       本书配有丰富的配套资源,包括全书实例实练的讲解视频、全部实例的源代码、全部实练的

参考代码以及选择填空等客观在线练习题等,以帮助读者更好地学习和实践 C 语言编程。讲解视

频请使用手机扫描书中的二维码进行观看,图书资源请扫描以下二维码获取下载链接。 

       作者在写作过程中虽力求严谨细致,但由于时间与精力有限,书中疏漏之处在所难免。如果 

读者在阅读过程中有任何疑问,也请扫描下面的二维码,与我们取得联系。读者也可在群内交流, 

共同学习。 

        致谢 

        本书由李长荣统稿,李长荣、齐峰和王一萍共同编著,其中李长荣编写了第 1、2、6、8、

12 章,齐峰编写了第 4、9、10、11、14 章,王一萍编写了第 3、5、7、13、15 章。其他编写

人员还有于宝泉、李延春、于子涵、李瑾,在此对他们的付出一并表示感谢! 

       由于编者水平有限,书中难免存在疏漏和不当之处,敬请广大读者批评指正。 

       我们希望这本书能够满足您的期待,并帮助您在 C 语言编程的学习和实践中取得成功。无论 

您是计算机相关专业的新生、程序设计竞赛的入门级选手、培训学员、C 语言程序设计的深入理 

解和提高者,还是 C 语言编程的教师和毕业求职者,本书都将为您提供有价值的帮助。 

        感谢您对本书的支持!祝愿您在 C 语言编程的学习之旅中收获满满,实现自己的编程梦想。 

                                                                                                                                                  编 者 

                                                                                                                                          2024 年 5 月