新書推薦:
《
现代吴语的研究(中华现代学术名著3)
》
售價:NT$
296.0
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:NT$
352.0
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
《
精致考古--山东大学实验室考古项目论文集(一)
》
售價:NT$
1112.0
《
从天下到世界——国际法与晚清中国的主权意识
》
售價:NT$
347.0
《
血色帝国:近代英国社会与美洲移民
》
售價:NT$
265.0
|
內容簡介: |
本书是一本讲授使用C语言进行程序设计的实用参考书。它以C语言为工具,讲授程序设计的过程和方法。从C语言和C程序的基本要素以及程序设计的基本方法开始,循序渐进地引入对程序设计专业化的要求和相关的知识。从增强读者的感性认识入手,通过多角度对例题的分析,示范对关键知识和技术的运用,通过对关键内容在不同层次上的适当重复,深化读者对概念的理解和掌握。
|
關於作者: |
尹宝林,1973年毕业于北京航空学院(现更名为北京航空航天大学)计算机专业,1984年获英国爱丁堡大学博士学位。曾任北京航空航天大学计算机系教授、博士生导师。从事计算机专业教学和科研工作多年,主讲过“C语言程序设计”“高级语言程序设计”“UNIX程序设计环境”“计算机图形学”“图像处理”等课程,其中“高级语言程序设计”被评为北京市精品课程。主编过《离散数学》《C程序设计导引》等教材。参加全国信息学奥林匹克(NOI)活动的组织与指导工作,曾任NOI科学委员会副主席。
|
目錄:
|
作者自序
第0章 引言1
第1章 程序设计的基本方法7
1.1 程序设计的基本过程7
1.2 问题分析9
1.2.1 对程序功能的要求9
1.2.2 对程序性能的要求10
1.2.3 程序的使用方式和环境11
1.2.4 程序的错误处理12
1.2.5 程序的测试13
1.2.6 问题分析的结果13
1.3 方案设计18
1.3.1 求解思路18
1.3.2 计算模型21
1.3.3 算法分类24
1.3.4 算法和数据结构的选择26
1.3.5 算法的检验33
1.4 编码:从算法到代码34
1.4.1 代码的结构34
1.4.2 编码的质量37
1.4.3 代码的可维护性39
1.4.4 代码中的注释39
1.4.5 代码的检查40
1.4.6 代码中常见的错误40
1.5 测试和调试42
1.5.1 调试的基本方法43
1.5.2 故障的检查、确认和修改44
1.5.3 常见的故障类型和调试方法46
1.5.4 调试数据的设计和使用48
1.5.5 调试数据和标准输入/输出的重新定向48
1.5.6 调试工具50
1.5.7 测试和调试中常见的问题50
1.6 手册的使用52
第2章 数值的表示和计算53
2.1 整型数据类型53
2.1.1 有符号数和无符号数54
2.1.2 无符号数和标志位56
2.1.3 整型的截断与扩展56
2.1.4 整型计算的溢出和判断58
2.1.5 整除所引起的误差60
2.1.6 整型数据的字节序和尾端62
2.2 浮点数据类型65
2.2.1 浮点数据的表示方法65
2.2.2 有效数字和位当量67
2.2.3 浮点数的比较70
2.2.4 浮点数值计算中的上溢和下溢72
2.3 数值计算中的类型转换75
2.3.1 基本类型转换和数据宽度75
2.3.2 强制类型转换77
2.3.3 char的符号类型79
2.3.4 变量符号类型的判断80
2.4 按位操作80
2.4.1 移位操作81
2.4.2 标志位的设置、检测和清除82
2.4.3 常用的位操作模式84
2.4.4 位操作应用举例85
2.5 数值计算的速度88
第3章 指针、数组、结构和类型90
3.1 指针变量91
3.1.1 指针变量的定义91
3.1.2 指针的类型93
3.1.3 指针运算94
3.1.4 指针的强制类型转换95
3.1.5 不合法的指针运算97
3.1.6 指针与整数98
3.1.7 指针的增量运算和减量运算99
3.1.8 作为函数参数的指针100
3.2 指针和一维数组100
3.2.1 指针和数组的互换100
3.2.2 动态一维数组103
3.2.3 数组复制与指针赋值106
3.2.4 变量限制符const108
3.2.5 数组的负数下标109
3.3 二维数组和一维指针数组110
3.3.1 作为参数的二维数组110
3.3.2 二维数组和指针111
3.3.3 二维数组和一维指针数组的对比113
3.3.4 指针数组和命令行参数116
3.3.5 二维数组的动态分配118
3.4 函数指针121
3.4.1 函数指针变量的定义122
3.4.2 函数指针变量的使用123
3.4.3 函数指针数组的使用128
3.5 结构129
3.5.1 结构类型的定义129
3.5.2 结构成员的访问131
3.5.3 结构类型的嵌套定义133
3.5.4 结构的自引用134
3.5.5 结构类型与函数的参数和返回值134
3.6 复杂类型的解读135
3.6.1 变量定义中的复杂类型说明136
3.6.2 强制类型转换中的复杂类型139
3.6.3 类型定义语句和复杂类型的定义139
第4章 程序中的递归142
4.1 递归的定义142
4.2 递归函数的执行149
4.3 递归函数的设计150
4.4 递归的优点和缺点155
4.5 递归函数的效率158
4.6 递归函数的使用161
4.6.1 适宜使用递归的情况161
4.6.2 不适宜使用递归的情况169
4.7 递归函数效率的改进170
4.7.1 尾递归函数的非递归化170
4.7.2 带存储机制的递归171
4.7.3 一般递归函数的非递归化172
第5章 搜索176
5.1 搜索的目标和基本过程176
5.2 深度优先搜索178
5.2.1 深度优先搜索的基本算法179
5.2.2 回溯搜索182
5.3 广度优先搜索185
5.4 重复节点的判断188
5.5 带深度控制的广度优先搜索195
5.6 节点的编码和搜索效率199
第6章 常用函数和函数库209
6.1 静态链接和动态链接209
6.1.1 静态链接209
6.1.2 动态链接210
6.2 库函数的使用211
6.2.1 标准库函数的头文件212
6.2.2 标准函数库文件的使用212
6.2.3 错误信息函数和变量213
6.3 数据输入输出函数214
6.3.1 文件描述字和字符流215
6.3.2 文件的打开、创建和关闭217
6.3.3 文件数据的二进制格式读写220
6.3.4 读写操作中的定位223
6.3.5 基础读写与字符流读写的效率比较225
6.3.6 字符流的冲刷227
6.3.7 文件的属性227
6.4 字符类型函数和字符串操作函数230
6.4.1 字符类型函数230
6.4.2 字符串操作函数231
6.5 时间函数233
6.5.1 日历时间233
6.5.2 程序运行时间235
6.6 随机数函数235
6.6.1 基本随机数函数235
6.6.2 均匀分布随机数的生成236
6.6.3 非均匀连续分布随机数的生成237
6.6.4 离散分布随机数的生成238
第7章 程序的优化241
7.1 优化的作用和意义241
7.2 优化的基本过程242
7.2.1 运算时间和存储空间242
7.2.2 优化可能性的判断243
7.2.3 程序运行的整体计时244
7.2.4 程序运行的分析计时和程序运行剖面246
7.3 运行效率的改进策略和方法249
7.3.1 调整代码249
7.3.2 改进算法254
7.3.3 空间换时间258
7.3.4
|
內容試閱:
|
Foreword 作者自序
本书面向具有一定的C语言编程基础,希望在专业程序设计能力方面进一步提高的读者。本书重点讲解C语言中需要深入理解和掌握的知识,程序设计的基本方法和原则,以及这些方法和原则在实际中的应用。希望读者能够通过对本书的阅读和学习,在编程工作中掌握较为专业的思维方式和工作方法,能够正确、准确、有效地把自己解决实际计算问题的思路转换为具有专业质量的程序。
计算机技术是信息化时代重要的技术支撑,是信息化的技术基石。当前人类社会中,计算机系统无处不在,如果说硬件是计算机系统的躯体,那么软件就是计算机系统的灵魂。可以说,程序设计就是为计算机系统铸造灵魂的工作。因此程序设计能力是信息化时代的一种重要能力。
程序设计离不开编程语言。在编程语言百花齐放的今天,C语言具有非常独特的地位。在面世近50年之后,C语言仍然保持着旺盛的活力,多年来一直在语言应用排行榜中稳居前两名。尽管各种新的编程语言不断涌现,也未能撼动C语言的地位。即使近年来在人工智能热潮的推动下,Python语言后来居上,但在2021年10月份发布的TIOBE编程语言排行榜上,C语言也仅仅以0.11%之差屈居第二,是编程语言中名副其实的常青树。
程序设计如同写文章。一篇合格的文章需要立意明确、思路清楚、内容完整、布局合理、表达准确、语言生动。一个具有专业水平的程序则不但要全面满足任务需求,而且要结构清晰、组织合理、代码简洁,并能完整实现对程序功能、性能、可靠性和可扩展性等各方面的要求。也就是说,一个好的程序也需要在构思和表达两方面都有完美的表现。程序的构思涉及软件工程、常用算法、数据结构以及与具体任务相关的知识和算法。本书则主要侧重如何使用C语言准确地表达程序的构思,讨论如何写出结构合理、表达准确、描述简练、高效可靠、易于理解和维护的代码,讨论程序的分析、设计和实现过程、指导原则,以及常用的方法,并结合示例介绍这些方法和原则在实际编程中的具体运用,为希望进一步提高自己实际程序设计能力的读者提供适当的指导。
理论与实践相结合是掌握知识的必由之路。为此,读者应该积极地将所学到的理论知识应用到自己的编程实践中去。在实践过程中要把注意力着重放在问题的分析、计算过程的分解、数据结构的选择、程序结构的组织等程序设计的过程和方法上。只要抓住了这些关键,认真思考并勤于实践,就可以有效地提高自己的专业素养和实际的程序设计能力。正如所说的:“世上无难事,只要肯登攀。”
本书的写作得到了机械工业出版社华章分社温莉芳、刘立卿和刘锋,以及出版社其他同人的热情鼓励和多方支持,作者对此表示衷心的感谢。限于水平,书中难免有错漏之处,还望读者不吝指正。
尹宝林
2021年初冬于北京航空航天大学
|
|