《C语言编程思想与方法》是由机械工业出版社出版的一本关于C语言方面的书籍,作者是尹宝林,主要介绍了关于C语言、编程思想方面的知识内容,目前在C语言类书籍综合评分为:7.5分。
书籍介绍
内容简介
本书是一本讲授使用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.3char的符号类型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