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

  • 购买积分:13 如何计算积分?
  • 作  者:谭成予主编
  • 出 版 社:武汉:武汉大学出版社
  • 出版年份:2010
  • ISBN:9787307075634
  • 页数:384 页
图书介绍:本书以C语言为蓝本讲解高级语言程序设计的基本理论,系统地介绍了C语言的基本概念和结构化程序设计的方法。适合作为相关专业学习高级语言程序设计的教科书。

第1章 程序设计概述 1

1.1 什么是计算机 1

1.1.1 物理计算机 1

1.1.2 系统软件和应用软件 2

1.1.3 网络和计算模式 3

1.2 程序和程序设计概述 3

1.2.1 什么是程序 4

1.2.2 计算机语言 5

1.2.3 C语言的发展历史和特点 6

1.2.4 程序设计 7

1.3 程序的组成 9

1.3.1 程序的语法对象 9

1.3.2 程序的基本结构 11

1.3.3 程序的基本语法单位 13

1.4 程序设计的步骤 14

1.4.1 问题说明 14

1.4.2 设计测试计划 15

1.4.3 设计方案 16

1.4.4 开发环境 16

1.4.5 构造程序 16

1.4.6 执行和测试程序 17

1.5 本章小结 17

习题1 17

第2章 数据、类型和运算 19

2.1 计算机中的数与数制 19

2.1.1 计算机中的整数 20

2.1.2 计算机中的实数 21

2.1.3 计算机中的文字 22

2.2 C的数据类型和基本数据类型 22

2.2.1 C的数据类型 23

2.2.2 C的基本数据类型 23

2.3 变量 25

2.3.1 数学中的变量和计算机中的变量 25

2.3.2 变量的定义形式 25

2.3.3 变量的定义位置 25

2.3.4 变量的初始化 25

2.3.5 类型限定词 26

2.3.6 变量的左值和右值 27

2.4 常量 28

2.4.1 整型常量 28

2.4.2 浮点数常量 29

2.4.3 字符型常量 29

2.4.4 字符串常量 30

2.4.5 符号常量(不带参数的宏) 31

2.5 数值问题的计算误差 32

2.5.1 整数上溢 32

2.5.2 浮点数的可表示误差 34

2.5.3 浮点数上溢 35

2.5.4 浮点数下溢 36

2.5.5 数据类型的选择 37

2.6 表达式的基本概念 37

2.6.1 运算符和算元 37

2.6.2 优先级别、括号和结合性 37

2.6.3 C语言中的运算符概述 38

2.7 C语言中的运算符 39

2.7.1 算术运算、增量和减量运算符 39

2.7.2 赋值运算符 41

2.7.3 关系运算符和逻辑运算符 43

2.7.4 条件运算符和逗号运算符 45

2.7.5 位运算符 45

2.7.6 其他运算符 47

2.8 表达式中的自动类型转换和强制类型转换 48

2.8.1 自动类型转换 48

2.8.2 强制类型转换 49

2.9 本章小结 50

2.9.1 主要知识点 50

2.9.2 难点和常见错误 51

习题2 51

第3章 简单程序设计 54

3.1 结构化的三种基本结构 54

3.1.1 结构化程序设计的基本思想 54

3.1.2 三种基本结构 55

3.2 语句 57

3.2.1 表达式语句 57

3.2.2 块语句 57

3.2.3 跳转语句 58

3.2.4 其他控制语句 59

3.3 控制台I/O 59

3.3.1 读写字符 59

3.3.2 格式化控制台输出 61

3.3.3 格式化控制台输入 64

3.4 程序原型 66

3.4.1 程序原型 67

3.4.2 程序书写风格 67

3.4.3 程序布局与规范 67

3.5 编写简单的C程序 68

3.6 本章小结 70

3.6.1 主要知识点 70

3.6.2 难点和常见错误 70

习题3 71

第4章 流程控制 73

4.1 if条件语句 73

4.1.1 双分支if语句 73

4.1.2 单分支if语句 75

4.1.3 嵌套if语句 78

4.1.4 if-else-if梯次 81

4.1.5 代替if语句的条件运算符 82

4.2 switch多重选择语句 82

4.2.1 switch语句基本语法 82

4.2.2 使用switch语句的三个要点 85

4.3 循环语句 86

4.3.1 for语句 86

4.3.2 while语句 89

4.3.3 do-while语句 91

4.3.4 goto语句构建循环结构 93

4.4 循环结构中的break和continue语句 94

4.4.1 break语句 94

4.4.2 continue语句 95

4.5 应用实例 96

4.5.1 哨兵循环 96

4.5.2 查询循环 97

4.5.3 计数循环 99

4.6 本章小结 103

4.6.1 主要知识点 103

4.6.2 难点和常见错误 103

习题4 105

第5章 函数 108

5.1 模块化的程序设计 108

5.1.1 从构造计算机说起 108

5.1.2 C语言中的程序模块 109

5.1.3 程序“模块化”的目的 110

5.2 创建函数 110

5.2.1 C语言中函数分类 110

5.2.2 函数定义的一般形式 111

5.2.3 定义无参函数 111

5.2.4 定义有参函数 112

5.2.5 理解函数的作用域规则 113

5.3 函数调用 113

5.3.1 函数调用的一般形式 113

5.3.2 函数原型 117

5.4 函数之间的数据通信 119

5.4.1 模块间的数据通信方式 119

5.4.2 C函数中形参和实参间的值传递 120

5.4.3 C函数的返回值 122

5.5 函数的递归调用 125

5.5.1 运行栈 125

5.5.2 直接递归和间接递归 128

5.5.3 递归与迭代 128

5.5.4 较复杂的递归范例:Hanoi问题 130

5.6 数据的模块化 132

5.6.1 什么是数据模块化 132

5.6.2 标识符的作用域和可视性 133

5.6.3 变量的存储类别 137

5.6.4 由多个源文件组成的程序的编译问题 142

5.7 编译预处理 142

5.7.1 宏 142

5.7.2 文件嵌入 144

5.7.3 条件编译 145

5.7.4 其他编译预处理命令 148

5.8 本章小结 148

5.8.1 主要知识点 148

5.8.2 难点和常见错误 149

习题5 150

第6章 程序设计方法概述 153

6.1 算法的概念和特点 153

6.2 算法的描述 154

6.2.1 自然语言描述算法 154

6.2.2 图形工具描述算法 155

6.2.3 伪代码描述算法 159

6.3 程序设计方法基础 160

6.3.1 程序设计方法的演变 160

6.3.2 结构化程序设计 160

6.3.3 面向对象程序设计 161

6.3.4 后面向对象程序设计 162

6.4 结构化程序设计方法 163

6.4.1 构造程序草图 163

6.4.2 选择数据结构 164

6.4.3 功能模块设计 164

6.4.4 模块详细设计 165

6.5 本章小结 167

习题6 167

第7章 数组 169

7.1 什么是数组 169

7.2 一维数组 170

7.2.1 定义一维数组 170

7.2.2 一维数组初始化 171

7.2.3 访问一维数组 173

7.2.4 一维数组范例 176

7.3 字符数组(串) 187

7.3.1 什么是字符串 187

7.3.2 定义字符数组 187

7.3.3 字符数组初始化 187

7.3.4 字符数组的输入输出 188

7.3.5 常用字符串处理库函数(string库) 191

7.3.6 字符数组范例:统计单词个数 195

7.4 二维数组 198

7.4.1 定义二维数组 198

7.4.2 二维数组初始化 198

7.4.3 访问二维数组:矩阵 201

7.5 多维数组 202

7.5.1 定义多维数组 202

7.5.2 进一步解读二维数组 202

7.5.3 字符串数组 203

7.5.4 多维数组范例 204

7.6 本章小结 210

7.6.1 主要知识点 210

7.6.2 难点和常见错误 211

习题7 211

第8章 指针 214

8.1 什么是指针 214

8.1.1 数据的组织方式 214

8.1.2 指针和指针变量 216

8.2 指针变量的初始化 217

8.2.1 指针运算符 217

8.2.2 空指针和空类型指针 218

8.2.3 动态分配函数 219

8.2.4 指针的初始化 220

8.3 指针运算 222

8.3.1 指针赋值 222

8.3.2 指针转换 222

8.3.3 指针算术运算 223

8.3.4 指针比较 224

8.4 地址参数:指针形参模拟引用调用 226

8.5 数组和指针 231

8.5.1 数组元素的指针表示&指针的下标表示 231

8.5.2 字符串的指针表示 232

8.5.3 数组名形参 236

8.5.4 二维数组的地址 239

8.5.5 指针数组 240

8.5.6 C语言中指针和数组“等价” 243

8.6 多级指针 244

8.6.1 二级指针 244

8.6.2 数组指针 246

8.6.3 深入理解多级指针 247

8.7 命令行参数 248

8.8 函数指针 249

8.9 本章小结 252

8.9.1 主要知识点 252

8.9.2 难点和常见错误 253

习题8 254

第9章 结构、联合、枚举和typedef 257

9.1 结构类型的现实意义:实体 257

9.2 结构类型的定义和初始化 258

9.2.1 定义结构类型 258

9.2.2 定义结构类型变量 260

9.2.3 结构类型变量的初始化 260

9.2.4 结构类型变量的引用 261

9.3 向函数传递结构 263

9.3.1 向函数传递结构类型成员 263

9.3.2 向函数传递全结构 264

9.4 结构数组 267

9.5 结构与指针 270

9.5.1 结构指针 270

9.5.2 结构类型的自引用定义 273

9.5.3 动态数据结构 273

9.5.4 链表的概念和分类 274

9.5.5 单链表的基本操作 276

9.6 位段 285

9.7 联合类型 286

9.7.1 定义联合类型变量 286

9.7.2 联合类型变量的引用 287

9.8 枚举类型 289

9.8.1 定义枚举类型变量 289

9.8.2 枚举类型变量的引用 289

9.9 typedef定义类型别名 292

9.10 本章小结 293

9.10.1 主要知识点 293

9.10.2 难点和常见错误 294

习题9 295

第10章 流与文件 297

10.1 文件的基本概念 297

10.1.1 什么是文件 297

10.1.2 数据文件与程序文件 298

10.1.3 C语言中的数据文件 298

10.2 流与缓冲 298

10.2.1 流:输入流和输出流 299

10.2.2 流的格式:文本流和二进制流 299

10.2.3 缓冲区 300

10.2.4 标准流 301

10.3 用户自定义流 302

10.3.1 C语言文件操作基本流程 302

10.3.2 定义和打开流 303

10.3.3 关闭流 304

10.3.4 文件管理错误 304

10.4 I/O文本流 304

10.4.1 输出文本流 304

10.4.2 输入文本流 306

10.4.3 文本文件应用范例 308

10.5 I/O二进制流 311

10.5.1 输出二进制流 311

10.5.2 输入二进制流 312

10.5.3 二进制文件应用范例 312

10.6 其他文件处理库函数 322

10.6.1 流的定位 322

10.6.2 读取流变量的位置号 324

10.6.3 错误检测 325

10.6.4 删除文件 325

10.6.5 对流清仓 325

10.7 文件的深入讨论 326

10.7.1 二进制文件和文本文件的适用范围 326

10.7.2 是否有必要保存指针:链表的存储和恢复 326

10.7.3 加速文件处理速度 328

10.8 本章小结 329

习题10 329

第11章 问题求解策略和算法设计 331

11.1 穷举法:天平检测假金币 331

11.2 局部搜索法:二分法求方程的解 336

11.3 回溯法:八皇后问题 339

11.4 分治法:快速排序法 344

11.5 动态规划法:矩阵连乘积 348

11.6 人工智能问题求解:组合爆炸现象 355

11.6.1 组合爆炸 355

11.6.2 搜索技术 355

11.6.3 爬山搜索实例 359

11.6.4 选择搜索技术 366

11.7 本章小结 367

习题11 367

附录A ASCII码表 368

附录B C运算符的优先级和结合性 370

附录C C关键字 372

附录D 常用C库函数 373

附录E C/C++互联网资源 380

参考文献 384