出版社:机械工业出版社
年代:2011
定价:75.0
本书是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。本书以介绍ANSI C为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发等内容。本书采用了库函数的方法,强调抽象的原则,详细阐述了库和模块化开发。此外,本书还利用大量实例讲述解决问题的全过程,对开发过程中常见的错误也给出了解决和避免的方法。本书既可作为高等院校计算机科学入门课程及C语言入门课程的教材,也是C语言开发人员的极佳参考书。
运算符(可选的)4.5 switch语句4.6 while语句4.6.1 while循环的应用4.6.2 无限循环4.6.3 解决半途退出问题4.7 for语句4.7.1 嵌套的for循环4.7.2 for和while的关系4.7.3 for语句中浮点型数据的使用问题小结复习题程序设计练习第5章 函数5.1 使用库函数5.2 函数声明5.3 自己编写函数5.3.1 return语句5.3.2 将函数与主程序放在一起5.3.3 包含内部控制结构的函数5.3.4 返回非数字值的函数5.3.5 谓词函数5.3.6 测试字符串是否相等的谓词函数5.4 函数调用过程机制5.4.1 参数传递5.4.2 在其他函数中调用函数5.5 过程5.6 逐步精化5.6.1 从顶开始5.6.2 实现printcalendar5.6.3 实现printcalendarmonth5.6.4 完成最后的片段小结复习题程序设计练习第6章 算法6.1 测试素数6.1.1 一个isprime的简单版本6.1.2 验证一个策略是否表示一个算法6.1.3 说明isprime算法的正确性6.1.4 改进算法的效率6.1.5 在各个可选方案中选择6.2 计算最大公约数6.2.1 brute-force算法6.2.2 欧几里得算法6.2.3 欧几里得算法的正确性说明(可选)6.2.4 比较gcd算法的效率6.3 数值算法6.3.1 连续逼近6.3.2 报告错误6.4 级数展开6.4.1 zeno悖论6.4.2 用级数展开法设计平方根函数6.4.3 估计平方根的泰勒级数展开 (可选)6.4.4 泰勒级数近似的实现6.4.5 停留在收敛半径之内6.5 指定数值类型的大小6.5.1 整数类型6.5.2 无符号类型6.5.3 浮点类型小结复习题程序设计练习第二部分 库和模块化开发第7章 库和接口:一个简单的图形库7.1 接口的概念7.2 图形库介绍7.2.1 graphics.h的基本模型7.2.2 graphics.h接口的函数7.2.3 软件包初始化7.2.4 画直线7.2.5 画圆和弧7.2.6 获取有关图形窗口的信息7.3 建立自己的工具7.3.1 定义drawbox7.3.2 定义drawcenteredcircle7.3.3 绝对坐标和相对坐标间的切换7.3.4 定义过程的好处7.4 解决一个较大的问题7.4.1 使用逐步精化7.4.2 实现drawhouse过程7.4.3 寻找共同的模式7.4.4 结束分解小结复习题程序设计练习第8章 设计接口:一个随机数库8.1 接口设计8.1.1 同一主题的重要性8.1.2 简单性和信息隐藏的原则8.1.3 满足客户的需要8.1.4 通用工具的优势8.1.5 稳定性的价值8.2 用计算机生成随机数8.2.1 确定行为与非确定行为8.2.2 随机数和伪随机数8.2.3 ansi c中生成伪随机数8.2.4 改变随机数的范围8.2.5 将此问题通用化8.3 在库中保存工具8.3.1 接口的内容8.3.2 写random.h接口8.3.3 random.c的实现8.3.4 构造客户程序8.3.5 初始化随机数发生器8.4 评价random.h接口的设计8.4.1 产生随机实数8.4.2 模拟一个概率事件8.4.3 在接口中包含头文件8.4.4 完成随机数软件包的实现8.5 使用随机数软件包小结复习题程序设计练习第9章 字符串和字符9.1 枚举的原理9.1.1 在机器内部表示枚举类型9.1.2 将枚举类型表示为整数9.1.3 定义新的枚举类型9.1.4 枚举类型的操作9.1.5 标量类型9.2 字符9.2.1 数据类型char9.2.2 ascii代码9.2.3 字符常量9.2.4 ascii代码方案的重要特性9.2.5 特殊字符9.2.6 字符运算9.2.7 ctype.h接口9.2.8 涉及字符的控制语句9.2.9 字符的输入输出9.3 字符串作为抽象数据类型9.3.1 分层抽象9.3.2 抽象类型的概念9.4 strlib.h接口9.4.1 确定字符串的长度9.4.2 从一个字符串中选择字符9.4.3 连接9.4.4 将字符转换为字符串9.4.5 抽取字符串的一部分9.4.6 比较两个字符串9.4.7 在一个字符串内搜索9.4.8 大小写转换9.4.9 数值转换9.4.10 效率和strlib.h库小结复习题程序设计练习第10章 模块化开发10.1 pig latin—一个模块化开发的 案例研究10.1.1 应用自顶向下的设计10.1.2 使用伪代码10.1.3 实现translateline10.1.4 考虑空格和标点符号的问题10.1.5 精化单词的定义10.1.6 设计记号扫描器10.1.7 完成translateline的实现10.1.8 定义扫描器模块接口10.2 在模块中维护内部状态10.2.1 全局变量10.2.2 使用全局变量的危险性10.2.3 保持变量的模块私有化10.2.4 初始化全局变量10.2.5 私有函数10.3 实现扫描器抽象小结复习题程序设计练习第三部分 复合数据类型第11章 数组11.1 数组11.1.1 数组声明11.1.2 数组选择11.1.3 一个简单的数组实例11.1.4 改变下标值的范围11.2 数据的内部表示法11.2.1 比特、字节和字11.2.2 内存地址11.2.3 运算符sizeof11.2.4 变量的内存分配11.2.5 引用超出数组范围的元素11.3 数组作为参数进行传递11.3.1 元素个数的通用化11.3.2 数组参数传递机制11.3.3 实现函数printintegerarray和getintegerarray11.3.4 实现函数reverseintegerarray11.3.5 实现函数swapintegerelements11.4 使用数组制作表格11.5 数组的静态初始化11.5.1 自动确定数组大小11.5.2 确定初始化数组的大小11.5.3 初始化数组和标量类型11.6 多维数组11.6.1 向函数传送多维数组11.6.2 初始化多维数组小结复习题程序设计练习第12章 查找和排序12.1 查找12.1.1 在整数数组中查找12.1.2 关于查找的另一个更复杂 的例子12.1.3 线性查找12.1.4 二分查找12.1.5 查找算法的相对效率12.2 排序12.2.1 对一个整数数组排序12.2.2 选择排序算法12.2.3 选择排序效率的评估12.2.4 测试程序的运行时间12.2.5 选择排序的算法分析小结复习题程序设计练习第13章 指针13.1 将地址作为数据值13.2 c语言的指针操作13.2.1 在c语言中声明指针变量13.2.2 基本的指针操作13.2.3 特殊指针null13.3 通过引用传递参数13.3.1 设计函数swapinteger13.3.2 用引用调用返回多个结果13.3.3 过度使用引用调用的危险13.4 指针和数组13.4.1 指针运算13.4.2 运算符++和--的新作用13.4.3 指针的自增和自减13.4.4 指针和数组的关系13.5 动态分配13.5.1 void *类型13.5.2 动态数组13.5.3 查找malloc中的错误13.5.4 释放内存小结复习题程序设计练习第14章 再论字符串14.1 string类型的概念表示14.1.1 字符串作为数组14.1.2 字符串作为指针14.1.3 字符串作为抽象类型14.1.4 字符串参数14.1.5 字符串变量14.1.6 指针和数组变量间的区别14.1.7 决定字符串的表示方法14.2 ansi字符串库14.2.1 strcpy函数14.2.2 strncpy函数14.2.3 strcat和strncat函数14.2.4 strlen、strcmp和strncmp函数14.2.5 strchr、strrchr和strstr函数14.2.6 ansi字符串函数的应用14.3 strlib库的实现14.3.1 实现转换函数14.3.2 strlib分配函数的实现小结复习题程序设计练习第15章 文件15.1 文本文件15.2 c语言中文件的使用15.2.1 声明file*类型的变量15.2.2 打开文件15.2.3 执行i/o操作15.2.4 关闭文件15.2.5 标准文件15.3 字符i/o15.3.1 文件更新15.3.2 在输入文件中重新读取字符15.4 面向行的i/o15.5 格式化i/o15.5.1 printf的三种形式15.5.2 scanf函数15.5.3 用scanf读入字符串15.5.4 格式化i/o的一个实例15.5.5 使用scanf的局限小结复习题程序设计练习第16章 记录16.1 数据记录的概念16.2 记录在c语言中的使用16.2.1 定义一个结构类型16.2.2 声明结构变量16.2.3 记录选择16.2.4 记录初始化16.2.5 简单记录16.3 数组与记录的结合16.4 记录的指针16.4.1 定义一个指向记录类型的指针16.4.2 为记录数据分配空间16.4.3 对记录指针进行操作16.5 创建记录的数据库16.5.1 创建员工信息数据库16.5.2 数据库的使用16.6 基于记录的应用程序设计16.6.1 使用数据库的重要性16.6.2 问题的框架16.6.3 设计内部表示16.6.4 设计外部结构16.6.5 程序代码16.6.6 数据驱动设计方法的重要性小结复习题程序设计练习第17章 深入学习17.1 递归17.1.1 递归的简单说明17.1.2 factorial函数17.1.3 递归信任17.1.4 递归范例17.1.5 排列的生成17.1.6 用递归的思想思考17.2 抽象数据类型17.2.1 队列抽象17.2.2 以队列抽象表示类型17.2.3 queue.h 接口17.2.4 实现队列抽象17.2.5 队列抽象的另一种实现方法17.3 算法分析17.3.1 评估算法效率17.3.2 o标记17.3.3 再看选择排序17.3.4 分而治之策略17.3.5 合并两个数组17.3.6 合并排序算法17.3.7 合并排序的计算复杂性17.3.8 比较平方复杂性与nlogn复杂性的性能小结复习题程序设计练习附 录附录a c语言的语法和结构总结附录b 库源代码
《C语言的科学和艺术》是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。《C语言的科学和艺术》以介绍ANSIC为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发等内容。《C语言的科学和艺术》采用了库函数的方法,强调抽象的原则,详细阐述了库和模块化开发。此外,《C语言的科学和艺术》还利用大量实例讲述解决问题的全过程,对开发过程中常见的错误也给出了解决和避免的方法。《C语言的科学和艺术》既可作为高等院校计算机科学入门课程及C语言入门课程的教材,也是C语言开发人员的极佳参考书。【作者简介】 Eric S.Roberts第一次教授计算机科学入门课程是在20多年前,当时他还是一名哈佛学子。1980年获得博士学位以来,Roberts先后在哈佛、韦尔斯利、斯坦福大学教授计算机科学课程。在斯坦福大学,Roberts担任计算机科学系副主任,并负责本科生的计算机科学课程。虽然Roberts也教授计算机科学的高级课程并作一些研究工作,但他最大的乐趣还是向初学者展示计算机的强大功能。
(美) 罗伯茨 (Roberts,E.S.) , 著
(美) 罗伯茨 (Roberts,E.S.) , 著
王柏盛, 姬秀荔, 主编
牟海军, 著
杨开城, 编著
赵岩, 著
(美) 富勒 (Feuer,A.R.) , 著
(美) 汉利 (Hanly,J.R.) , (美) 科夫曼 (Koffman,E.B.) , 著
(美) 佩里 (Perry,G.) , (美) 米勒 (Miller,D.) , 著