c语言教程第四版徐波译,C语言教程(原书第4版)

《C语言教程(原书第4版)》

前言

第0章 从零开始1

0.1 为什么要用C1

0.2 ANSI C标准2

0.3 从C到C++3

0.4 从C和C++到Java3

第1章 C语言概述4

1.1 编程和预备知识4

1.2 程序输出4

1.3 变量、表达式和赋值7

1.4 使用#define和#include9

1.5 使用printf()和scanf()12

1.6 控制流14

1.7 函数19

1.8 数组、字符串和指针24

1.8.1 数组24

1.8.2 字符串25

1.8.3 指针28

1.9 文件31

1.10 与操作系统有关的内容35

1.10.1 编写和运行C程序35

1.10.2 中断程序36

1.10.3 输入文件尾标志37

1.10.4 输入和输出的重定向37

1.11 总结38

1.12 练习39

第2章 词法元素、操作符和C系统45

2.1 字符和词法元素46

2.2 语法规则48

2.3 注释49

2.4 关键字50

2.5 标识符50

2.6 常量51

2.7 字符串常量52

2.8 操作符和标点符号53

2.9 操作符的优先级和结合性53

2.10 增值操作符和减值操作符55

2.11 赋值操作符56

2.12 例子:计算2的乘方57

2.13 C系统58

2.13.1 预处理器59

2.13.2 标准函数库59

2.14 总结62

2.15 练习63

第3章 基本数据类型69

3.1 声明、表达式和赋值69

3.2 基本数据类型71

3.3 字符和char数据类型72

3.4 int数据类型75

3.5 整数类型short、long和unsigned76

3.6 浮点类型77

3.7 typedef的用法79

3.8 sizeof操作符79

3.9 使用getchar()和putchar()80

3.10 数学函数82

3.10.1 使用abs()和fabs()84

3.10.2 UNIX和数学函数库84

3.11 隐式类型转换和强制类型转换84

3.11.1 整型提升85

3.11.2 寻常算术转换85

3.11.3 强制类型转换86

3.12 十六进制和八进制常量87

3.13 总结89

3.14 练习89

第4章 控制流96

4.1 关系操作符、相等操作符和逻辑操作符96

4.2 关系操作符和表达式97

4.3 相等操作符和表达式99

4.4 逻辑操作符和表达式100

4.5 复合语句103

4.6 表达式和空语句103

4.7 if和if-else语句104

4.8 while语句106

4.9 for语句108

4.10 例子:布尔变量110

4.11 逗号操作符111

4.12 do语句112

4.13 例子:斐波那契数113

4.14 goto语句115

4.15 break和continue语句116

4.16 switch语句117

4.17 条件操作符118

4.18 总结119

4.19 练习120

第5章 函数128

5.1 函数定义128

5.2 return语句130

5.3 函数原型131

5.4 例子:创建乘方表132

5.5 从编译器的角度观察函数原型133

5.6 函数定义顺序的另一种风格134

5.7 函数调用和传值调用134

5.8 开发大型程序136

5.9 使用断言138

5.10 作用域规则139

5.10.1 平行和嵌套代码块140

5.10.2 以调试为目的使用代码块140

5.11 存储类型141

5.11.1 auto存储类型141

5.11.2 extern存储类型141

5.11.3 register存储类型143

5.11.4 static存储类型143

5.12 静态外部变量144

5.13 默认初始化145

5.14 递归145

5.15 例子:汉诺塔149

5.16 总结152

5.17 练习153

第6章 数组、指针和字符串159

6.1 一维数组159

6.1.1 初始化160

6.1.2 下标160

6.2 指针161

6.3 传引用调用164

6.4 数组和指针之间的关系165

6.5 指针运算和元素的大小166

6.6 数组作为函数的实参166

6.7 例子:冒泡排序167

6.8 用calloc()和malloc()进行动态内存分配168

6.9 例子:归并和归并排序171

6.10 字符串175

6.11 标准函数库中的字符串处理函数177

6.12 多维数组180

6.12.1 二维数组180

6.12.2 存储映射函数180

6.12.3 形式参数声明181

6.12.4 三维数组182

6.12.5 初始化182

6.12.6 使用typedef183

6.13 指针数组184

6.14 main()函数的参数188

6.15 不规则数组189

6.16 函数作为参数190

6.17 例子:使用二分法寻找函数的根192

6.18 函数指针数组196

6.19 类型限定符const和volatile199

6.20 总结200

6.21 练习202

第7章 位操作符和枚举类型214

7.1 位操作符和表达式214

7.1.1 按位求反215

7.1.2 补码215

7.1.3 位逻辑操作符216

7.1.4 左移位和右移位操作符217

7.2 掩码218

7.3 软件工具:打印int值的二进制形式219

7.4 包装和解包220

7.5 枚举类型223

7.6 例子:“石头、剪刀、布”游戏225

7.7 总结229

7.8 练习230

第8章 预处理器235

8.1 #include的使用235

8.2 使用#define236

8.3 带参数的宏237

8.4 stddef.h中的类型定义和宏239

8.5 例子:用qsort()进行排序239

8.6 例子:带参数的宏243

8.7 stdio.h和ctype.h中的宏246

8.8 条件编译247

8.9 预定义的宏249

8.10 “#”和“##”操作符249

8.11 assert()宏250

8.12 使用#error和#pragma250

8.13 行号251

8.14 对应的函数251

8.15 例子:快速排序251

8.16 总结254

8.17 练习254

第9章 结构和联合262

9.1 结构262

9.2 访问结构成员264

9.3 操作符的优先级和结合性的总结267

9.4 在函数中使用结构268

9.5 结构的初始化269

9.6 例子:玩扑克牌269

9.7 联合273

9.8 位字段275

9.9 例子:访问位和字节276

9.10 ADT堆栈277

9.11 总结280

9.12 练习281

第10章 结构和列表处理288

10.1 自引用的结构288

10.2 线性链表289

10.3 链表操作290

10.4 一些链表处理函数293

10.4.1 插入294

10.4.2 删除295

10.5 堆栈296

10.6 例子:波兰记法和堆栈求值298

10.7 队列303

10.8 二叉树306

10.8.1 二叉树的遍历307

10.8.2 创建树308

10.9 普通的树309

10.9.1 遍历311

10.9.2 calloc()的用法以及树的创建311

10.10 总结312

10.11 练习313

第11章 输入/输出和操作系统318

11.1 输出函数printf()318

11.2 输入函数scanf()321

11.3 fprintf()、fscanf()、sprintf()

和sscanf()函数324

11.4 fopen()和fclose()函数325

11.5 例子:对文件进行空间加倍327

11.6 使用临时文件和优雅函数329

11.7 随机访问文件331

11.8 文件描述符输入/输出332

11.9 文件访问权限333

11.10 在C程序内部执行命令334

11.11 在C程序内部使用管道335

11.12 环境变量336

11.13 C编译器337

11.14 使用性能评估程序338

11.15 函数库339

11.16 对C代码进行计时340

11.17 使用make343

11.18 使用touch347

11.19 其他有用的工具348

11.20 总结349

11.21 练习350

第12章 高级应用358

12.1 用fork()创建并发进程358

12.2 进程的叠加:exec...()函数族系360

12.3 使用pipe()实现进程间的通信362

12.4 信号363

12.5 例子:哲学家用餐问题365

12.6 矩阵的动态分配368

12.6.1 为什么二维数组无法满足要求368

12.6.2 用指针数组创建矩阵369

12.6.3 调整下标范围371

12.6.4 一次分配所有内存373

12.7 返回状态374

12.8 总结377

12.9 练习378

第13章 从C到C++383

13.1 输出383

13.2 输入384

13.3 函数386

13.4 类和抽象数据类型387

13.5 重载389

13.6 构造函数和析构函数390

13.7 面向对象编程和继承392

13.8 多态393

13.9 模板395

13.10 C++的异常396

13.11 面向对象编程的优点396

13.12 总结397

13.13 练习398

第14章 从C到Java402

14.1 输出402

14.2 变量和类型403

14.3 类和抽象数据类型404

14.4 重载406

14.5 类的创建和销毁406

14.6 面向对象编程和继承406

14.7 多态和重写方法407

14.8 Applet408

14.9 Java的异常409

14.10 Java和OOP的优势410

14.11 总结410

14.12 练习411

附录A 标准函数库413

附录B C的语法441

附录C ANSI C与传统C的比较446

附录D ASCII字符码452

附录E 操作符的优先级和结合性454

C语言教程原书第4) 《c语言教程原书第4)》是一本优秀的c程序设计语言教材,完整描述了ansi c语言及其语法特性,并对c语言的高级特性和应用作了深入阐述,介绍了从c到c++和java过渡的相关知识。《c语言教程原书第4)》的一个鲜明特色就是结合大量示例描述c语言的重要特征,并对很多工作代码给出了逐步的分析,以这种独特的教学方法向读者解释新接触的编程元素及一些惯用法。   《c语言教程原书第4)》系统、完整,可作为c语言的参考手册,也非常适合作为学习c语言的入门和高级课程教材。 前言 第0章 从零开始 0.1 为什么要用c 0.2 ansi c标准 0.3 从c到c++ 0.4 从c和c++到java 第1章 c语言概述 1.1 编程和预备知识 1.2 程序输出 1.3 变量、表达式和赋值 1.4 使用#define和#include 1.5 使用printf()和scanf() 1.6 控制流 1.7 函数 1.8 数组、字符串和指针 1.8.1 数组 1.8.2 字符串 1.8.3 指针 1.9 文件 1.10 与操作系统有关的内容 1.10.1 编写和运行c程序 1.10.2 中断程序 1.10.3 输入文件尾标志 1.10.4 输入和输出的重定向 1.11 总结 1.12 练习 第2章 词法元素、操作符和c系统 2.1 字符和词法元素 2.2 语法规则 2.3 注释 2.4 关键字 2.5 标识符 2.6 常量 2.7 字符串常量 2.8 操作符和标点符号 2.9 操作符的优先级和结合性 2.10 增值操作符和减值操作符 2.11 赋值操作符 2.12 例子:计算2的乘方 2.13 c系统 2.13.1 预处理器 2.13.2 标准函数库 2.14 总结 2.15 练习 第3章 基本数据类型 3.1 声明、表达式和赋值 3.2 基本数据类型 3.3 字符和char数据类型 3.4 int数据类型 3.5 整数类型short、long和unsigned 3.6 浮点类型 3.7 typedef的用法 3.8 sizeof操作符 3.9 使用getchar()和putchar() 3.10 数学函数 3.10.1 使用abs()和fabs() 3.10.2 unix和数学函数库 3.11 隐式类型转换和强制类型转换 3.11.1 整型提升 3.11.2 寻常算术转换 3.11.3 强制类型转换 3.12 十六进制和八进制常量 3.13 总结 3.14 练习 第4章 控制流 4.1 关系操作符、相等操作符和逻辑操作符 4.2 关系操作符和表达式 4.3 相等操作符和表达式 4.4 逻辑操作符和表达式 4.5 复合语句 4.6 表达式和空语句 4.7 if和if-else语句 4.8 while语句 4.9 for语句 4.10 例子:布尔变量 4.11 逗号操作符 4.12 do语句 4.13 例子:斐波那契数 4.14 goto语句 4.15 break和continue语句 4.16 switch语句 4.17 条件操作符 4.18 总结 4.19 练习 第5章 函数 5.1 函数定义 5.2 return语句 5.3 函数原型 5.4 例子:创建乘方表 5.5 从编译器的角度观察函数原型 5.6 函数定义顺序的另一种风格 5.7 函数调用和传值调用 5.8 开发大型程序 5.9 使用断言 5.10 作用域规则 5.10.1 平行和嵌套代码块 5.10.2 以调试为目的使用代码块 5.11 存储类型 5.11.1 auto存储类型 5.11.2 extern存储类型 5.11.3 register存储类型 5.11.4 static存储类型 5.12 静态外部变量 5.13 默认初始化 5.14 递归 5.15 例子:汉诺塔 5.16 总结 5.17 练习 第6章 数组、指针和字符串 6.1 一维数组 6.1.1 初始化 6.1.2 下标 6.2 指针 6.3 传引用调用 6.4 数组和指针之间的关系 6.5 指针运算和元素的大小 6.6 数组作为函数的实参 6.7 例子:冒泡排序 6.8 用calloc()和malloc()进行动态内存分配 6.9 例子:归并和归并排序 6.10 字符串 6.11 标准函数库中的字符串处理函数 6.12 多维数组 6.12.1 二维数组 6.12.2 存储映射函数 6.12.3 形式参数声明 6.12.4 三维数组 6.12.5 初始化 6.12.6 使用typedef 6.13 指针数组 6.14 main()函数的参数 6.15 不规则数组 6.16 函数作为参数 6.17 例子:使用二分法寻找函数的根 6.18 函数指针数组 6.19 类型限定符const和volatile 6.20 总结 6.21 练习 第7章 位操作符和枚举类型 7.1 位操作符和表达式 7.1.1 按位求反 7.1.2 补码 7.1.3 位逻辑操作符 7.1.4 左移位和右移位操作符 7.2 掩码 7.3 软件工具:打印int值的二进制形式 7.4 包装和解包 7.5 枚举类型 7.6 例子:“石头、剪刀、布”游戏 7.7 总结 7.8 练习 第8章 预处理器 8.1 #include的使用 8.2 使用#define 8.3 带参数的宏 8.4 stddef.h中的类型定义和宏 8.5 例子:用qsort()进行排序 8.6 例子:带参数的宏 8.7 stdio.h和ctype.h中的宏 8.8 条件编译 8.9 预定义的宏 8.10 “#”和“##”操作符 8.11 assert()宏 8.12 使用#error和#pragma 8.13 行号 8.14 对应的函数 8.15 例子:快速排序 8.16 总结 8.17 练习 第9章 结构和联合 9.1 结构 9.2 访问结构成员 9.3 操作符的优先级和结合性的总结 9.4 在函数中使用结构 9.5 结构的初始化 9.6 例子:玩扑克牌 9.7 联合 9.8 位字段 9.9 例子:访问位和字节 9.10 adt堆栈 9.11 总结 9.12 练习 第10章 结构和列表处理 10.1 自引用的结构 10.2 线性链表 10.3 链表操作 10.4 一些链表处理函数 10.4.1 插入 10.4.2 删除 10.5 堆栈 10.6 例子:波兰记法和堆栈求值 10.7 队列 10.8 二叉树 10.8.1 二叉树的遍历 10.8.2 创建树 10.9 普通的树 10.9.1 遍历 10.9.2 calloc()的用法以及树的创建 10.10 总结 10.11 练习 第11章 输入/输出和操作系统 11.1 输出函数printf() 11.2 输入函数scanf() 11.3 fprintf()、fscanf()、sprintf() 和sscanf()函数 11.4 fopen()和fclose()函数 11.5 例子:对文件进行空间加倍 11.6 使用临时文件和优雅函数 11.7 随机访问文件 11.8 文件描述符输入/输出 11.9 文件访问权限 11.10 在c程序内部执行命令 11.11 在c程序内部使用管道 11.12 环境变量 11.13 c编译器 11.14 使用性能评估程序 11.15 函数库 11.16 对c代码进行计时 11.17 使用make 11.18 使用touch 11.19 其他有用的工具 11.20 总结 11.21 练习 第12章 高级应用 12.1 用fork()创建并发进程 12.2 进程的叠加:exec...()函数族系 12.3 使用pipe()实现进程间的通信 12.4 信号 12.5 例子:哲学家用餐问题 12.6 矩阵的动态分配 12.6.1 为什么二维数组无法满足要求 12.6.2 用指针数组创建矩阵 12.6.3 调整下标范围 12.6.4 一次分配所有内存 12.7 返回状态 12.8 总结 12.9 练习 第13章 从c到c++ 13.1 输出 13.2 输入 13.3 函数 13.4 类和抽象数据类型 13.5 重载 13.6 构造函数和析构函数 13.7 面向对象编程和继承 13.8 多态 13.9 模板 13.10 c++的异常 13.11 面向对象编程的优点 13.12 总结 13.13 练习 第14章 从c到java 14.1 输出 14.2 变量和类型 14.3 类和抽象数据类型 14.4 重载 14.5 类的创建和销毁 14.6 面向对象编程和继承 14.7 多态和重写方法 14.8 applet 14.9 java的异常 14.10 java和oop的优势 14.11 总结 14.12 练习 附录a 标准函数库 附录b c的语法 附录c ansi c与传统c的比较 附录d ascii字符码 附录e 操作符的优先级和结合性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值