C/C++/Java程序设计经典教程

C/C++/Java程序设计经典教程
作 者: Harvey Deitel Paul Deitel 贺军
出版社: 清华大学出版社
丛编项: 世界著名计算机教材精选
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  作者:DEITELHarveyM.Deitel,世界一流的计算机科学教员和研计会演讲人;PaulJ.Deitel,国际知名的教育家HarveyM.Deitel博士是Deitel&Associates公司总裁,有着40余年计算机领域的工作经验,进行了大量深入的教学研究,是世界一流的计算机科学教员和研计会演讲人。HarveyM.Deitel持有麻省理工学院学士、硕士学位和波士顿大学博士学位。他曾经在IBM和MIT的虚拟内存操作系统项目中从事研究工作,开发出在很多系统中广泛实现的技术。他还有20多年大学教学经验,取得过“教育特别津贴”。也是全球知名的计算机教材作者。其作品已被翻译成日、俄、中文(繁简)、韩、法、西班牙等语言。PaulJ.Deitel是Deitel&Associates公司执行副总裁,是麻省理工学院Sloun管理学校的毕业生。主修信息技术,通过Deitel&Associates公司他已经为DigitalEquipmentCorporation......等多家公司的客户提供Java、C和C++课程的教学活动,并曾为计算机协会波士顿分会授Java和C++语言,还通过卫星直播Java课程。C++大学基础教程(第五版)>>更多作品

内容简介

本书译自经典计算机教程《C How to Program》的最新版,在美国,数十万学生通过本书学习C语言。作者Deitel & Deitel父子俩从事编程和教学工作几十年,积累了丰富的经验,通过本书讲述了C语言、C++以及Java语言的基本概念及编程方法。本书重在强调程序的清晰性与实用性,书中给出大量的相关提示信息,可以引导读者养成良好的编程习惯,提高程序性能和可移植性。本书适用于只有很少甚至没有编程经验的大专院校学生,可以作为计算机编程方面的入门级教材,同时也可作为初中级程序员的参考用书。

图书目录

第1章 计算机、Internet和万维网入门 1

1.1 简介 1

1.2 计算机是什么 3

1.3 计算机的组织 3

1.4 操作系统的演变 4

1.5 个人计算、分布计算和客户/服务器

计算 5

1.6 机器语言、汇编语言和高级语言 5

1.7 C语言的历史 7

1.8 C语言的标准库 8

1.9 重要的软件发展趋势:面向对象的

技术 8

1.10 C++语言以及C++编程 10

1.11 Java语言以及Java编程 11

1.12 其他高级语言 11

1.13 结构化编程 12

1.14 C程序开发环境基础 12

1.15 硬件趋势 15

1.16 Internet的历史 15

1.17 万维网的历史 17

1.18 C语言及本书的注意事项 17

自测练习 18

练习 19

第2章 C程序设计入门 21

2.1 简介 21

2.2 一个简单的C程序:显示一行文本 21

2.3 另一个简单的C程序:两个整数相加 25

2.4 内存的概念 29

2.5 C的算术运算 30

2.6 判断:等式和关系运算符 34

自测练习 37

练习 41

第3章 C语言结构化程序开发 46

3.1 简介 46

3.2 算法 46

3.3 伪代码 47

3.4 控制结构 47

3.5 if 选择结构 49

3.6 if/else选择结构 51

3.7 while循环结构 55

3.8 表述算法:案例研究1(计数器控制

的循环) 56

3.9 使用自顶向下、逐步求精方法表述

算法:案例研究2(标记控制循环) 58

3.10 使用自顶向下、逐步求精方法表述

算法:案例研究3(嵌套控制结构) 64

3.11 赋值运算符 68

3.12 递增运算符和递减运算符 68

自测练习 71

练习 75

第4章 C程序控制 85

4.1 简介 85

4.2 循环的本质 85

4.3 计数器控制的循环 86

4.4 for循环结构 88

4.5 for结构:说明和观察 90

4.6 使用for结构的示例 91

4.7 switch多重选择结构 95

4.8 do/while循环结构 100

4.9 break和continue语句 102

4.10 逻辑运算符 103

4.11 相等运算符(==)和赋值运算符

(=) 106

4.12 结构化编程小结 108

自测练习 113

练习 116

第5章 C函数 123

5.1 简介 123

5.2 C语言的程序模块 123

5.3 数学库函数 124

5.4 函数 126

5.5 函数的定义 126

5.6 函数原型 130

5.7 头文件 133

5.8 调用函数:按值调用和按引用调用 134

5.9 随机数的生成 134

5.10 示例:运气游戏 139

5.11 存储类别 142

5.12 作用域的规则 144

5.13 递归 147

5.14 递归实例:斐波纳契数列 150

5.15 递归与迭代 154

自测练习 156

练习 161

第6章 C数组 171

6.1 简介 171

6.2 数组 171

6.3 声明数组 173

6.4 数组使用示例 173

6.5 数组传递给函数 185

6.6 排序数组 190

6.7 案例研究:用数组计算平均值、中值

和最频值 192

6.8 查找数组 196

6.9 多维数组 201

自测练习 207

练习 210

第7章 C指针 222

7.1 简介 222

7.2 指针变量声明和初始化 222

7.3 指针运算符 223

7.4 按引用调用函数 226

7.5 使用指针的const限定符 229

7.6 使用按引用调用的冒泡排序 235

7.7 指针表达式和指针算法 240

7.8 指针和数组的关系 243

7.9 指针数组 247

7.10 案例研究:洗牌和发牌模拟 248

7.11 函数指针 253

自测练习 257

练习 260

第8章 C字符和字符串 275

8.1 简介 275

8.2 字符串和字符的基本知识 275

8.3 字符处理库 277

8.4 字符串转换函数 282

8.5 标准输入/输出库函数 287

8.6 字符串处理库的字符串处理函数 291

8.7 字符处理库的比较函数 293

8.8 字符串处理库的查找函数 295

8.9 字符串处理库的内存函数 301

8.10 字符串处理库的其他函数 305

自测练习 306

练习 309

第9章 C格式化的输入/输出 316

9.1 简介 316

9.2 流 316

9.3 用printf格式化输出 316

9.4 打印整数 317

9.5 打印浮点数 318

9.6 打印字符串和字符 320

9.7 其他转换说明符 321

9.8 用字段宽度和精度打印 323

9.9 在printf格式控制字符串中使用标记 325

9.10 打印字面量和转义序列 328

9.11 用scanf格式化输入 329

自测练习 335

练习 337

第10章 C结构、联合、位操作和枚举 340

10.1 简介 340

10.2 结构定义 340

10.3 初始化结构 343

10.4 访问结构成员 343

10.5 在函数中使用结构 345

10.6 typedef 345

10.7 示例:高性能洗牌和发牌仿真程序 346

10.8 联合 349

10.9 位运算符 351

10.10 位字段 359

10.11 枚举常量 362

自测练习 363

练习 366

第11章 C文件处理 370

11.1 简介 370

11.2 数据层次结构 370

11.3 文件和流 372

11.4 创建顺序存取文件 373

11.5 从顺序存取文件中读取数据 377

11.6 随机存取文件 382

11.7 创建随机存取文件 383

11.8 随机向随机存取文件中写入数据 385

11.9 随机从随机存取文件中读取数据 387

11.10 案例研究:事务处理程序 389

自测练习 394

练习 396

第12章 C数据结构 401

12.1 简介 401

12.2 自引用结构 402

12.3 动态内存分配 402

12.4 链表 403

12.5 堆栈 412

12.6 队列 417

12.7 树 424

自测练习 429

练习 432

第13章 C预处理器 452

13.1 简介 452

13.2 #include预处理器伪指令 452

13.3 #define预处理器伪指令:符号常量 453

13.4 #define预处理器伪指令:宏 453

13.5 条件编译 455

13.6 #error和#pragma预处理器伪指令 456

13.7 #和##运算符 456

13.8 行号 457

13.9 预定义符号常量 457

13.10 断言 458

自测练习 458

练习 460

第14章 C语言高级技术 461

14.1 简介 461

14.2 在UNIX和DOS系统上重定向

输入/输出 461

14.3 变长参数列表 462

14.4 使用命令行参数 464

14.5 编译多个源文件程序的注释 465

14.6 使用exit和atexit终止程序 467

14.7 volatile类型限定符 469

14.8 整数和浮点常量的前缀 469

14.9 其他文件问题 469

14.10 信号处理 471

14.11 动态内存分配:函数calloc和

realloc 474

14.12 无条件分支:goto 474

自测练习 476

练习 476

第2部分 C++编程

第15章 C的增强版本C++ 479

15.1 简介 479

15.2 C++ 479

15.3 简单的程序:两个整数相加 480

15.4 C++标准库 483

15.5 头文件 483

15.6 嵌入函数 485

15.7 引用和引用参数 487

15.8 默认参数和空参数列表 491

15.9 一元作用域解析运算符 493

15.10 函数重载 495

15.11 函数模板 497

自测练习 499

练习 500

第16章 C++类和数据抽象 502

16.1 简介 502

16.2 用类实现时间抽象数据类型 503

16.3 类作用域和访问类成员 509

16.4 从实现中分离接口 511

16.5 控制访问成员 515

16.6 访问函数和实用函数 517

16.7 初始化类对象:构造函数 520

16.8 通过构造函数使用默认参数 521

16.9 使用析构函数 525

16.10 何时调用构造函数和析构函数 526

16.11 使用数据成员和成员函数 529

16.12 微妙的陷阱:返回private数据

成员的引用 534

16.13 使用默认的按成员复制来赋值 536

16.14 软件重用性 538

自测练习 538

练习 539

第17章 C++类:第二部分 542

17.1 简介 542

17.2 const(常量)对象和const成员函数 542

17.3 复合:作为类成员的对象 551

17.4 friend函数和friend类 556

17.5 使用this指针 560

17.6 使用运算符new和delete动态

分配内存 565

17.7 static类成员 566

17.8 数据抽象和信息隐藏 572

17.8.1 示例:数组抽象数据类型 573

17.8.2 示例:字符串抽象数据类型 574

17.8.3 示例:队列抽象数据类型 574

17.9 容器类和迭代器 575

自测练习 575

练习 576

第18章 C++运算符重载 578

18.1 简介 578

18.2 运算符重载的基础知识 579

18.3 运算符重载的限制 580

18.4 作为类成员和友元函数的运算符函数 581

18.5 重载流插入和流提取运算符 582

18.6 重载一元运算符 585

18.7 重载二元运算符 586

18.8 案例研究:数组类 587

18.9 类型转换 600

18.10 重载++和 601

自测练习 602

练习 603

第19章 C++继承 607

19.1 简介 607

19.2 继承:基类和派生类 608

19.3 Protected 成员 610

19.4 基类指针转换为派生类指针 611

19.5 使用成员函数 616

19.6 在派生类中覆盖基类成员 617

19.7 公共、受保护和私有继承 621

19.8 直接基类和间接基类 622

19.9 在派生类中使用构造函数和析构

函数 622

19.10 隐含派生类对象到基类对象的

转换 626

19.11 使用继承的软件工程 627

19.12 复合与继承 628

19.13 “使用一个”和“了解一个”

的关系 628

19.14 案例研究:点、圆和圆柱 629

自测练习 637

练习 637

第20章 C++虚拟函数和多态性 639

20.1 简介 639

20.2 类型字段和switch语句 639

20.3 虚拟函数 640

20.4 抽象基类和具体类 640

20.5 多态性 641

20.6 新类和动态绑定 643

20.7 虚拟析构函数 643

20.8 案例研究:继承接口和实现 644

20.9 多态性、虚拟函数和动态绑定内幕 652

自测练习 655

练习 655

第21章 C++流输入/输出 657

21.1 简介 657

21.2 流 658

21.2.1 iostream库头文件 658

21.2.2 流输出/输入类和对象 658

21.3 流输出 660

21.3.1 流插入运算符 660

21.3.2 级联流插入/提取运算符 662

21.3.3 char *变量的输出 663

21.3.4 用成员函数put输出字符:

级联多个put 664

21.4 流输入 664

21.4.1 流提取运算符 664

21.4.2 get和getline成员函数 667

21.4.3 istream成员函数peek、

putback和ignore 670

21.4.4 类型安全的输入/输出 670

21.5 用read、gcount和write的非格式

化输入/输出 670

21.6 流操纵符 671

21.6.1 整数流基数:dec、oct、hex

和setbase 672

21.6.2 浮点精度(precision,

setprecision) 673

21.6.3 字段宽度(setw, width) 674

21.6.4 用户定义操纵符 676

21.7 流格式状态 677

21.7.1 格式状态标记 677

21.7.2 尾部0和小数点

(ios::showpoint) 678

21.7.3 对齐(ios::left,ios::right,

ios::internal) 679

21.7.4 填充(fill, setfill) 681

21.7.5 整数流基数(ios::dec,ios::oct,

ios::hex,ios::showbase) 682

21.7.6 浮点数:科学记数法

(ios::scientific, ios::fixed) 683

21.7.7 大写/小写控制

(ios::uppercase) 684

21.7.8 设置和重新设置状态标记

(flags, setiosflags,

resetiosflags) 685

21.8 流错误状态 687

21.9 将输出流转移到输入流 689

自测练习 689

练习 694

第22章 C++模板 697

22.1 简介 697

22.2 类模板 697

22.3 类模板与非类型参数 703

22.4 模板与继承 704

22.5 模板与友元 704

22.6 模板与static成员 706

自测练习 706

练习 707

第23章 C++异常处理 708

23.1 简介 708

23.2 何时使用异常处理 710

23.3 其他错误处理技术 710

23.4 C++异常处理基础知识:

try、throw、catch 711

23.5 异常处理的简单例子:零除 712

23.6 引发异常 714

23.7 捕获异常 715

23.8 重新引发异常 718

23.9 异常规约 720

23.10 处理无法预料的异常 720

23.11 堆栈展开 721

23.12 构造函数、析构函数与异常处理 722

23.13 异常与继承 723

23.14 处理new错误 723

23.15 auto_ptr类与动态内存分配 727

23.16 标准库异常层次 729

自测练习 730

练习 731

第3部分 Java编程

第24章 Java应用程序与小程序入门 733

24.1 简介 733

24.2 典型的Java环境基础 734

24.3 Java和本书的总说明 737

24.4 简单的程序:打印文本行 738

24.5 另一个Java应用程序:整数相加 745

24.6 Java 2 SDK的小程序示例 751

24.6.1 TicTacToe小程序 751

24.6.2 DrawTest小程序 754

24.6.3 Java2D小程序 755

24.7 一个简单的Java小程序:绘制

字符串 756

24.8 另外两个示例:绘制字符串与线 762

24.9 另一个Java小程序:整数相加 764

自测练习题 771

练习 773

第25章 独特的Java运算符、

方法与数组 775

25.1 简介 775

25.2 基本数据类型与关键字 775

25.3 逻辑运算符 777

25.4 方法定义 782

25.5 Java API 包 787

25.6 随机数生成 791

25.7 示例:运气游戏 794

25.8 JApplet类的方法 802

25.9 数组的声明与分配 804

25.10 数组应用示例 804

25.11 引用和引用参数 815

25.12 多维数组 815

自测练习 819

练习 821

第26章 基于对象的Java编程 826

26.1 简介 826

26.2 用类实现时间抽象数据类型 827

26.3 类的作用域 834

26.4 创建包 835

26.5 类对象的初始化:构造函数 839

26.6 使用Set和Get方法 840

26.7 使用this引用 847

26.8 结束函数 850

26.9 静态类成员 850

自测练习 854

练习 855

第27章 面向对象的Java编程 859

27.1 简介 859

27.2 超类和子类 861

27.3 protected成员 863

27.4 超类对象和子类对象的关系 863

27.5 子类对象向超类对象的隐式转换 870

27.6 具有继承的软件工程 871

27.7 复合与继承的比较 872

27.8 多态简介 872

27.9 类型字段和switch语句 872

27.10 动态方法绑定 873

27.11 final方法和类 873

27.12 抽象超类和具体类 874

27.13 多态示例 875

27.14 新类和动态绑定 876

27.15 案例研究:继承接口和实现 877

27.16 案例研究:创建和使用接口 883

27.17 内部类定义 889

27.18 内部类定义的说明 900

27.19 基本类型的类型包装类 900

自测练习 901

练习 901

第28章 Java图形和Java2D 904

28.1 简介 904

28.2 图形环境和图形对象 906

28.3 颜色控制 907

28.4 字体控制 914

28.5 绘制直线、矩形和椭圆 920

28.6 绘制弧 923

28.7 绘制多边形和折线 926

28.8 Java2D API 929

28.9 Java2D形状 929

自测练习 937

练习 938

第29章 Java GUI组件 941

29.1 简介 941

29.2 Swing概述 942

29.3 JLabel 944

29.4 事件处理模型 948

29.5 JTextField和JPasswordField 950

29.6 JTextArea 956

29.7 JButton 959

29.8 JCheckBox 963

29.9 JComboBox 966

29.10 鼠标事件处理 969

29.11 布局管理器 974

29.11.1 FlowLayout 974

29.11.2 BorderLayout 977

29.11.3 GridLayout 980

29.12 面板 983

29.13 创建自包含的Jpanel子类 984

29.14 窗口 990

29.15 使用有边框的菜单 992

自测练习 999

练习 1001

第30章 Java多媒体:图像、

动画及音频 1004

30.1 简介 1004

30.2 加载、显示和缩放图像 1005

30.3 加载和播放音频剪辑 1008

30.4 使一系列图像动起来 1011

30.5 动画问题 1016

30.6 通过param HTML标记自定义

小程序 1017

30.7 图像映射 1022

30.8 Java插件 1025

30.9 Internet和万维网资源 1027

自测练习 1027

练习 1028

第4部分 附 录

附录A Internet与Web资源 1031

A.1 C/C++资源 1031

A.2 C++教程 1033

A.3 C/C++ FAQ 1034

A.4 Visual C++ 1034

A.5 comp.lang.c++ 1035

A.6 C/C++编译程序 1037

A.7 C++开发工具 1039

A.8 Java资源 1039

A.9 Java产品 1041

A.10 Java FAQ 1042

A.11 Java教程 1042

A.12 Java期刊 1043

A.13 Java 小程序 1043

A.14 多媒体 1044

A.15 Java 新闻组 1045

附录B C99 Internet与Web资源 1047

附录C 运算符优先级 1050

附录D ASCII字符集 1055

附录E 数制系统 1056

E.1 简介 1056

E.2 将二进制数缩写为八进制和

十六进制数 1059

E.3 将八进制数和十六进制数

转换成二进制数 1060

E.4 从二进制、八进制、十六进制

转换成十进制 1060

E.5 从十进制转换为八进制、十六进制

或二进制 1061

E.6 负二进制数:补码记数法 1063

自测练习 1064

练习 1066