商家名称 |
信用等级 |
购买信息 |
订购本书 |
|
|
C程序设计思想与方法 |
|
|
|
C程序设计思想与方法 |
|
基本信息·出版社:机械工业出版社
·页码:334 页
·出版日期:2009年01月
·ISBN:7111254959
·条形码:9787111254959
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:面向计算机科学与技术专业规范系列教材
·图书品牌:华章图书
内容简介 《C程序设计思想与方法》不是一本讲授C语言自身特点的教材,而是讲授使用C语言进行程序设计的教材。它以C语言为工具,讲授程序设计的过程和方法,为培养学生的专业程序设计能力打下基础。《C程序设计思想与方法》以程序设计的思想和过程为主线,从专业化的角度重点讨论C语言的要素和特点、程序设计的基本思想和方法、程序质量的评估和改进、程序与运行环境的关系、中等规模程序的组织要点,以及一些专业化编程所必备的编程习惯和技巧等,并结合例题介绍这些方法和原则在实际编程中的具体运用。
《C程序设计思想与方法》面向对C语言和数据结构、算法分析等相关知识有基本了解,同时希望进一步提高自己实际程序设计能力的读者,适合作为计算机及相关专业高年级学生学习高级程序设计的教材,同时也适合刚走上工作岗位的专业人员阅读。
作者简介 尹宝林,1973年10月毕业于北京航空学院计算机专业,1984年获英国爱丁堡大学博士学位。现任北京航空航天大学计算机系教授、博士生导师。从事计算机专业教学和科研工作多年,曾主讲《C语言程序设计》、《高级语言程序设计》、《UNIX程序设计环境》、《计算机图形学》、《图像处理》等课程,其中《高级语言程序设计》被评为北京市精品课程。主编过《离散数学》教材一部。参加全国信息学奥林匹克(NOI)活动的组织与指导工作,任全国信息学奥林匹克科学委员会副主席。
编辑推荐 《C程序设计思想与方法》围绕程序设计的思想和方法组织教学内容,把C语言作为讲解程序设计的工具,把教学的重点从C语言本身转移到程序设计的思路和方法以及使用C语言编程上来,把讲授语言的概念转变为讲授语言的运用,把对概念的讲授由抽象的分析和讲解转变为通过实例和经验的学习和运用。
《C程序设计思想与方法》作者根据学生对新知识学习。认知的规律,从C语言和C程序的基本要素以及程序设计的基本方法开始,循序渐进地引入对程序设计专业化的要求和相关的知识;从增强学生的感性认识入手,通过多角度的对例题的分析,示范对关键知识和技术的运用,通过对关键内容在不同层次上的适当重复,深化学生对概念的理解和掌握。《C程序设计思想与方法》精选的例题和练习题,在功能、知识和技术上覆盖了从语言入门到实用工具多个层面,有助于学生掌握专业化的编程技能,养成专业化的编程习惯。
《C程序设计思想与方法》作者专门设计和实现了基于Web的C程序练习/评测系统,为学生提供具有及时监控和反馈环节的实践环境,为《C程序设计思想与方法》的练习题提供联网的实时评测。
目录 出版者的话
序言
前言
教学建议
例题索引
第0章 引言
第1章 C语言和C程序的基本要素
1.1 C语言概述
1.2 C程序的开发过程
1.3 C程序的基本结构
1.4 调试初步-语法错误的定位
1.5 算术运算和表达式
1.6 常量和变量
1.6.1 数字常量
1.6.2 字符常量
1.6.3 字符串常量
1.6.4 符号常量
1.6.5 枚举常量
1.6.6 变量
1.6.7 变量的赋值和初始化
1.6.8 一维数组
1.6.9 字符数组和字符串
1.6.10 二维数组
1.7 分支和条件语句
1.7.1 关系运算符和逻辑运算符
1.7.2 运算符的优先级
1.7.3 从自然语言到逻辑表达式
1.7.4 条件语句
1.7.5 条件表达式的类型
1.7.6 条件语句的嵌套和级联
1.7.7 使用条件语句时的注意事项
1.7.8 多路选择和switch语句
1.8 循环和循环语句
1.8.1 while语句
1.8.2 for语句
1.8.3. do while语句
1.8.4 循环语句中的跳转
1.9 函数
1.9.1 函数的结构
1.9.2 函数的调用
1.9.3 函数的参数传递
1.9.4 代码的封装
1.10 输入和输出
1.10.1 文件
1.10.2 标准输入/输出文件
1.10.3 常用的输入/输出函数
1.11 C语言的书写格式
1.11.1 换行和空行
1.11.2 缩进
1.11.3 空格
1.11.4 注释
习题
第2章 程序设计的基本方法
2.1 程序设计的基本过程
2.2 问题分析
2.2.1 对程序功能的要求
2.2.2 对程序性能的要求
2.2.3 程序的使用方式和环境
2.2.4 程序的错误处理
2.2.5 程序的测试
2.2.6 问题分析的结果
2.3 方案设计
2.3.1 解题思路
2.3.2 计算模型
2.3.3 算法分类
2.3.4 算法和数据结构的选择
2.3.5 算法的检验
2.4 编码:从算法到代码
2.4.1 代码的结构
2.4.2 编码的质量
2.4.3 代码的可维护性
2.4.4 代码中的注释
2.4.5 代码的检查
2.4.6 代码中常见的错误
2.5 测试和调试
2.5.1 调试的基本方法
2.5.2 故障的检查、确认和修改
2.5.3 常见的故障类型和调试方法
2.5.4 调试数据的设计和使用
2.5.5 调试数据和标准输入/输出的重新定向
2.5.6 调试工具
2.5.7 测试和调试中常见的问题
2.6 手册的使用
习题
第3章 数值的表示和计算
3.1 整型数据类型
3.1.1 有符号数和无符号数
3.1.2 无符号数和标志位
3.1.3 整型的截断与扩展
3.1.4 整型计算的溢出和判断
3.1.5 整除所引起的误差
3.1.6 整型数据的字节序和尾端
3.2 浮点数据类型
3.2.1 浮点数据的表示方法
3.2.2 有效数字和最低位当量
3.2.3 浮点数的比较
3.2.4 浮点数值计算中的上溢和下溢
3.3 数值计算中的类型转换
3.3.1 基本类型转换和数据宽度
3.3.2 强制类型转换
3.3.3 char的符号类型
3.3.4 变量符号类型的判断
3.4 按位操作
3.4.1 移位操作
3.4.2 标志位的设置、检测和清除
3.4.3 常用的位操作模式
3.4.4 位操作应用的例
3.5 数值计算的速度
习题
第4章 指针、数组、结构和类型
4.1 指针变量
4.1.1 指针变量的定义
4.1.2 指针的类型
4.1.3 指针运算
4.1.4 指针的强制类型转换
4.1.5 不合法的指针运算
4.1.6 指针与整数
4.1.7 指针的增量运算和减量运算
4.1.8 作为函数参数的指针
4.2 指针和一维数组
4.2.1 指针和数组的互换
4.2.2 动态一维数组
4.2.3 数组复制与指针赋值
4.2.4 变量限制符const
4.2.5 数组的负数下标
4.3 二维数组和一维指针数组
4.3.1 作为参数的二维数组
4.3.2 二维数组和指针
4.3.3 二维数组和一维指针数组
4.3.4 指针数组和命令行参数
4.3.5 二维数组的动态分配
4.4 函数指针
4.4.1 函数指针变量的定义
4.4.2 函数指针变量的使用
4.4.3 函数指针数组的使用
4.5 结构
4.5.1 结构类型的定义
4.5.2 结构成员的访问
4.5.3 结构类型的嵌套定义
4.5.4 结构的自引用
4.5.5 结构类型与函数的参数和返回值
4.6 复杂类型的解读
4.6.1 变量定义中的复杂类型说明
4.6.2 强制类型转换中的复杂类型
4.6.3 类型定义(typedef)语句和复杂类型的定义
习题
第5章 程序中的递归
5.1 递归的定义
5.2 递归函数的执行
5.3 递归函数的设计
5.4 递归的优点和缺点
5.5 递归函数的效率
5.6 递归函数的使用
5.6.1 适宜使用递归的情况
5.6.2 不适宜使用递归的情况
5.7 递归函数效率的改进
5.7.1 尾递归函数的非递归化
5.7.2 带存储机制的递归
5.7.3 一般递归函数的非递归化
习题
第6章 搜索
6.1 搜索的目标和基本过程
6.2 深度优先搜索
6.2.1 深度优先搜索的基本算法
6.2.2 回溯搜索
6.3 广度优先搜索
6.4 重复节点的判断
6.5 带深度控制的广度优先搜索
6.6 节点的编码和搜索效率
习题
第7章 常用函数和函数库
7.1 静态链接和动态链接
7.1.1 静态链接
7.1.2 动态链接
7.2 库函数的使用
7.2.1 标准库函数的头文件
7.2.2 标准函数库文件的使用
7.2.3 错误信息函数和变量
7.3 数据输入输出函数
7.3.1 文件描述字和字符流
7.3.2 文件的打开、创建和关闭
7.3.3 文件数据的二进制格式读写
7.3.4 读写操作中的定位
7.3.5 基础读写与字符流读写的效率比较
7.3.6 字符流的冲刷
7.3.7 文件的属性
7.4 字符类型和字符串函数
7.4.1 字符类型函数
7.4.2 字符串操作函数
7.5 时间函数
7.5.1 日历时间
7.5.2 程序运行时间
7.6 随机数函数
7.6.1 基本随机数函数
7.6.2 均匀分布随机数的生成
7.6.3 非均匀连续分布随机数的生成
7.6.4 离散分布随机数的生成
习题245
第8章 程序的优化
8.1 优化的作用和意义
8.2 优化的基本过程
8.2.1 运算时间和存储空间
8.2.2 优化可能性的判断
8.2.3 程序运行的整体计时
8.2.4 程序运行的分析计时和程序运行剖面
8.3 运行效率的改进策略和方法
8.3.1 调整代码
8.3.2 改进算法
8.3.3 空间换时间
8.3.4 改进数据结构
8.3.5 了解和适应硬件的特性
8.3.6 编译优化选项
8.4 空间效率的改进策略和方法
8.4.1 内存使用状况的检测
8.4.2 空间效率的改进方法
习题273
第9章 程序的风格、结构和组织
9.1 程序风格的要素
9.2 程序的描述
9.2.1 代码描述的层次
9.2.2 代码的函数封装
9.2.3 数据描述控制代码的执行
9.2.4 表达式的描述
9.2.5 预处理和变量初始化的使用
9.2.6 程序可靠性的设计要点
9.2.7 错误信息和日志文件
9.2.8 关于可移植性的考虑
9.2.9 程序中的注释
9.3 变量使用中的规则和风格
9.3.1 变量的命名
9.3.2 变量的命名空间和作用域
9.3.3 变量的生存周期和静态局部变量
9.3.4 全局变量的使用
9.3.5 变量与常量的比较
9.4 函数的参数和变长参数表
9.4.1 基于指针数组的变长参数处理机制
9.4.2 变长参数表
9.4.3 函数的参数传递
9.4.4 变长参数表的基本处理机制和工具
9.4.5 变长参数表和程序描述风格
9.4.6 vprintf()函数族
9.5 缓冲区溢出
9.6 常用编译预处理命令的使用
9.6.1 文件的包含
9.6.2 宏
9.6.3 条件编译
9.7 源文件的拆分
9.7.1 源文件拆分的基本原则
9.7.2 源文件的类型和后缀
9.7.3 避免.h文件被重复引用
9.7.4 静态全局变量
9.7.5 可执行文件的生成和更新
习题
附录
参考文献
……
序言 关于C语言的书籍即使没有汗牛充栋,也已然不胜枚举。这时再出一本关于C语言程序设计的书有什么意义呢?这本书与其它名称相近的书有什么不同呢?这可能是很多读者在拿起这本书时首先要提的问题。
与大多数书名包含“C语言”字样的书籍不同的是,这本书不是一本关于C语言本身的书,而是一本关于使用C语言进行程序设计的书。目前大多数关于C语言编程的书籍是以讲授C语言为基本目标,其主要内容大多集中在C语言本身,包括语言的基本要素和各种语句的基本使用方法,但是对于如何正确、准确、有效地写出一个稍微长一点的程序,如何使用C语言去解决各类程序设计问题则涉及较少。此外,也有一些由资深编程人员和理论工作者撰写的关于程序设计方法、模式以及软件工程方面的书,详细探讨了关于大型软件和复杂程序研发的过程、方法、经验和体会。但是这些书籍所讨论的内容与初学者所关注的重点以及其所具备的知识和能力之间存在着巨大的鸿沟,读懂这些书籍对于初学者来说远非易事。在能够理解和掌握大型复杂程序设计的知识和技术之前,初学者首先需要能够掌握程序设计的基本方法,熟练地掌握和运用程序设计语言去解决具有一定规模的小型问题,并逐步积累程序设计的经验。本书定位在上述两类书籍之间,目的是为初步掌握了C语言、并且希望进一步提高自己实际程序设计能力的读者提供适当的教材。希望读者能通过本书掌握程序设计的基本方法,使用C语言编程解决具有一定规模的小型问题,能够比较顺利地写出包含几十行、几百行源代码甚至更长一点的程序,能够了解和掌握对程序质量评估和改进的基本思想和方法,能够为进一步培养和发展自己的专业化程序设计能力打下良好的基础。
读者还可能要问,在“面向对象”成为程序设计中一种潮流的情况下,在有C++、C#、Java等新的语言的情况下,为什么还要学习C语言这样一种已经有30多年历史的结构化程序设计语言呢?
C语言是一种适用领域宽广的编程语言,目前仍然被广泛地使用。在TIOBE Software Company 2008年3月份统计的全部软件项目编码中,C语言的使用率为15.59%,紧排在第一名Java的20.65%后面。C语言的成功得益于它的诸多特点。从学习的角度看,C语言语法和结构简单,便于掌握,因此初学者可以把更多的精力集中在程序设计方法上而不是编程语言本身。C语言兼具高级语言和低级语言特性的特点可以使得学习者在掌握高级语言程序设计技术的同时,也关注和理解程序运行的机制和过程,而这也是计算机专业工作者所必备的专业素质之一。C语言是一种对其它编程语言有着重大影响的语言。不仅C++和Java脱胎于C语言,一些常用的脚本语言,如在Web技术中常用的PHP,Unix/Linux中的C Shell等也都大量借鉴和采用了C语言的语法和其它要素。熟练地掌握C语言对于学习和使用这些编程语言的帮助是不言而喻的。所有这些特点使得C语言不仅适合于实际的程序设计,而且也适合于作为学习程序设计的入门语言。
本书面向对C语言和数据结构等相关知识有基本的了解、又希望提高自己实际程序设计能力的读者,既包括计算机以及相关专业的学生,也包括刚刚走上工作岗位的专业人员。本书主要讨论中小规模程序的分析、设计和实现过程、指导原则、以及常用的方法,并结合例题介绍这些方法和原则在实际编程中的具体运用。希望本书能够帮助读者从理论和实践相结合的角度更好地把握程序设计的基本过程和方法,希望读者能够通过对本书的学习学会程序设计,并通过进一步的练习,逐渐写出符合专业要求的程序。
如同学习任何一种语言一样,练习是学会使用C语言的重要环节。为此书中选择了适当数量的习题。这些习题一般不涉及复杂的计算模型和算法,而是侧重于使读者在问题的分析、计算过程的分解、数据结构的选择、程序结构的组织等程序设计过程和方法方面得到训练。完成这些习题不需要掌握大量复杂的算法及其应用技巧,而只需要有数据结构、算法分析、集合论、数理逻辑等大学专业基础课的入门知识就可以了。
本书的主要内容在北航计算机专业本科生的高级语言程序设计课程的提高部分讲授多年,并根据学生们的意见和建议进行了调整和增删。担任过课程教学辅导的研究生们在学生意见的收集、例题和习题的拟定、以及课程的练习/考试系统的研制和维护等方面贡献良多,本书在写作也得到了不少同事的热情鼓励和多方支持,作者对此表示衷心的感谢。限于水平,书中的错漏之处在所难免,还望读者不吝指正。
文摘 插图: