《C语言程序设计》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:黄维通,刘晓静,王瑞编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302237501
  • 页数:312 页
图书介绍:本书贯穿了“基础-应用-专题”这一主线,主要介绍了程序设计中的基本概念及应用,并适时因如函数的结构与应用、指针的概念及应用、算法设计与实现等。

第1章 C语言的基本概念 1

1.1 程序设计语言的历史和发展 1

1.2 程序设计过程中的几个基本概念 2

1.2.1 程序 2

1.2.2 程序设计 2

1.2.3 算法 3

1.2.4 数据结构 3

1.3 软件工程的概念 4

1.4 C语言的发展与特点 4

1.4.1 C语言的发展和ANSI C标准 4

1.4.2 C语言的特点 5

1.5 C语言程序的基本标识符 6

1.6 C程序的几个简单实例 7

1.7 C程序的结构特点 10

1.8 C语言程序的编译和执行 11

1.9 习题 12

第2章 C语言程序的基本数据类型及其运算 13

2.1 C语言的数据类型 13

2.1.1 数据类型的一般概念 13

2.1.2 常量 14

2.2 数据类型及变量 17

2.2.1 基本数据类型 17

2.2.2 变量及变量的定义 17

2.2.3 变量的初始化 18

2.2.4 数据类型转换 19

2.3 运算符和表达式 21

2.3.1 运算符和表达式概述 21

2.3.2 赋值运算符和赋值表达式 22

2.3.3 算术运算符和算术表达式 23

2.3.4 关系运算符和关系表达式 24

2.3.5 逻辑运算符和逻辑表达式 25

2.3.6 条件运算符 26

2.3.7 其他运算符 27

2.4 位运算符 28

2.4.1 按位取反运算符 28

2.4.2 移位运算符 28

2.4.3 按位“与”、按位“或”、按位“异或” 29

2.5 C语言基本输入输出函数 30

2.5.1 字符输入输出函数 31

2.5.2 格式化输入输出函数 32

2.6 习题 37

第3章 基本控制结构及其应用 39

3.1 算法及结构化程序设计 39

3.1.1 算法及其特征 39

3.1.2 算法的类型与结构 41

3.2 顺序结构程序设计 42

3.3 分支结构程序设计 43

3.3.1 if分支 43

3.3.2 if-else分支 43

3.3.3 多分支if-else if-else形式 44

3.3.4 条件分支的嵌套 45

3.3.5 开关分支 46

3.4 循环结构程序设计 50

3.4.1 while语句 50

3.4.2 do-while语句 50

3.4.3 for语句 51

3.4.4 三种循环的比较 52

3.4.5 多重循环 52

3.4.6 循环和开关分支的中途退出 53

3.4.7 goto语句 54

3.4.8 结构化程序设计的注意事项 55

3.5 结构化程序设计及应用举例 57

3.6 习题 58

第4章 数组及其应用 62

4.1 一维数组 62

4.1.1 一维数组的定义 62

4.1.2 一维数组的初始化 63

4.1.3 一维数组的引用 64

4.1.4 一维数组的应用举例 65

4.2 多维数组 67

4.2.1 多维数组的定义 67

4.2.2 多维数组的存储形式 67

4.2.3 多维数组的引用 68

4.2.4 多维数组的初始化 68

4.2.5 数组应用举例 70

4.3 字符型数组与字符串 71

4.3.1 字符型数组的概念 71

4.3.2 字符型数组的初始化 72

4.3.3 字符型数组的输入输出 73

4.3.4 字符型数组的应用举例 74

4.4 综合应用举例 75

4.5 习题 77

第5章 函数及其应用 79

5.1 函数的定义与调用 79

5.1.1 C源程序的结构 79

5.1.2 函数的定义 80

5.1.3 函数的调用 82

5.2 函数间的信息传递方式 85

5.2.1 实参-形参之间的信息传递 86

5.2.2 函数调用结果的返回 89

5.3 函数与数组 92

5.3.1 数组元素做实参 92

5.3.2 一维数组名做实参 92

5.3.3 多维数组名做参数 94

5.3.4 字符数组做函数的参数 95

5.4 递归函数与递归调用 96

5.4.1 递归的概念 96

5.4.2 递归程序的设计 97

5.5 变量的存储类型及作用域 98

5.5.1 auto型变量 99

5.5.2 extern型变量 99

5.5.3 静态变量 102

5.6 习题 104

第6章 指针 107

6.1 指针的基本概念及定义方式 107

6.1.1 指针的基本概念 107

6.1.2 指针的定义 107

6.1.3 指针的初始化 108

6.1.4 指针运算符 110

6.2 指针的运算 110

6.2.1 指针的算术运算 110

6.2.2 关系运算 112

6.2.3 指针的赋值运算 112

6.3 指针与数组 112

6.3.1 指向一维数组的指针 113

6.3.2 指向多维数组的指针 115

6.4 字符指针和字符串 116

6.5 指针数组 118

6.5.1 指针数组的概念 118

6.5.2 指针数组的应用 119

6.5.3 指针数组在带形参的main函数中的应用 120

6.6 指针在函数参数传递中的应用 122

6.7 指针型函数 122

6.7.1 指针型函数的定义和引用 123

6.7.2 指针型函数的应用举例 123

6.8 多级指针 124

6.8.1 多级指针的概念及定义 124

6.8.2 多级指针应用举例 125

6.9 指向函数的指针 126

6.9.1 指向函数的指针的概念 126

6.9.2 指向函数的指针的应用 127

6.10 动态指针 129

6.10.1 动态内存分配的概念 129

6.10.2 动态内存分配的应用 130

6.11 习题 132

第7章 排序及查找算法及其实现 134

7.1 排序概述 134

7.1.1 排序的概念 134

7.1.2 排序的定义 134

7.1.3 排序的方法 135

7.1.4 排序效率 135

7.2 冒泡排序法的设计及其实现 137

7.2.1 冒泡算法设计思想 137

7.2.2 冒泡算法的实现 138

7.3 选择排序法的设计及其实现 139

7.3.1 选择排序法设计思想 139

7.3.2 选择排序法的实现 140

7.4 插入排序法的设计及其实现 141

7.4.1 插入排序法设计思想 141

7.4.2 插入排序法的实现 142

7.5 SHELL排序法的设计及其实现 143

7.5.1 SHELL排序法设计思想 143

7.5.2 SHELL排序法的实现 144

7.6 字符串数组的排序设计及其实现 146

7.6.1 字符串数组的排序算法设计思想 146

7.6.2 字符串数组排序算法的实现 147

7.7 查找概述 148

7.8 顺序查找及其应用 148

7.8.1 顺序查找算法的设计思想 148

7.8.2 顺序查找算法的实现 149

7.9 折半查找及其应用 150

7.9.1 折半查找算法的设计思想 150

7.9.2 折半查找算法的实现 151

7.10 习题 152

第8章 结构体、联合体和枚举 153

8.1 结构体的说明和定义 153

8.1.1 结构体的概念 153

8.1.2 结构体的说明及结构体变量的定义 154

8.2 结构体成员的引用与结构体变量的初始化 157

8.2.1 结构体成员的引用 157

8.2.2 结构体变量的初始化 158

8.3 结构体数组 159

8.3.1 结构体数组的定义及初始化 159

8.3.2 结构体数组的应用举例 159

8.4 结构体指针 161

8.4.1 结构体指针及其定义 161

8.4.2 通过指针引用结构体成员 162

8.4.3 结构体指针的应用举例 163

8.5 结构体在函数间的传递 166

8.5.1 结构体变量的传递 166

8.5.2 结构体数组在函数间的传递 169

8.6 结构体指针型和结构体型函数 170

8.6.1 结构体指针型函数 170

8.6.2 结构体型函数 172

8.7 结构体嵌套 174

8.7.1 结构体嵌套的概念 174

8.7.2 嵌套结构体类型变量的引用 175

8.7.3 结构体嵌套应用举例 176

8.8 联合体 177

8.8.1 联合体的说明及联合体变量的定义 177

8.8.2 使用联合体变量应注意的问题 182

8.9 枚举类型 184

8.9.1 枚举类型数据的概念及其定义 184

8.9.2 枚举型变量的使用 184

8.10 自定义类型 186

8.10.1 自定义类型及其表示形式 186

8.10.2 自定义类型的优点 187

8.11 位字段结构体 188

8.12 习题 189

第9章 文件操作 193

9.1 文件概述 193

9.2 文件的基本操作 197

9.2.1 文件的打开 197

9.2.2 文件的关闭 198

9.2.3 文件的删除 198

9.2.4 文件的重命名 199

9.2.5 临时文件的创建 199

9.3 文件的读写操作 200

9.3.1 文件的非格式化读写 200

9.3.2 文件的格式化写操作 206

9.3.3 文件的格式化读操作 208

9.4 文件的定位 209

9.4.1 fgetpos函数 209

9.4.2 fsetpos函数 209

9.4.3 ftell函数 209

9.4.4 fseek函数 210

9.4.5 feof函数 211

9.5 错误处理 211

9.5.1 ferror函数 211

9.5.2 perror函数 211

9.6 习题 212

第10章 线性表及其应用 218

10.1 线性表的基本概念 218

10.2 结构简介 219

10.2.1 单链表 220

10.2.2 循环链表 228

10.2.3 双向链表 229

10.3 线性表的应用 229

10.3.1 单链表的应用:单链表归并问题 229

10.3.2 循环链表的应用:求解约瑟夫问题 231

10.4 习题 232

第11章 栈及其应用 233

11.1 栈的定义及其基本操作 233

11.2 栈的实现 234

11.2.1 栈的数组实现 234

11.2.2 栈的链式存储实现 236

11.3 栈的应用 238

11.3.1 栈在进制转换中的应用 238

11.3.2 栈在递归中的应用 241

11.4 习题 243

第12章 队列及其应用 244

12.1 队列的定义及基本操作 244

12.2 队列的实现 245

12.2.1 用循环数组实现队列 245

12.2.2 用链表实现队列 248

12.3 队列的应用 251

12.3.1 打印杨辉三角形 251

12.3.2 舞伴问题 254

12.4 习题 258

第13章 二叉树及其应用 259

13.1 树的定义和基本术语 259

13.1.1 树的定义 259

13.1.2 树的基本术语 260

13.2 二叉树的特点及其数学性质 261

13.2.1 二叉树的特点 261

13.2.2 二叉树的数学性质 261

13.3 二叉树的基本操作及其实现 263

13.3.1 二叉树的基本操作 263

13.3.2 二叉树基本操作的实现 263

13.4 二叉树的应用 268

13.4.1 二叉树的遍历 268

13.4.2 利用二叉树的遍历建立、打印二叉树 270

13.4.3 利用二叉树的遍历按树状打印二叉树 273

13.5 习题 275

附录A 预处理命令的应用 276

A.1 预处理概述 276

A.2 宏定义 276

A.2.1 无参宏定义 276

A.2.2 带参宏定义 280

A.3 文件包含 284

A.4 条件编译 284

A.4.1 第一种条件编译形式 284

A.4.2 第二种条件编译形式 285

A.4.3 第三种条件编译形式 286

附录B Turbo C 3.0的上机过程 288

B.1 文件的建立与保存 288

B.2 文件的编辑 289

B.3 编译连接 290

B.4 程序的运行 291

附录C Turbo C 3.0程序的调试 292

C.1 程序的调试 292

C.1.1 有关调试的设置 292

C.1.2 设置断点及动态调试的基本操作 293

C.2 程序调试实例 295

C.2.1 添加断点 295

C.2.2 观察变量 296

C.2.3 单步执行 296

C.2.4 观察调用关系 297

C.2.5 终止调试 297

C.2.6 条件断点 297

C.2.7 动态修改变量值 298

附录D Turbo C 3.0部分库函数表 299

附录E ASCII码表 311

参考文献 312