图书简介:
第1章 C语言基本概念 11.1 计算机语言和程序 11.1.1 计算机语言 11.1.2 计算机程序 11.1.3 C语言 21.1.4 程序设计 21.2 算法和算法表示 31.2.1 算法的概念 41.2.2 算法的特征 51.2.3 算法的表示 61.2.4 算法的优化 121.2.5 结构化程序设计方法 141.3 C语言编程 171.4 变量、表达式和赋值 191.5 从键盘读取输入 201.6 常量定义 211.7 标识符 231.8 C程序的结构特点 241.9 C语言编程风格 25习题1 26第2章 数据类型与表达式 282.1 变量声明与表达式 282.2 基本数据类型 282.3 整型 292.4 浮点型 302.5 算术运算符与表达式 312.5.1 算术运算符 312.5.2 算术表达式 332.6 赋值运算符与表达式 342.6.1 赋值运算符 342.6.2 赋值表达式 342.6.3 复合赋值运算符及表达式 352.7 自增/自减运算符 362.8 字符型 362.9 字符处理函数 382.10 类型转换 402.11 类型定义 42习题2 43实验题 46第3章 格式化输入与输出 473.1 输出函数 473.2 输入函数 50习题3 55实验题 56第4章 选择结构 574.1 关系、等式和逻辑运算符 574.2 逻辑运算符和表达式 584.3 复合语句 594.4 空语句 594.5 if语句 594.6 if-else语句 614.7 if语句的嵌套 624.8 级联式语句 664.9 switch语句 674.10 条件表达式 694.11 程序举例与测试 704.12 本章扩展内容:位运算 734.12.1 位运算符 734.12.2 位逻辑运算 734.12.3 移位运算 744.12.4 复合位运算赋值运算符 754.12.5 位运算的应用 75习题4 76实验题 81第5章 循环结构 825.1 循环结构与循环语句 825.2 计数控制的循环 875.3 嵌套循环 895.4 条件控制的循环 915.5 流程的控制转移 955.5.1 break语句 955.5.2 continue语句 965.5.3 goto语句 985.6 应用举例 99习题5 103实验题 105第6章 函数 1076.1 模块化程序设计 1076.2 函数的定义 1086.2.1 函数的分类 1086.2.2 函数的定义 1086.3 函数调用 1096.4 函数原型声明 1116.5 函数封装与防御性编程 1136.6 函数设计的基本原则 1186.7 函数的嵌套调用 1196.8 函数的递归调用和递归函数 1206.9 变量的作用域和存储类型 1226.9.1 变量的作用域 1226.9.2 变量的存储类型 1246.10 模块化程序设计实例 128习题6 132实验题 135第7章 数组 1367.1 一维数组 1367.2 二维数组 1387.3 一维数组作为函数参数 1407.4 排序与查找 1447.5 二维数组作为函数参数 152习题7 154实验题 157第8章 指针 1588.1 指针和指针变量 1588.2 指针变量的定义和初始化 1588.3 间接寻址运算符 1618.4 指针变量作为函数参数 1638.5 指针变量作为函数参数应用举例 1668.6 函数指针及其应用 171习题8 174实验题 176第9章 字符串 1789.1 字符串常量 1789.2 字符串的存储 1789.3 字符指针 1799.4 字符串的读/写 1809.5 字符串处理函数 1849.6 字符串作为函数参数 1869.7 从函数返回字符串指针 187习题9 189实验题 191第10章 指针与数组 19210.1 指针的运算 19210.2 指针和一维数组的关系 19210.3 指针和二维数组的关系 19710.4 指针数组及其应用 20110.5 动态数组 20510.5.1 C程序的内存映像 20510.5.2 动态内存分配函数 20610.5.3 一维动态数组的内存分配 20810.5.4 二维动态数组的内存分配 209习题10 211实验题 212第11章 自定义数据类型 21411.1 用户自定义数据类型和信息隐藏 21411.2 结构体的定义 21411.3 结构体变量的初始化 21611.4 结构体的嵌套 21711.5 结构体变量的引用 21711.6 结构体变量在内存中的存储形式 21911.7 结构体数组的定义和初始化 22011.8 结构体指针的定义和初始化 22311.9 结构体作为函数参数 22411.10 共用体 22911.11 枚举类型 23111.12 单向链表 23411.12.1 问题的提出 23411.12.2 链表 23411.12.3 单向链表的创建 23511.12.4 单向链表的搜索 23711.12.5 从单向链表中删除节点 238习题11 242实验题 244第12章 文件 24612.1 文件分类 24612.2 文件的打开与关闭 24712.3 顺序读/写文件 24812.3.1 读/写字符 24812.3.2 读/写字符串 25112.3.3 格式化读/写文件 25312.3.4 读/写数据块 25712.4 随机读/写文件 26012.5 标准输入/输出重定向 262习题12 263实验题 265第13章 构建大规模程序 26613.1 头文件 26613.1.1 #include指令的使用 26613.1.2 定义共享类型和宏 26613.1.3 共享函数原型 26713.1.4 共享变量声明 26813.1.5 嵌套包含 26813.1.6 保护头文件 26813.1.7 头文件中的#error指令 26913.2 源文件 26913.3 多文件程序的设计 26913.4 构建多文件程序 27313.4.1 makefile文件 27413.4.2 链接错误 27413.4.3 重构程序 27513.4.4 在程序外定义宏 276习题13 277实验题 277附录A Dev-C++和Visual C++下基本数据类型的取值范围 278附录B 关键字 278附录C 运算符的优先级与结合性 279附录D ASCII字符表 280附录E ANSI C标准库函数 282附录F Dev-C++集成开发环境 289参考文献 292
展开
C语言自推出以来,一直受到人们的广泛欢迎。长期以来,学术界和工业界都在广泛使用ANSI C编程语言。在世界各地的很多教育机构中,它是程序设计课程和计算机科学教育的首选语言。因为从许多入门级课程到高级课程都可选择C语言。此外,C语言带有很多有用的库,并得到许多复杂而安全的集成开发环境的支持。由于C语言是使用方便、目前执行效率最高的语言,因此在人工智能、云计算领域,深度学习平台和云计算平台的底层基础架构都使用C语言实现。同时,ANSI C还在不断得到改进、完善和拓展,这些变化以及C语言在操作系统、数据库、图形系统、嵌入式系统等方面的广泛影响,使得C语言成为学习程序设计和计算机科学的首选。本书以C语言为工具,力图用最简明的语言、最典型的实例,介绍计算思维和程序设计的基本方法,把它们的核心思想贯穿于C语言的介绍中,目的是使读者在学习C语言以后,能够用计算思维和程序设计的方法解决相关领域中的实际问题。全书分13章,内容包括:C语言基本概念,数据类型与表达式,格式化输入与输出,选择结构,循环结构,函数,数组,指针,字符串,指针与数组,自定义数据类型,文件,构建大规模程序。本书试图达到以下目的: 本书通过提供详细的解题思路来描述问题所涉及的编程元素和解决问题所需要的方法及解题步骤,采用三种基本结构、自顶向下和结构化程序设计方法,并通过大量的流程图或N-S图来描述算法,为编写程序提前进行代码预排,帮助读者更好地理解和评价问题所涉及的编程思想。 通过详细分析示例程序,向读者展现了清晰而完整的程序设计过程,描述了代码的关键特征,目的是让读者掌握一些习惯语法,以便在遇到新情况时作为参考。这种对程序和函数的解析方法有利于突出不同上下文应用中的关键思想。 本书假设读者没有任何编程背景,既可以是学生及计算机用户,也可以是有经验的但不熟悉C语言、需要掌握结构化程序设计方法的程序员。本书的每章都给出了一些带有详细注释的示例程序,通过这些程序,引导读者编写具有结构化特征的函数。能编写函数是一名合格程序员的标志。 为了提高代码的重用效率和权威性,本书在示例程序中尽可能涵盖所有的ANSI C的特性和库函数。同时,为了避免给读者造成不必要的学习负担,忽略了这些特性和库函数的一些不必要的细节。 根据作者多年教授C语言的经验,本书采用循序渐进的方式来展现C语言的特性。针对某些有一定难度的主题,如函数和指针,本书采用螺旋式的描述方法,即对较难的主题先进行简要介绍,然后在多个章节中再多次介绍该主题,逐渐丰富该主题的细节内容。这种循序渐进的方式,使前后内容由浅入深,相互呼应,既防止了内容单调,又避免了知识点过于集中而造成的艰难晦涩。 本书使用了尽可能多的图来展现函数中变量的状态和C语言特性,试图通过图来展示程序运算过程中不同阶段的数据状态并动态地描述算法。 除介绍C语言特性和编程思想外,还特别强调程序设计过程中所要解决的软件工程问题,即如何运用C语言来处理大规模程序开发过程中产生的问题,使编写的程序具有易读性、可维护性、可靠性和可移植性。在函数设计中,尤其强调信息隐藏和代码的重用性。本书具有以下特色: 全书所有代码使用统一的代码规范编写,并强调程序代码的健壮性。书中例题、习题、实验题的内容选取兼具趣味性和实用性,例题以学习C语言特性和编程思想,培养计算思维为目的;习题以巩固基本知识点和掌握程序设计方法为目的,难度呈阶梯状,题型包括选择题、程序填空、阅读程序和编程题等;实验题从“巩固基础、综合设计、创新应用”三个层次进行设计,围绕一个综合应用实例逐步展开模块化设计,以任务驱动方式,引导读者实现具有一定规模、贯穿全书知识点的学生成绩管理系统。 设置警告。C语言以其陷阱多而闻名,本书将程序设计过程中最常见或最重要的陷阱设置成警告,以警示读者可能掉入的陷阱。 设置惯用法。C程序中经常出现一些通用的代码模式,本书将其设置为惯用法,以方便读者快速掌握。 扫描第1~12章后的二维码,可以获取:本章知识点小结,用于复习本章内容,并加深理解本章中提出的新思想;本章常见错误小结,给出典型编程错误示例以及防止这些错误的方法,帮助读者避免错误。 附录提供了有价值的参考资料信息。 免费提供电子课件,登录华信教育资源网(www.hxedu.com.cn)注册后即可下载。本书由曾智勇编著,浙江工业大学计算机科学与技术学院的王万良教授/院长在百忙之中仔细审阅了全部初稿,并提出了许多宝贵的意见和建议。作者在此对他的辛勤付出表示衷心感谢。因作者水平所限,书中错误在所难免,欢迎广大读者对本教材提出宝贵的意见和建议。
作者2019年于福建师范大学数学与信息学院
展开