图书介绍

C语言大学教程 第8版PDF|Epub|txt|kindle电子书版本网盘下载

C语言大学教程 第8版
  • (美)保罗·戴特尔(PaulDeitel),哈维·戴特尔(HarveyDeitel)著;苏小红,王甜甜,李佩琦等译 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121316814
  • 出版时间:2017
  • 标注页数:735页
  • 文件大小:133MB
  • 文件页数:764页
  • 主题词:C语言-程序设计-高等学校-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C语言大学教程 第8版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

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

1.1 引言2

1.2 计算机硬件和软件2

1.2.1 摩尔定律2

1.2.2 计算机组成3

1.3 数据的层次结构3

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

1.5 C程序设计语言6

1.6 C标准库7

1.7 C++和其他基于C的程序设计语言8

1.8 对象技术8

1.8.1 对象——以汽车为例9

1.8.2 方法与类9

1.8.3 实例化9

1.8.4 软件重用9

1.8.5 消息与方法调用9

1.8.6 属性与实例变量9

1.8.7 封装与信息隐藏10

1.8.8 继承10

1.9 典型的C程序开发环境10

1.9.1 第1步:创建一个C程序11

1.9.2 第2步和第3步:预处理及编译一个C程序11

1.9.3 第4步:链接11

1.9.4 第5步:装载11

1.9.5 第6步:执行12

1.9.6 程序运行时可能会出现的问题12

1.9.7 标准输入、标准输出和标准错误流12

1.10 在Windows、Linux和Mac OS X上测试并运行一个C应用程序12

1.10.1 在Windows命令提示符下运行一个C应用程序13

1.10.2 使用Linux中的GNU C来运行一个C应用程序15

1.10.3 使用Mac OS X终端来运行一个C应用程序17

1.11 操作系统19

1.11.1 Windows——一个专有的操作系统19

1.11.2 Linux——一个开源的操作系统19

1.11.3 苹果公司的Mac OS X;面向iPhone、iPad和iPod Touch的iOS操作系统20

1.11.4 谷歌公司的Android操作系统20

1.12 因特网和万维网20

1.12.1 因特网:计算机网络的网络21

1.12.2 万维网:让因特网对用户更友好21

1.12.3 万维网服务21

1.12.4 Ajax23

1.12.5 物联网23

1.13 一些重要的软件技术23

1.14 跟上信息技术的发展24

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

2.1 引言28

2.2 一个简单的C程序:打印一行文字28

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

2.4 存储单元的基本概念35

2.5 C语言中的算术运算35

2.6 做出决策:相等和关系运算符38

2.7 安全的C程序设计41

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

3.1 引言51

3.2 算法51

3.3 伪代码52

3.4 控制结构52

3.5 if条件语句54

3.6 if...else条件语句54

3.7 while循环语句57

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

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

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

3.11 赋值运算符67

3.12 增1和减1运算符68

3.13 安全的C程序设计70

第4章 C程序控制84

4.1 引言84

4.2 循环的基本原理84

4.3 计数控制的循环85

4.4 for循环语句86

4.5 for语句:注意事项88

4.6 使用for语句的例子89

4.7 switch多重选择语句91

4.8 do...while循环语句96

4.9 break和continue语句97

4.10 逻辑运算符98

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

4.12 结构化程序设计小结101

4.13 安全的C程序设计105

第5章 C函数117

5.1 引言117

5.2 C语言中的程序模块117

5.3 数学库函数118

5.4 函数119

5.5 函数定义120

5.5.1 square函数120

5.5.2 maximum函数123

5.6 函数原型:一个深入的剖析123

5.7 函数调用堆栈及活动记录堆栈帧125

5.8 头文件128

5.9 按值或按引用传递参数129

5.10 随机数的生成129

5.11 案例分析:运气游戏;引入enum133

5.12 存储类型135

5.13 作用域的规定137

5.14 递归139

5.15 递归应用案例:斐波那契数列142

5.16 递归与迭代144

5.17 安全的C程序设计146

第6章 C数组161

6.1 引言162

6.2 数组162

6.3 数组定义163

6.4 数组实例163

6.4.1 定义一个数组并用循环结构来设置数组元素值163

6.4.2 在定义语句中用一个初始值列表来初始化一个数组164

6.4.3 用符号常量来定义数组的大小并通过计算来初始化数组元素165

6.4.4 数组元素值求和166

6.4.5 用数组来统计民意调查的结果166

6.4.6 用直方图来展示数组元素值168

6.4.7 用数组来统计投掷骰子60000000次的结果169

6.5 用字符数组来存储和处理字符串170

6.5.1 定义一个字符串来初始化一个字符数组170

6.5.2 用一个字符初始化列表来初始化一个字符数组170

6.5.3 访问一个字符串中的字符170

6.5.4 针对一个字符数组的输入170

6.5.5 将一个代表字符串的字符数组输出171

6.5.6 字符数组的演示171

6.6 静态局部数组和自动局部数组171

6.7 将数组传递给函数173

6.8 数组排序176

6.9 案例分析:用数组来计算平均值、中值和众数178

6.10 数组查找181

6.10.1 线性查找数组元素181

6.10.2 折半查找数组元素182

6.11 多下标数组185

6.11.1 双下标数组概述185

6.11.2 双下标数组的初始化186

6.11.3 设置某行元素的元素值187

6.11.4 计算双下标数组中所有元素值的总和187

6.11.5 对双下标数组的处理188

6.12 可变长数组190

6.13 安全的C程序设计192

第7章 C指针207

7.1 引言207

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

7.3 指针运算符208

7.4 按引用向函数传递实参210

7.5 对指针使用const限定符213

7.5.1 用指向可变数据的可变指针将字符串中的字符改成大写214

7.5.2 用指向常量数据的可变指针逐个打印字符串中的字符215

7.5.3 试图修改指向可变数据的常量指针217

7.5.4 试图修改指向常量数据的常量指针217

7.6 采用按引用传递的冒泡排序218

7.7 sizeof运算符220

7.8 指针表达式和指针算术运算222

7.8.1 指针算术运算中可使用的运算符222

7.8.2 将指针对准一个数组222

7.8.3 给指针加上一个整数222

7.8.4 给指针减去一个整数223

7.8.5 指针增1或减1223

7.8.6 从一个指针中减去另一个指针223

7.8.7 将一个指针赋予另一个指针223

7.8.8 指向void的指针224

7.8.9 指针的比较224

7.9 指针和数组的关系224

7.9.1 指针/偏移量表示法224

7.9.2 指针/下标表示法225

7.9.3 不能用指针算术运算来修改数组名225

7.9.4 指针下标和指针偏移量的使用演示225

7.9.5 用数组和指针实现字符串的复制226

7.10 指针数组227

7.11 案例研究:模拟扑克牌的洗牌和发牌228

7.12 指向函数的指针232

7.12.1 按升序或降序进行排序232

7.12.2 使用函数指针来创建一个菜单驱动的系统234

7.13 安全的C程序设计236

第8章 C字符和字符串252

8.1 引言252

8.2 字符串和字符基础253

8.3 字符处理函数库254

8.3.1 函数isdigit,isalpha,isalnum和isxdigit255

8.3.2 函数islower,isupper,tolower和toupper256

8.3.3 函数isspace,iscntrl,ispunct,isprint和isgraph257

8.4 字符串转换函数258

8.4.1 函数strtod258

8.4.2 函数strtol259

8.4.3 函数strtoul260

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

8.5.1 函数fgets和putchar261

8.5.2 函数getchar261

8.5.3 函数sprintf262

8.5.4 函数sscanf263

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

8.6.1 函数strcpy和strncpy264

8.6.2 函数strcat和strncat264

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

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

8.8.1 函数strchr267

8.8.2 函数strcspn268

8.8.3 函数strpbrk268

8.8.4 函数strrchr268

8.8.5 函数strspn269

8.8.6 函数strstr269

8.8.7 函数strtok270

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

8.9.1 函数memcpy271

8.9.2 函数memmove272

8.9.3 函数memcmp272

8.9.4 函数memchr273

8.9.5 函数memset273

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

8.10.1 函数strerror274

8.10.2 函数strlen274

8.11 安全的C程序设计275

第9章 C格式化输入/输出285

9.1 引言285

9.2 流286

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

9.4 打印整数286

9.5 打印浮点数287

9.5.1 转换说明符e,E或f288

9.5.2 转换说明符g或G288

9.5.3 浮点数转换说明符的使用演示288

9.6 打印字符串或字符289

9.7 其他的转换说明符289

9.8 带域宽和精度的打印290

9.8.1 在打印整数时指定域宽290

9.8.2 在打印整数、浮点数和字符串时指定精度291

9.8.3 同时指定域宽和精度292

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

9.9.1 右对齐和左对齐292

9.9.2 用与不用+标记来打印正数和负数293

9.9.3 使用空格标记293

9.9.4 使用#标记293

9.9.5 使用0标记294

9.10 打印文本和转义序列294

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

9.11.1 scanf的语法295

9.11.2 scanf的转换说明符295

9.11.3 用scanf来读入整数295

9.11.4 用scanf来读入浮点数296

9.11.5 用scanf来读入字符和字符串296

9.11.6 在scanf中使用扫描集297

9.11.7 在scanf中指定域宽298

9.11.8 在输入流中忽略掉特定字符298

9.12 安全的C程序设计299

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

10.1 引言306

10.2 结构体的定义306

10.2.1 自引用结构体306

10.2.2 定义结构体类型的变量307

10.2.3 结构体标记名307

10.2.4 可对结构体实施的操作307

10.3 结构体的初始化308

10.4 用.和->访问结构体成员308

10.5 在函数中使用结构体310

10.6 typedef的使用310

10.7 实例分析:高性能的洗牌与发牌模拟311

10.8 共用体313

10.8.1 声明一个共用体313

10.8.2 可对共用体执行的操作313

10.8.3 在声明语句中对共用体进行初始化313

10.8.4 使用共用体的演示314

10.9 位运算符315

10.9.1 按位显示一个无符号整数315

10.9.2 使函数displayBits更具可扩展性和可移植性316

10.9.3 按位与、按位或、按位异或和按位取反运算符的使用317

10.9.4 按位左移和按位右移运算符的使用319

10.9.5 按位运算后赋值运算符320

10.10 位域321

10.10.1 位域的定义321

10.10.2 用位域来表示一张纸牌的花色、牌面值和颜色321

10.10.3 无名位域323

10.11 枚举常量323

10.12 匿名的结构体和共用体324

10.13 安全的C程序设计325

第11章 文件处理334

11.1 引言334

11.2 文件与流334

11.3 顺序存取文件的创建335

11.3.1 指向FILE结构体类型的指针336

11.3.2 用函数fopen打开文件336

11.3.3 用函数feof来检查文件结束标记337

11.3.4 用函数fprintf向文件写入数据337

11.3.5 用函数fclose来关闭文件337

11.3.6 文件打开模式338

11.4 从顺序存取文件中读取数据339

11.4.1 文件位置指针的复位340

11.4.2 信用查询程序340

11.5 随机存取文件343

11.6 随机存取文件的创建343

11.7 随机地向一个随机存取文件中写入数据345

11.7.1 用函数fseek来定位文件位置指针346

11.7.2 出错检查347

11.8 从一个随机存取文件中读取数据347

11.9 案例研究:事务处理程序348

11.10 安全的C程序设计352

第12章 C数据结构361

12.1 引言361

12.2 自引用结构体362

12.3 动态内存分配362

12.4 链表363

12.4.1 insert函数367

12.4.2 delete函数368

12.4.3 printList函数369

12.5 堆栈370

12.5.1 push函数372

12.5.2 pop函数373

12.5.3 堆栈的应用373

12.6 队列374

12.6.1 enqueue函数377

12.6.2 dequeue函数378

12.7 树378

12.7.1 insertNode函数381

12.7.2 遍历函数inOrder,preOrder和postOrder381

12.7.3 消除冗余382

12.7.4 二元树搜索382

12.7.5 二元树的其他操作382

12.8 安全的C程序设计382

第13章 C预处理392

13.1 引言392

13.2 #include预处理命令393

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

13.4 #define预处理命令:宏394

13.4.1 带一个参数的宏394

13.4.2 带两个参数的宏395

13.4.3 宏连续符395

13.4.4 #undef预处理命令395

13.4.5 标准库函数和宏395

13.4.6 不要把带有副作用的表达式放在宏中395

13.5 条件编译395

13.5.1 # if...# endif预处理命令395

13.5.2 用# if...# endif将代码块注释起来396

13.5.3 对调试代码的条件编译396

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

13.7 #和##运算符397

13.8 行号397

13.9 预定义的符号常量397

13.10 断言398

13.11 安全的C程序设计398

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

14.1 引言402

14.2 I/O的重定向402

14.2.1 用<来重定向输入403

14.2.2 用|来重定向输入403

14.2.3 重定向输出403

14.3 可变长的参数列表403

14.4 使用命令行实参405

14.5 编译由多个源文件组成的程序406

14.5.1 在别的文件中对全局变量进行extern声明406

14.5.2 函数原型406

14.5.3 用static来限制作用域407

14.5.4 Makefile407

14.6 使用exit和atexit终止程序407

14.7 整型和浮点型常量的后缀408

14.8 信号处理409

14.9 动态内存分配:函数calloc和realloc410

14.10 用goto实现无条件转移411

第15章 C++,一个更好的C:介绍对象技术416

15.1 引言417

15.2 C++417

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

15.3.1 用C++编写加法程序417

15.3.2 <iostream>头文件418

15.3.3 main函数418

15.3.4 变量声明418

15.3.5 标准输出流和标准输入流对象418

15.3.6 std::endl流操纵符418

15.3.7 关于std::的说明419

15.3.8 级联的流输出419

15.3.9 main函数中的return语句不是必需的419

15.3.10 运算符重载419

15.4 C++标准库419

15.5 头文件420

15.6 内联函数421

15.7 C++关键字422

15.8 引用和引用形参423

15.8.1 引用形参423

15.8.2 按值和按引用传参423

15.8.3 函数体内引用作为别名425

15.8.4 从函数返回引用426

15.8.5 未初始化的引用的错误提示信息426

15.9 空形参列表426

15.10 默认实参426

15.11 一元作用域运算符428

15.12 函数重载429

15.13 函数模板431

15.13.1 定义一个函数模板431

15.13.2 使用函数模板431

15.14 对象技术与UML简介432

15.14.1 对象技术基本概念433

15.14.2 类、数据成员和成员函数434

15.14.3 面向对象分析与设计434

15.14.4 统一建模语言435

15.15 C++标准库类模板vector简介435

15.15.1 C风格的基于指针的数组435

15.15.2 使用类模板vector435

15.15.3 异常处理:处理下标越界439

15.16 本章小结439

第16章 类:对象和字符串简介444

16.1 引言444

16.2 定义一个具有成员函数的类444

16.3 定义一个有参成员函数446

16.4 数据成员,set成员函数与get成员函数449

16.5 用构造函数初始化对象453

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

16.7 将接口与实现分离458

16.8 用set函数验证数据462

16.9 本章小结465

第17章 类:深入剖析;抛出异常471

17.1 引言471

17.2 Time类的案例学习472

17.3 类域和访问类的成员477

17.4 访问函数和工具函数477

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

17.6 析构函数482

17.7 构造函数与析构函数的调用时间482

17.8 Time类的案例学习:隐蔽陷阱——返回private数据成员的引用或指针485

17.9 默认按成员赋值487

17.10 const对象和const成员函数488

17.11 组合:对象作为类的成员490

17.12 友元函数和友元类494

17.13 使用this指针495

17.14 static类成员499

17.15 本章小结503

第18章 运算符重载;string类511

18.1 引言511

18.2 使用标准库模板类string中的重载运算符512

18.3 运算符重载基础514

18.4 重载二元运算符515

18.5 重载流插入和流读取运算符516

18.6 重载一元运算符518

18.7 重载一元前置和后置++和--运算符519

18.8 案例学习:Date类520

18.9 动态内存管理523

18.10 案例学习:Array类525

18.10.1 使用Array类525

18.10.2 Array类定义528

18.11 作为类的成员和作为非成员函数的运算符函数的比较534

18.12 类型转换534

18.13 explicit构造函数和转换运算符535

18.14 重载函数调用运算符()537

18.15 本章小结537

第19章 面向对象编程:继承546

19.1 引言546

19.2 基类和派生类547

19.3 基类和派生类的关系548

19.3.1 创建并使用CommissionEmployee类549

19.3.2 不用继承创建BasePlusCommissionEmployee类552

19.3.3 创建CommissionEmployee-BasePlusCommissionEmployee继承层次结构556

19.3.4 使用protected数据的CommissionEmployee-BasePlusCommission-Employee继承层次结构559

19.3.5 使用private数据的CommissionEmployee-BasePlusCommission Employee继承层次结构561

19.4 派生类的构造函数与析构函数565

19.5 public,protected和private继承566

19.6 关于继承的软件工程567

19.7 本章小结567

第20章 面向对象编程:多态571

20.1 引言571

20.2 多态简介:多态的视频游戏572

20.3 继承层次结构中对象间的关系572

20.3.1 派生类对象调用基类的函数573

20.3.2 派生类指针指向基类对象575

20.3.3 用基类指针调用派生类成员函数576

20.3.4 虚函数和虚析构函数577

20.4 类型域和switch语句582

20.5 抽象类和纯虚函数582

20.6 案例学习:利用多态的工资系统583

20.6.1 创建抽象基类Employee584

20.6.2 创建具体的派生类SalariedEmployee587

20.6.3 创建具体的派生类CommissionEmployee588

20.6.4 创建间接的具体派生类BasePlusCommissionEmployee590

20.6.5 演示多态处理591

20.7 (选讲)多态、虚函数以及动态联编的“幕后机制”594

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

20.9 本章小结599

第21章 输入/输出流:深入学习603

21.1 引言603

21.2 流604

21.2.1 传统流与标准流的比较604

21.2.2 iostream类库头文件605

21.2.3 输入/输出流类和对象605

21.3 输出流606

21.3.1 输出char*变量607

21.3.2 用成员函数put输出字符607

21.4 输入流607

21.4.1 成员函数get和getline608

21.4.2 istream类的成员函数peek,putback和ignore610

21.4.3 类型安全的I/O610

21.5 用read,write和gcount进行无格式I/O610

21.6 流操纵符简介611

21.6.1 设置整数流的基数:dec,oct,hex和setbase611

21.6.2 设置浮点数精度(precision,setprecision)612

21.6.3 设置域宽(width,setw)613

21.6.4 用户定义的输出流操纵符614

21.7 流格式状态和流操纵符614

21.7.1 设置尾数零和十进制小数点(showpoint)615

21.7.2 设置对齐(left,right和internal)616

21.7.3 设置填充字符(fill,setfill)616

21.7.4 设置整数流的基数(dec,oct,hex,showbase)617

21.7.5 设置浮点数;科学计数法和定点计数法(scientific、fixed)618

21.7.6 大/小写控制(uppercase)619

21.7.7 指定布尔格式(boolalpha)619

21.7.8 用成员函数flags设置和重置格式状态620

21.8 流错误状态621

21.9 将输出流绑定到输入流上622

21.10 本章小结622

第22章 异常处理:深入学习631

22.1 引言631

22.2 实例:处理除数为0的异常632

22.3 重新抛出异常635

22.4 栈展开637

22.5 何时使用异常处理638

22.6 构造函数、析构函数与异常处理638

22.7 异常与继承639

22.8 处理new故障639

22.9 unique_ptr类与动态内存分配641

22.10 标准库的异常层次结构643

22.11 本章小结645

第23章 模板649

23.1 引言649

23.2 类模板649

23.3 函数模操作类模板的特化对象653

23.4 非类型形参654

23.5 模板类型形参的默认实参654

23.6 重载函数模板654

23.7 本章小结655

附录A 运算符优先级表657

附录B ASCII字符集660

附录C 数值系统661

附录D 排序:一个深入的分析670

附录E 多线程及其他C11和C99专题684

索引704

热门推荐