首页>参考读物>计算机科学与技术>软件与程序设计

C语言编程思想与方法
作者 : 尹宝林 著
丛书名 : 华章程序员书库
出版日期 : 2022-03-02
ISBN : 978-7-111-69828-9
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 348
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是一本讲授使用C语言进行程序设计的实用参考书。它以C语言为工具,讲授程序设计的过程和方法。从C语言和C程序的基本要素以及程序设计的基本方法开始,循序渐进地引入对程序设计专业化的要求和相关的知识。从增强读者的感性认识入手,通过多角度对例题的分析,示范对关键知识和技术的运用,通过对关键内容在不同层次上的适当重复,深化读者对概念的理解和掌握。

图书特色

聚焦编程的思路和方法,带你掌握C语言程序设计的精髓
131个经典问题求解示例,全面覆盖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 改进数据结构261
7.3.5 了解和适应硬件的特性263
7.3.6 编译优化选项266
7.4 空间效率的改进策略和方法267
7.4.1 内存使用状况的检测267
7.4.2 空间效率的改进方法268
第8章 程序的风格、结构和组织272
8.1 程序风格的要素272
8.2 程序的描述273
8.2.1 代码描述的层次273
8.2.2 代码的函数封装 274
8.2.3 数据描述控制代码的执行275
8.2.4 表达式的描述284
8.2.5 预处理和变量初始化的使用285
8.2.6 程序可靠性的设计要点286
8.2.7 错误信息和日志文件287
8.2.8 关于可移植性的考虑289
8.2.9 程序中的注释290
8.3 变量使用中的规则和风格290
8.3.1 变量的命名291
8.3.2 变量的命名空间和作用域292
8.3.3 变量的生存周期和静态局部变量295
8.3.4 全局变量的使用298
8.3.5 变量与常量的比较299
8.4 函数的参数和变长参数表300
8.4.1 基于指针数组的变长参数处理机制 301
8.4.2 变长参数表302
8.4.3 函数的参数传递302
8.4.4 变长参数表的基本处理机制和工具303
8.4.5 变长参数表和程序描述风格305
8.4.6 vprintf()函数族310
8.5 缓冲区溢出311
8.6 常用编译预处理命令的使用313
8.6.1 文件的包含313
8.6.2 宏314
8.6.3 系统预定义的宏317
8.6.4 条件编译318
8.7 编译选项指令:#pragma321
8.8 源文件的拆分322
8.8.1 源文件拆分的基本原则323
8.8.2 源文件的类型和后缀323
8.8.3 避免.h文件被重复引用324
8.8.4 静态全局变量325
8.8.5 可执行文件的生成和更新326
附录A 标准头文件及其中的函数说明和符号常量328
附录B cc/gcc的常用命令选项331
附录C vi的基本操作命令332
附录D ASCII编码表334
附录E 函数printf()的常用描述符及其含义336
示例索引338

教学资源推荐
作者: John Lewis Peter J. DePasquale;Joseph Chase;
作者: 苏小红 蒋远 单丽莉 李东 编著
作者: 钱丽萍 汪立东 张健 编著
参考读物推荐
作者: 于君泽,曹洪伟,邱硕 等著
作者: [美]穆拉特·埃尔德(Murat Erder),[美]皮埃尔·普约尔(Pierre Pureur),[美]伊恩·伍兹(Eoin Woods) 著
作者: [美]伦·巴斯(Len Bass),[美]保罗·克莱门茨(Paul Clements),[美]瑞克·凯兹曼(Rick Kazman) 著
作者: [美] 约书亚·布洛克 (Joshua Bloch)著