《C大学教程 第5版》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)P.J.Deitel,H.M.Deitel著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121056628
  • 页数:874 页
图书介绍:本书主要介绍了过程式编程与面向对象编程的原理和方法,细致地分析了各种性能问题、移植性问题和可能出错的地方,介绍了如何提高软件工程质量,并提供了丰富的自测练习和项目练习。可以说本书是最好的学习C语言的教程之一,是学习C编程的“宝典”。本书可作为高等院校进行C语言教学的教材,也是软件设计人员进行C程序开发的宝贵参考资料。

第1章 计算机、Internet和万维网导论 1

1.1 引言 2

1.2 什么是计算机 3

1.3 计算机的基本组成 3

1.4 早期的操作系统 4

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

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

1.7 著名的高级语言FORTRAN,COBOL,Pascal和Ada 6

1.8 C语言的发展历史 7

1.9 C语言标准库 8

1.10 C++语言 8

1.11 Java语言 9

1.12 BASIC语言,Visual Basic语言,Visual C++语言,Visual C#语言和.NET编程平台 9

1.13 软件发展的重要趋势:对象技术 10

1.14 典型的C语言程序开发环境 11

1.15 硬件的发展趋势 13

1.16 Internet的发展历史 13

1.17 万维网(WWW)的发展历史 14

1.18 关于C语言和本书的一些注解 14

1.19 有价值的Web站点 15

第2章 C语言程序设计入门 26

2.1 引言 26

2.2 一个简单的C程序:输出一行文字 27

2.3 另一个简单的C程序:两个整数求和 30

2.4 存储单元的基本概念 34

2.5 C语言中的算术运算 34

2.6 做出判断:相等和关系运算符 37

第3章 结构化的C程序设计 50

3.1 引言 50

3.2 算法 51

3.3 伪码 51

3.4 控制结构 52

3.5 if选择语句 53

3.6 if...else选择语句 54

3.7 while循环语句 57

3.8 算法设计案例1:计数控制的循环 58

3.9 算法设计案例2:自顶向下、逐步求精的标记控制循环 60

3.10 算法设计案例3:自顶向下、逐步求精的嵌套控制结构 65

3.11 赋值运算符 69

3.12 增1和减1运算符 69

第4章 C程序控制 86

4.1 引言 86

4.2 循环的基本原理 87

4.3 计数控制的循环 87

4.4 for循环语句 89

4.5 for循环语句:注意事项 91

4.6 应用for循环语句的例子 92

4.7 switch多重选择语句 94

4.8 do...while循环语句 99

4.9 break和continue语句 100

4.10 逻辑运算符 102

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

4.12 结构化程序设计总结 105

第5章 C函数 120

5.1 引言 121

5.2 C语言中的程序模块 121

5.3 数学库函数 122

5.4 函数 123

5.5 函数定义 123

5.6 函数原型 127

5.7 函数调用栈及活动记录 129

5.8 头文件 129

5.9 主调函数:按值调用与按引用调用 130

5.10 随机数的生成 130

5.11 程序案例:运气游戏 134

5.12 存储类型 137

5.13 标识符作用域的规定 139

5.14 递归 142

5.15 使用递归的例子:Fibonacci数列 144

5.16 递归与迭代 147

第6章 C数组 165

6.1 引言 165

6.2 数组 166

6.3 数组的定义 167

6.4 数组的应用举例 167

6.5 将数组传递给函数的方法 178

6.6 数组元素的排序 182

6.7 案例分析:采用数组来计算平均值、中值和众数 184

6.8 数组元素的查找 187

6.9 多维数组 191

第7章 C指针 213

7.1 引言 213

7.2 指针变量的定义和初始化 214

7.3 指针运算符 214

7.4 使用按引用调用方法向函数传递实参 216

7.5 对指针使用const限定符 219

7.6 使用按引用调用方法实现冒泡法排序 224

7.7 sizeof运算符 227

7.8 指针表达式和指针运算 228

7.9 指针和数组之间的关系 230

7.10 指针数组 234

7.11 案例学习:扑克牌洗牌和发牌模拟 234

7.12 函数指针 238

第8章 C字符和字符串 258

8.1 引言 258

8.2 字符串和字符基础 259

8.3 字符处理函数库 260

8.4 字符串转换函数 264

8.5 标准输入输出库函数 268

8.6 字符串处理函数库中的字符串处理函数 271

8.7 字符串处理函数库中的比较函数 273

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

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

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

第9章 格式化输入输出 294

9.1 引言 294

9.2 流 295

9.3 用printf函数实现格式化输出 295

9.4 打印整数 295

9.5 打印浮点数 296

9.6 打印字符串或字符 298

9.7 其他的转换说明符 299

9.8 带域宽和精度的打印 300

9.9 在printf函数的格式控制字符串中使用标记 301

9.10 打印文本和转义序列 304

9.11 用scanf函数读取格式化的输入 304

第10章 结构体、共用体、位操作和枚举类型 316

10.1 引言 316

10.2 结构体的定义 317

10.3 结构体的初始化 319

10.4 对结构体成员的访问 319

10.5 在函数中使用结构体 321

10.6 typedef的使用 321

10.7 实例:高性能的洗牌与发牌模拟程序 322

10.8 共用体 324

10.9 位运算符 326

10.10 位域 332

10.11 枚举常量 335

第11章 文件处理 345

11.1 引言 345

11.2 数据的层次结构 346

11.3 文件与流 347

11.4 顺序存取文件的创建 348

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

11.6 随机存取文件 355

11.7 随机存取文件的创建 356

11.8 向一个随机存取文件中随机地写入数据 357

11.9 从一个随机存取文件中读取数据 360

11.10 案例学习:事务处理程序 361

第12章 数据结构 374

12.1 引言 374

12.2 自引用结构体 375

12.3 动态内存分配 376

12.4 链表 377

12.5 堆栈 384

12.6 队列 388

12.7 树 392

第13章 C预处理 418

13.1 引言 418

13.2 #include预处理命令 419

13.3 #define预处理命令:符号常量 419

13.4 #define预处理命令:宏 419

13.5 条件编译 421

13.6 #error和#pragma预处理命令 422

13.7 #和##运算符 422

13.8 行号 423

13.9 预定义的符号常量 423

13.10 断言 423

第14章 C语言的其他专题 428

14.1 引言 428

14.2 Linux/UNIX和Windows系统中输入/输出的重定向 429

14.3 可变长的实参列表 429

14.4 使用命令行实参 431

14.5 由多个源文件组成的程序的编译问题 432

14.6 使用exit和atexit终止程序 433

14.7 volatile类型限定符 434

14.8 整型和浮点型常量的后缀 434

14.9 关于文件的深入讨论 435

14.10 信号处理 436

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

14.12 用goto实现无条件转移 439

第15章 基于Allegro C函数库的游戏编程 444

15.1 引言 445

15.2 安装Allegro库 445

15.3 一个简单的Allegro库程序 445

15.4 简单的图形:位图的导入和块传送 446

15.5 双缓冲动画显示技术 450

15.6 导入和播放声音 455

15.7 键盘输入 457

15.8 字体和文本显示 461

15.9 实现Pong游戏 465

15.10 Allegro库的定时器 470

15.11 Allegro库的Grabber工具和数据文件 473

15.12 Allegro库的其他功能 480

15.13 Allegro库的网络资源 480

第16章 排序:更深入的透视 487

16.1 引言 487

16.2 大O记号 488

16.3 选择排序 488

16.4 插入排序 491

16.5 归并排序 493

第17章 C99简介 502

17.1 引言 503

17.2 对C99的支持 503

17.3 新的C99头文件 504

17.4 ∥单行注释符 504

17.5 声明语句和可执行代码的混合使用 504

17.6 在for语句头声明一个变量 505

17.7 指派初始化和复合文本 506

17.8 布尔类型 508

17.9 函数声明中的隐式int类型 509

17.10 复数 510

17.11 可变长数组 511

17.12 C99其他的特征 512

17.13 因特网和万维网上的资源 515

第18章 C++,一个更好的C;介绍对象技术 519

18.1 简介 520

18.2 C++ 520

18.3 简单程序:两个整数相加 520

18.4 C++标准库 522

18.5 头文件 522

18.6 内联函数 523

18.7 引用和引用形参 525

18.8 空形参列表 528

18.9 默认实参 529

18.10 一元作用域运算符 530

18.11 函数重载 531

18.12 函数模板 533

18.13 对象技术与UML简介 535

18.14 本章小结 539

第19章 类与对象简介 544

19.1 简介 544

19.2 类、对象、成员函数以及数据成员 545

19.3 本章实例概述 545

19.4 定义一个具有成员函数的类 546

19.5 定义一个有参成员函数 548

19.6 数据成员、set函数与get函数 551

19.7 用构造函数初始化对象 556

19.8 将类放在单独的文件中以增强重用性 558

19.9 将接口与实现分离 561

19.10 用set函数验证数据 565

19.11 本章小结 569

第20章 类:深入剖析(第1部分) 574

20.1 简介 574

20.2 Time类的案例学习 575

20.3 类域和访问类的成员 580

20.4 将接口与实现分离 581

20.5 访问函数和工具函数 581

20.6 Time类的案例学习:具有默认实参的构造函数 584

20.7 析构函数 587

20.8 构造函数与析构函数的调用时间 588

20.9 Time类的案例学习:隐蔽陷阱——返回private数据成员的引用 590

20.10 默认按成员赋值 592

20.11 软件重用性 594

20.12 本章小结 594

第21章 类:深入剖析(第2部分) 599

21.1 简介 600

21.2 const对象和const成员函数 600

21.3 组合:对象作为类的成员 607

21.4 友元函数和友元类 612

21.5 使用this指针 614

21.6 用new和delete运算符进行动态内存管理 618

21.7 static类成员 620

21.8 数据抽象和信息隐藏 624

21.9 容器类和迭代器 626

21.10 代理类 626

21.11 本章小结 628

第22章 运算符重载 633

22.1 简介 633

22.2 运算符重载基础 634

22.3 运算符重载的限制 635

22.4 作为类的成员和作为全局函数的运算符函数的比较 636

22.5 重载流插入和流读取运算符 637

22.6 重载一元运算符 640

22.7 重载二元运算符 640

22.8 案例学习:Array类 640

22.9 类型转换 649

22.10 重载++和-- 650

22.11 explicit构造函数 651

22.12 本章小结 653

第23章 面向对象编程:继承 663

23.1 简介 664

23.2 基类和派生类 664

23.3 protected成员 666

23.4 基类和派生类的关系 667

23.5 派生类的构造函数与析构函数 689

23.6 public,protected和private继承 695

23.7 关于继承的软件工程 696

23.8 本章小结 696

第24章 面向对象编程:多态 701

24.1 简介 702

24.2 多态的实例 703

24.3 继承层次结构中对象间的关系 703

24.4 类型域和switch语句 716

24.5 抽象类和纯虚函数 716

24.6 案例学习:利用多态的工资系统 718

24.7 (选修)多态、虚函数以及动态绑定 730

24.8 案例学习:利用多态的和运行时类型信息的工资系统,通过向下类型转换,dynamic_cast,typeid以及type_info使用运行时类型信息 733

24.9 虚析构函数 736

24.10 本章小结 736

第25章 模板 740

25.1 简介 740

25.2 函数模板 741

25.3 重载函数模板 743

25.4 类模板 744

25.5 类模板的非类型形参和默认类型 748

25.6 模板与继承 749

25.7 模板与友元 749

25.8 模板与static成员 750

25.9 本章小结 750

第26章 输入/输出流 755

26.1 简介 756

26.2 流 756

26.3 输出流 759

26.4 输入流 760

26.5 用read,write和gcount进行无格式I/O 763

26.6 流操纵符简介 764

26.7 流格式状态和流操纵符 768

26.8 流错误状态 775

26.9 将输出流绑定到输入流上 777

26.10 本章小结 777

第27章 异常处理 786

27.1 简介 787

27.2 异常处理概述 787

27.3 实例:处理除数为0的异常 788

27.4 何时使用异常处理 792

27.5 重新抛出异常 793

27.6 异常规范 794

27.7 处理未预料的异常 794

27.8 栈展开 795

27.9 构造函数、析构函数与异常处理 796

27.10 异常与继承 796

27.11 处理new故障 797

27.12 auto_ptr类与动态内存分配 800

27.13 标准库的异常层次结构 801

27.14 其他错误处理技术 802

27.15 本章小结 803

附录A 因特网和Web资源 809

附录B 运算符优先级表 822

附录C ASCII字符集 825

附录D 数制系统 826

附录E 游戏编程:求解Sudoku问题 836

索引 843