《程序设计基础 C语言 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:张先伟,马新娟,张立红,王云,田爱奎编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:9787302440864
  • 页数:365 页
图书介绍:《程序设计基础》是《程序设计基础(C语言)》的修订版,本版教材改变了国内流行的以语言语法知识教学为主线的教材结构框架,以程序设计的基本思想与方法作为主要结构,在理论体系中淡化非必须且难理解的语法内容,强化设计中常用、典型的语法知识,引入常用的算法设计(如分治与递归、动态规划、贪心等)方法应用案例,使得教材内容体现结构合理、重点突出的程序设计知识体系。

第1章 程序设计引论 1

1.1 计算机程序与计算机语言 1

1.1.1 计算机程序 1

1.1.2 计算机内存 2

1.1.3 计算机语言 3

1.1.4 C语言简介 5

1.2 简单的C程序构成 6

1.2.1 最简单的C语言程序举例 6

1.2.2 C程序的结构 10

1.3 C程序设计的基本步骤 12

1.3.1 需求分析 12

1.3.2 详细设计 13

1.3.3 编辑程序 13

1.3.4 编译与链接 14

1.3.5 运行与调试 15

1.4 C程序文件的创建、编译与运行 16

1.4.1 CodeBlocks下程序文件的创建、编译与运行 17

1.4.2 Visual C++ 6.0下程序文件的创建、编译与运行 20

1.5 本章小结 23

第2章 算法设计基础 25

2.1 什么是算法 25

2.1.1 日常生活中的算法 25

2.1.2 计算机算法的分类 26

2.1.3 简单算法举例 27

2.2 算法的特征 28

2.3 算法的表示方法 28

2.3.1 自然语言表示算法 28

2.3.2 传统流程图表示算法 29

2.3.3 三种基本结构 30

2.3.4 用N-S流程图表示算法 31

2.3.5 其他表示算法的方法 32

2.4 程序设计中常用算法 32

2.4.1 迭代法 33

2.4.2 穷举搜索法 33

2.4.3 递推法 34

2.4.4 递归 34

2.4.5 回溯法 35

2.4.6 贪心法 35

2.4.7 分治法 36

2.4.8 动态规划法 37

2.5 本章小结 39

第3章 数据类型基础 40

3.1 数据在计算机中的存储方式 40

3.1.1 二进制 40

3.1.2 位与字节 40

3.1.3 数据的存储方式 41

3.2 常量与变量 42

3.2.1 基本概念 42

3.2.2 定义常量的名字(预处理命令#define) 43

3.2.3 变量的声明和赋值 44

3.2.4 常量的分类 46

3.3 基本数据类型 49

3.3.1 整型 49

3.3.2 实型 50

3.3.3 字符型 51

3.3.4 sizeof()求类型大小 52

3.4 数据类型转换 53

3.4.1 自动转换 53

3.4.2 强制类型转换 54

3.5 运算符与表达式 54

3.5.1 算术运算符 55

3.5.2 自增运算符和自减运算符 55

3.5.3 算术表达式 56

3.5.4 运算符的优先级和结合性 57

3.6 本章小结 58

第4章 顺序控制结构与数据的输入输出 59

4.1 顺序结构 59

4.1.1 C语句综述 59

4.1.2 赋值运算符和赋值表达式 61

4.1.3 顺序结构实例 63

4.2 数据的输入输出及实现 66

4.3 字符数据的输入输出 66

4.3.1 putchar函数 66

4.3.2 getchar函数 67

4.4 格式化输入输出 68

4.4.1 格式输出printf函数 68

4.4.2 格式输入scanf函数 70

4.5 本章小结 74

第5章 分支控制结构 75

5.1 关系运算符和关系表达式 75

5.2 逻辑运算符和逻辑表达式 76

5.3 if语句 79

5.3.1 if语句的三种形式 79

5.3.2 if语句的嵌套 84

5.3.3 条件运算符与条件表达式 85

5.3.4 if语句中的复合语句 87

5.4 switch语句 88

5.5 本章小结 91

第6章 循环控制结构 92

6.1 循环控制结构 92

6.2 while()语句 93

6.2.1 while语句的一般形式 93

6.2.2 如何终止while循环 93

6.2.3 while语法要点 95

6.2.4 计数循环与不确定循环 97

6.3 do…while语句——退出条件循环 98

6.3.1 do while的一般形式 98

6.3.2 do while语句的使用 98

6.3.3 do while语句的语法要点 99

6.4 逗号运算符和逗号表达式 100

6.5 for语句 101

6.5.1 for语句的一般形式 102

6.5.2 for语句的灵活运用 104

6.5.3 逗号表达式在for语句中的使用 107

6.6 空语句在循环中的使用 107

6.7 循环语句的选择 108

6.8 循环嵌套 109

6.9 break和continue语句 112

6.10 本章小结 114

第7章 函数 116

7.1 函数概述 116

7.1.1 什么是函数 116

7.1.2 为什么使用函数 117

7.1.3 函数的特点 118

7.1.4 函数的分类 118

7.2 函数定义和调用 118

7.2.1 函数定义 118

7.2.2 函数调用 120

7.2.3 函数的声明 122

7.2.4 return语句 123

7.3 嵌套调用与递归调用 124

7.3.1 嵌套调用 124

7.3.2 递归调用 125

7.4 变量与函数 130

7.4.1 变量的作用域和存储类别 130

7.4.2 局部变量的作用域和存储类别 131

7.4.3 全局变量的作用域和存储类别 134

7.5 随机数函数 136

7.6 本章小结 139

第8章 数组 141

8.1 一维数组的定义、引用与初始化 143

8.1.1 一维数组的定义 143

8.1.2 一维数组元素的引用 144

8.1.3 一维数组的初始化 146

8.2 一维数组的应用 149

8.2.1 Fibonacci数列 149

8.2.2 统计问题 151

8.2.3 排序问题 152

8.2.4 查找问题 158

8.2.5 逆置与移位 162

8.2.6 元素删除 165

8.3 二维数组 166

8.3.1 二维数组的定义 166

8.3.2 二维数组元素的引用 167

8.3.3 二维数组的初始化 168

8.3.4 二维数组程序举例 169

8.4 数组与函数 171

8.4.1 数组元素作函数实参 171

8.4.2 数组名作为函数参数 172

8.5 本章小结 174

第9章 指针 175

9.1 地址与指针 175

9.1.1 变量、数组、函数与地址 175

9.1.2 变量的地址和变量的值 176

9.1.3 变量的访问方式 177

9.1.4 指针和指针变量 178

9.2 指针变量 179

9.2.1 指针变量的定义 179

9.2.2 指针变量的引用 180

9.2.3 指针变量作为函数参数 185

9.3 指向数组的指针变量 189

9.3.1 指向数组元素的指针 189

9.3.2 通过指针引用数组元素 190

9.3.3 指向数组的指针变量作为函数参数 193

9.3.4 指向多维数组的指针变量 199

9.4 函数指针变量 207

9.4.1 函数指针与指向函数的指针变量 207

9.4.2 用函数指针变量调用函数 208

9.4.3 用指向函数的指针变量作函数参数 211

9.5 返回指针值的函数 212

9.6 指针数组和指向指针的指针 214

9.6.1 指针数组的概念 214

9.6.2 指向指针的指针 217

9.7 本章小结 219

第10章 字符串 221

10.1 字符串常量 221

10.1.1 字符串与字符串结束标志 221

10.1.2 什么是字符串常量 221

10.1.3 如何存储字符串常量 222

10.2 如何表示字符串变量 223

10.2.1 字符数组的定义与引用 223

10.2.2 字符数组的初始化 224

10.2.3 指针变量与字符串 225

10.2.4 字符串数组 228

10.3 字符串的输入输出 230

10.3.1 用gets函数和puts函数输入输出字符串 230

10.3.2 用scanf函数和printf函数输入输出字符串 231

10.4 字符串处理函数 232

10.5 字符指针与字符数组的区别 234

10.6 程序举例 237

10.7 本章小结 239

第11章 结构体、共用体和枚举 241

11.1 示例问题:学生成绩管理的例子 241

11.2 结构体 242

11.2.1 结构体类型的定义 242

11.2.2 结构体类型变量的定义 243

11.2.3 结构体类型变量的引用与赋值 244

11.2.4 结构体变量的初始化 245

11.2.5 结构体类型数组 246

11.2.6 结构体类型指针变量 249

11.2.7 结构体类型指针变量作函数参数 252

11.3 共用体 253

11.3.1 共用体类型的概念 253

11.3.2 共用体类型变量的引用 254

11.3.3 共用体类型数据的特点 255

11.4 枚举 256

11.4.1 枚举类型的概念和定义 256

11.4.2 枚举类型变量的赋值和使用 256

11.5 利用typedef自定义类型 258

11.6 本章小结 260

第12章 文件 261

12.1 文件概述 261

12.1.1 文件的概念 261

12.1.2 文件的分类 261

12.1.3 标准文件I/O 262

12.2 文件指针 263

12.3 文件的打开与关闭 263

12.3.1 文件打开函数(fopen)与程序结束函数(exit) 263

12.3.2 文件关闭函数(fclose) 265

12.4 文本文件的读写 265

12.4.1 字符读写函数(fgetc和fputc) 265

12.4.2 字符串读写函数(fgets和fputs) 267

12.4.3 格式化读写函数(fscanf和fprintf) 268

12.5 二进制文件的读写 270

12.5.1 二进制模式与文本模式的区别 270

12.5.2 数据块读写函数(fread和fwtrite) 271

12.6 文件操作的其他函数 272

12.6.1 判断文件是否结束函数(feof) 272

12.6.2 文件内部指针定位 273

12.6.3 ftell函数 274

12.6.4 int fflush()函数 275

12.7 综合示例 275

12.8 本章小结 276

第13章 链表 278

13.1 动态内存分配 278

13.1.1 C程序的内存划分 278

13.1.2 内存分配方式 279

13.1.3 动态内存分配函数 279

13.2 单链表概述 282

13.2.1 结点的结构 282

13.2.2 单链表的结构 282

13.3 单链表结点的基本操作 283

13.3.1 单链表结点的查找 283

13.3.2 单链表结点的插入 284

13.3.3 单链表结点的删除 286

13.4 单链表的建立 287

13.4.1 逆序建链表 288

13.4.2 顺序建链表 289

13.5 单链表的应用 290

13.5.1 单链表的逆置 291

13.5.2 单链表的归并 292

13.5.3 单链表的拆分 295

13.6 循环链表与约瑟夫环问题 296

13.6.1 循环链表 296

13.6.2 约瑟夫环问题 296

13.7 本章小结 299

第14章 递推与递归 301

14.1 递推 301

14.1.1 递推思想 301

14.1.2 求解递推关系的方法 302

14.1.3 递推关系的建立 302

14.2 递推设计实例 303

14.2.1 简单Hanoi塔问题 303

14.2.2 捕鱼问题 304

14.2.3 Fibonacci类问题 306

14.2.4 错排公式 310

14.2.5 马踏过河卒 311

14.3 递归 313

14.3.1 递归的定义 313

14.3.2 递归的思想 313

14.4 递归设计实例 314

14.4.1 青蛙过河问题 314

14.4.2 快速排序问题 319

14.4.3 第k小的数 323

14.4.4 全排列问题 327

14.4.5 八皇后问题 332

14.5 递归的效率 335

14.6 本章小结 337

第15章 贪心法与动态规划法 339

15.1 贪心法 339

15.1.1 贪心法的思想 339

15.1.2 贪心法的实现过程 340

15.1.3 贪心法的基本要素 341

15.1.4 贪心法的注意事项 342

15.2 贪心法实例 344

15.2.1 删数问题 344

15.2.2 活动选择问题 345

15.2.3 区间覆盖问题 348

15.2.4 贪心法解题的一般步骤 351

15.3 动态规划 351

15.3.1 什么是动态规划 351

15.3.2 引入动态规划的意义 352

15.3.3 动态规划的特征 354

15.3.4 动态规划算法的基本步骤 355

15.4 动态规划实例 356

15.4.1 简单最短路径问题 356

15.4.2 最长公共子序列问题 360

15.4.3 最长上升子序列问题 362

15.5 本章小结 364