![]() 作者:(美)杰瑞 R. 汉丽(Jeri R. Hanly) (美)埃利奥特 B. 考夫曼(Elliot B. Koffman) 出版社: 机械工业出版社 原作名: Problem Solving and Program Design in C, Seventh Edition 译者:赵涓涓 页数: 522 定价: 129.00元 装帧: 平装 丛书: 计算机科学丛书 ISBN: 9787111563846 内容简介 · · · · · ·本书面向编程初学者,在清晰阐释程序设计基本思想的同时,全面涵盖C语言的核心知识点。全书围绕程序员的学习需求来组织内容,从第1章开始引入软件工程思维,通过贯穿各章的“案例分析”模块实践“问题-分析-设计-实现-测试 ”的问题求解方法,尤为重视良好编程习惯的培养。本书作为计算机专业教材历经十几年的教学实践,这一版对指针的讲解更加透彻,并新增了三个使用可视化图形案例的章节,还更新了一些编程练习题。 作者简介 · · · · · ·Jeri R. Hanly 世界知名的计算机科学教育家。曾多年任教于怀俄明大学和霍华德大学计算机科学系。她出版过多部著作,并被译为多种文字,其读者遍及全世界,。 Elliot Koffman 美国一流的计算机科学教育家。坦普尔大学计算机和信息科学系教授,有近40年的教学经验。他曾经担任ACM Task Force的主席。已出版著作数十部,其中包括多种非常成功的编程语言教材。 目录 · · · · · ·出版者的话译者序 前言 第0章 职业成长道路之计算机科学 1 0.1 为什么计算机科学可能是适合你的领域 1 0.1.1 主修计算机的原因 1 · · · · · ·() 出版者的话 译者序 前言 第0章 职业成长道路之计算机科学 1 0.1 为什么计算机科学可能是适合你的领域 1 0.1.1 主修计算机的原因 1 0.1.2 计算机科学家的特征 2 0.2 大学经验:计算机学科和专业选择 3 0.2.1 计算机科学 4 0.2.2 计算机工程 4 0.2.3 信息系统 4 0.2.4 信息技术 5 0.2.5 软件工程 5 0.2.6 混合学科专业 6 0.3 就业机会 6 0.3.1 美国和世界的需求 7 0.3.2 对弱势群体的需求 7 0.3.3 新职业初见端倪 8 第1章 计算机和程序设计概述 9 1.1 电子计算机的发展史 9 1.2 计算机硬件 11 1.2.1 存储器 12 1.2.2 中央处理单元 14 1.2.3 输入/输出设备 15 1.2.4 计算机网络 15 1.3 计算机软件 17 1.3.1 操作系统 17 1.3.2 应用软件 18 1.3.3 计算机语言 19 1.3.4 程序执行 22 1.4 软件开发方法 23 1.4.1 软件开发过程 23 1.4.2 注意:失败是软件开发过程的一部分 24 1.5 软件开发方法的应用 25 1.6 程序员的职业道德 27 1.6.1 数据隐私和滥用 27 1.6.2 计算机黑客 27 1.6.3 剽窃和软件盗版 28 1.6.4 计算机资源的滥用 28 本章内容回顾 29 快速练习 29 复习题 30 第2章 C语言概述 31 2.1 C语言元素 31 2.1.1 预处理指令 31 2.1.2 预处理指令的语法 33 2.1.3 主函数 33 2.1.4 保留字 34 2.1.5 标准标识符 34 2.1.6 用户自定义标识符 34 2.1.7 大写字母和小写字母 35 2.1.8 程序风格——选择标识符名称 35 2.2 变量声明和数据类型 36 2.2.1 变量声明 36 2.2.2 数据类型 37 2.2.3 数值类型间的差异 38 2.2.4 char数据类型 39 2.2.5 ASCII码 39 2.3 可执行语句 41 2.3.1 存储器中的程序 41 2.3.2 赋值语句 41 2.3.3 给一个字符型变量赋值 42 2.3.4 输入/输出操作和函数 43 2.3.5 printf函数 43 2.3.6 scanf函数 45 2.3.7 return语句 47 2.4 C程序的一般形式 48 2.4.1 程序风格——程序中的空格 48 2.4.2 程序中的注释 48 2.4.3 程序风格——使用注释 49 2.5 算术表达式 50 2.5.1 运算符/和% 50 2.5.2 表达式的数据类型 51 2.5.3 混合型赋值语句 52 2.5.4 强制类型转换 52 2.5.5 整型字符 53 2.5.6 多元运算符表达式 53 2.5.7 C语言中数学公式的表达 55 2.5.8 数值不精确 56 2.6 程序输出中的格式化数字 61 2.6.1 int类型的格式化值 61 2.6.2 double类型的格式化值 62 2.6.3 程序风格——消除首位空格 62 2.7 交互模式、批处理模式和数据文件 63 2.7.1 输入重定向 63 2.7.2 程序风格——回显输出与提示 63 2.7.3 输出重定向 64 2.8 常见编程错误 65 2.8.1 语法错误 65 2.8.2 运行时错误 67 2.8.3 未被发现的错误 67 2.8.4 逻辑错误 69 本章内容回顾 69 快速练习 70 复习题 71 编程项目 72 第3章 自顶向下的程序设计与函数 74 3.1 使用现有信息构建项目 74 3.2 库函数 81 3.2.1 预定义函数和代码重用 81 3.2.2 使用颜色突出显示新的结构 82 3.2.3 C语言库函数 83 3.2.4 知识扩展 84 3.3 自顶向下的设计和结构图 85 3.4 没有参数的函数 86 3.4.1 函数原型 87 3.4.2 函数定义 88 3.4.3 程序中函数的位置 89 3.4.4 程序风格——为程序中的函数添加注释 91 3.4.5 子函数与主函数的执行顺序 91 3.4.6 函数子程序的优点 91 3.4.7 显示用户说明 92 3.5 含输入参数的函数 93 3.5.1 含输入参数的void类型的函数 94 3.5.2 含输入参数与单一返回值的函数 95 3.5.3 程序风格——函数接口注释 97 3.5.4 带有多个参数的函数 97 3.5.5 对应参数列表 99 3.5.6 函数数据区 99 3.5.7 使用驱动程序测试函数 100 3.6 计算机图形学介绍(可选) 100 3.6.1 窗口的组成 100 3.6.2 常见的图形功能 101 3.6.3 程序风格——驼峰规则 102 3.6.4 背景色和前景色 102 3.6.5 绘制矩形 103 3.6.6 绘制圆、椭圆和弧线 104 3.6.7 程序风格——编写常见的图形程序 106 3.6.8 程序缺陷——不正确的函数调用顺序 108 3.6.9 扇形区域和实心椭圆 109 3.6.10 将文本信息添加到图形中 110 3.7 常见编程错误 112 本章内容回顾 112 快速练习 113 复习题 114 编程项目 114 图形项目 117 第4章 选择结构:if语句和switch语句 118 4.1 控制结构 118 4.2 条件表达式 119 4.2.1 关系运算符和等式运算符 119 4.2.2 逻辑运算符 120 4.2.3 运算符优先级 121 4.2.4 短路求值 122 4.2.5 用C语言实现对自然语言条件的编写 123 4.2.6 字符比较 123 4.2.7 逻辑赋值 124 4.2.8 补集 125 4.3 if语句 126 4.3.1 if双重选择语句 127 4.3.2 if单选择语句 128 4.3.3 if单选择语句与if双重选择语句的比较 128 4.3.4 程序风格——if语句的格式 129 4.4 含有复合语句的if语句 130 4.4.1 程序风格——使用复合语句编写if语句 131 4.4.2 if语句的调试 131 4.5 算法的决策过程 133 4.5.1 程序风格——函数名的一致性 139 4.5.2 程序风格——内聚函数 139 4.5.3 程序风格——使用常量宏定义来提高可读性和易维护性 139 4.6 更多待解决的问题 140 4.6.1 结构图中的数据流信息 140 4.6.2 函数子程序的修改 140 4.7 if嵌套语句和多重选择决策 142 4.7.1 if嵌套和if序列的比较 142 4.7.2 if嵌套语句的多重选择决策形式 143 4.7.3 多重选择决策条件的顺序 144 4.7.4 程序风格——验证变量的值 146 4.7.5 含有多个变量的if嵌套语句 146 4.8 switch语句 149 4.9 常见编程错误 153 本章内容回顾 154 快速练习 156 复习题 157 编程项目 158 第5章 重复和循环语句 162 5.1 重复 162 5.2 计数循环和while语句 163 5.3 使用循环计算累加和与乘积 166 5.3.1 程序风格——编写通用的循环 168 5.3.2 数字列表乘积运算 168 5.3.3 复合赋值运算符 169 5.4 for语句 170 5.4.1 程序风格——for语句的格式 171 5.4.2 自增和自减运算符 172 5.4.3 除1以外的增加量和减少量 173 5.4.4 显示数值表 175 5.5 条件循环 176 5.6 循环设计 180 5.6.1 标记控制循环 181 5.6.2 for语句实现标记循环 182 5.6.3 文件结束控制循环 183 5.6.4 错误数据上的无限循环 183 5.7 嵌套循环 185 5.8 do-while语句与标志控制循环 188 5.9 迭代近似 191 5.10 如何调试和测试程序 198 5.10.1 使用调试程序 198 5.10.2 不使用调试器调试 198 5.10.3 循环差一错误 199 5.10.4 测试 200 5.11 循环在图形程序中的应用(可选) 200 5.12 常见编程错误 205 本章内容回顾 207 快速练习 208 复习题 210 编程项目 211 图形项目 216 第6章 指针和模块化编程 217 6.1 指针和间接寻址运算符 217 6.1.1 间接引用 218 6.1.2 指向文件的指针 218 6.2 含有输出参数的函数 220 6.3 对包含输入/输出参数的函数的多重调用 226 6.4 名字作用域 230 6.5 形式输出参数作为实参 231 6.6 问题解决说明 234 6.7 程序系统的调试和测试 246 6.8 常见编程错误 248 本章内容回顾 248 快速练习 249 复习题 251 编程项目 252 第7章 数组 259 7.1 数组的声明和引用 259 7.1.1 数组的初始化 260 7.1.2 在字符数组中存储字符串 261 7.2 数组下标 261 7.3 使用for循环语句进行顺序访问 263 7.3.1 使用数组进行统计计算 263 7.3.2 程序风格——使用循环控制变量作为数组下标 266 7.4 使用数组元素作为函数参数 266 7.5 数组参数 267 7.5.1 形式数组参数 268 7.5.2 与数组参数有关的参数 268 7.5.3 数组作为输入参数 269 7.5.4 返回数组的结果 271 7.5.5 部分填充数组 272 7.5.6 栈 274 7.6 数组的查找与排序 276 7.6.1 数组查找 276 7.6.2 数组排序 278 7.7 并行数组和枚举类型 280 7.7.1 枚举类型 280 7.7.2 带有枚举类型下标的数组 284 7.8 多维数组 285 7.8.1 多维数组的初始化 287 7.8.2 具有多个维度的数组 287 7.9 数组处理说明 289 7.10 数组表示图形程序(可选) 295 7.10.1 绘制多边形 295 7.10.2 程序风格——使用字符数组存储提示信息 297 7.10.3 生成随机数 297 7.10.4 为随机数生成器设置随机数种子 297 7.10.5 绘制网格 298 7.11 常见编程错误 302 本章内容回顾 303 快速练习 304 复习题 305 编程项目 306 第8章 字符串 312 8.1 字符串基础知识 312 8.1.1 声明和初始化字符串变量 313 8.1.2 字符串数组 313 8.1.3 scan和printf的输入/输出 313 8.2 字符串库函数:赋值和子字符串 316 8.2.1 字符串赋值 318 8.2.2 子串 318 8.3 长字符串:串连和整行输入 323 8.3.1 串连 323 8.3.2 字符和字符串的区别 324 8.3.3 整行输入 324 8.4 字符串的比较 326 8.5 指针数组 328 8.6 字符操作 332 8.6.1 字符输入/输出 332 8.6.2 字符的分析与转换 334 8.7 字符串和数值之间的相互转换 336 8.8 字符串处理说明 340 8.9 常见编程错误 346 本章内容回顾 348 快速练习 349 复习题 351 编程项目 352 第9章 递归 355 9.1 递归的性质 355 9.2 跟踪递归函数 359 9.2.1 跟踪一个有返回值的递归函数 359 9.2.2 跟踪递归函数void 360 9.2.3 参数和局部变量堆栈 361 9.2.4 在C语言中实现参数栈 363 9.2.5 跟踪循环函数的时机和方法 363 9.3 递归的数学函数 364 9.4 带有数组和字符串参数的递归函数 368 9.5 递归问题的解决 373 9.6 递归的经典案例研究:汉诺塔 379 9.7 常见编程错误 383 本章内容回顾 384 快速练习 384 复习题 385 编程项目 386 第10章 结构体与联合体类型 388 10.1 用户定义的结构体类型 388 10.1.1 结构体类型定义 388 10.1.2 操作结构体数据对象的单个组件 390 10.1.3 运算符优先级回顾 391 10.1.4 操作整个结构体 391 10.1.5 程序风格——类型命名约定 391 10.2 作为输入和输出参数的结构体类型数据 392 10.3 结果值是结构体的函数 396 10.4 结构体类型的问题解决 398 10.5 平行数组和结构体数组 404 10.5.1 平行数组 404 10.5.2 声明一个结构体数组 404 10.6 联合体类型(可选) 412 10.7 常见编程错误 416 本章内容回顾 416 快速练习 417 复习题 419 编程项目 420 第11章 文本和二进制文件的处理 424 11.1 输入/输出文件:回顾和进一步研究 424 11.1.1 键盘和屏幕作为文本流 424 11.1.2 换行符和EOF 425 11.1.3 转义字符 425 11.1.4 printf的格式化输出 425 11.1.5 文件指针变量 427 11.1.6 获取文件指针参数的函数 428 11.1.7 关闭文件 428 11.2 二进制文件 431 11.3 数据库查询 435 11.4 常见编程错误 442 本章内容回顾 442 快速练习 443 复习题 444 编程项目 445 第12章 大规模编程 447 12.1 使用抽象来管理复杂度 447 12.1.1 过程抽象 447 12.1.2 数据抽象 448 12.1.3 信息隐藏 448 12.1.4 可重用代码 449 12.2 个人库:头文件 449 12.2.1 头文件 449 12.2.2 设计头文件的注意事项 452 12.3 个人库:实现文件 452 12.4 存储类 455 12.4.1 全局变量 455 12.4.2 存储类static和register 457 12.5 在库中修改函数 458 12.6 条件编译 460 12.7 主函数的参数 463 12.8 定义宏参数 465 12.8.1 在宏体中使用括号 466 12.8.2 将宏扩展到两行或多行 467 12.9 常见编程错误 468 本章内容回顾 468 快速练习 470 复习题 471 编程项目 471 第13章 动态数据结构 474 13.1 指针 474 13.1.1 作为函数参数的指针 475 13.1.2 表示数组和字符串的指针 475 13.1.3 指向结构体的指针 476 13.1.4 总结指针的使用 476 13.2 动态存储分配 477 13.2.1 访问动态分配结构体的组件 478 13.2.2 用calloc分配动态数组 479 13.2.3 返回堆的单元格 480 13.3 链表 480 13.3.1 带有指针组件的结构体 481 13.3.2 连接结点 482 13.3.3 链表的优点 483 13.4 链表运算符 484 13.4.1 遍历列表 484 13.4.2 获取输入列表 486 13.4.3 搜索目标链表 487 13.4.4 避免跟随空指针 488 13.5 用链表表示栈 488 13.6 用链表表示队列 491 13.7 有序表 496 13.8 二叉树 504 13.8.1 二叉搜索树 505 13.8.2 搜索二叉搜索树 505 13.8.3 创建二叉搜索树 506 13.8.4 显示二叉搜索树 509 13.9 常见编程错误 511 本章内容回顾 511 快速练习 512 复习题 513 编程项目 514 术语表 517 在线资源 第14章 多进程和线程的使用 第15章 C++基础 附录A 关于指针的更多知识 附录B ANSI C标准库函数 附录C C语言运算符 附录D 字符集 附录E ANSI C保留字 · · · · · · () |
以前就看过的书
已经很惊讶
现在终于有机会看看这本书
听说很久,却一直没有看的一本书