《C程序设计 方法与实践》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:刘喜平,万常选,舒蔚,骆斯文编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302467151
  • 页数:497 页
图书介绍:本书内容包括三个方面:1)程序的基本构造,如程序的三种基本结构、函数、常量、变量等;2)程序的构造方法,如函数分解、递归、常见算法等;3)程序的数据描述,如数组、结构体、文件等。全书以C语言为载体,不仅介绍了C语言的基本语法,更重要的是,通过C语言的语法元素展示了如何构造出一个个完整的程序。

第1章 程序设计与软件开发 1

1.1 程序设计的基本概念 1

1.1.1 程序 1

1.1.2 程序设计语言 2

1.1.3 程序设计 4

1.2 算法与数据结构 7

1.2.1 算法及其特征 7

1.2.2 算法的结构 9

1.2.3 算法的描述 10

1.2.4 数据结构 14

1.3 软件开发 16

1.3.1 软件 16

1.3.2 软件工程 16

1.4 本章小结 17

习题1 19

第2章 C语言概述 20

2.1 C语言的发展与特点 20

2.1.1 C语言的发展 20

2.1.2 C语言的特点 21

2.2 一个C程序实例 22

2.2.1 编写和运行C程序 23

2.2.2 注释 23

2.2.3 预处理命令 24

2.2.4 程序主体 24

2.3 C语言的字符集与标识符 26

2.4 数据类型 27

2.5 常量和变量 28

2.5.1 常量 28

2.5.2 变量 28

2.6 运算符和表达式 30

2.6.1 运算符 30

2.6.2 表达式 32

2.7 输入与输出 33

2.7.1 输出函数printf 33

2.7.2 输入函数scanf 34

2.8 语句 36

2.8.1 简单语句 36

2.8.2 语句块 36

2.8.3 if语句 37

2.8.4 while语句 39

2.8.5 for语句 39

2.9 函数 41

2.10 编程实践:代码风格 42

2.11 本章小结 44

习题2 48

第3章 数据类型与输入输出 49

3.1 整型 50

3.1.1 整数的内部表示 51

3.1.2 整型常量 51

3.1.3 整数的输出 52

3.1.4 整数的输入 55

3.2 浮点型 57

3.2.1 浮点常量 58

3.2.2 浮点数的内部表示 58

3.2.3 浮点数的输出 58

3.2.4 浮点数的输入 60

3.2.5 浮点数的比较和计算 60

3.3 字符型 62

3.3.1 字符型数据的内部表示 62

3.3.2 字符常量和变量 63

3.3.3 字符输出 64

3.3.4 字符输入 65

3.3.5 字符处理 66

3.4 数组 68

3.4.1 什么是数组 68

3.4.2 数组的内部表示 69

3.4.3 数组元素的访问 69

3.4.4 数组的初始化 70

3.5 字符串 71

3.5.1 字符串常量 71

3.5.2 用字符数组处理字符串 72

3.5.3 字符串的输出 73

3.5.4 字符串的输入 74

3.6 文本文件输入与输出 77

3.6.1 声明FILE*类型的变量 78

3.6.2 打开文件 78

3.6.3 关闭文件 79

3.6.4 读写文件 79

3.7 变量的进一步讨论 81

3.7.1 变量的声明与初始化 81

3.7.2 限定词const 82

3.8 编程实践:命名 82

3.9 本章小结 83

习题3 86

第4章 运算符与表达式 89

4.1 运算符与表达式概述 89

4.1.1 C运算符简介 89

4.1.2 C表达式简介 91

4.2 算术运算符和算术表达式 91

4.2.1 算术运算符 91

4.2.2 算术表达式 92

4.2.3 算术表达式的例子 93

4.3 赋值运算符和赋值表达式 93

4.3.1 赋值运算符 94

4.3.2 赋值表达式 94

4.3.3 复合赋值运算符 95

4.4 增量减量运算符 96

4.5 子表达式的求值顺序 97

4.6 数据类型的转换 99

4.6.1 隐式类型转换 99

4.6.2 赋值运算符两侧数据的类型转换 100

4.6.3 强制类型转换 103

4.7 逗号运算符和逗号表达式 104

4.8 本章小结 105

习题4 107

第5章 分支结构 110

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

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

5.2.1 逻辑运算符 111

5.2.2 逻辑表达式 112

5.3 条件运算符和条件表达式 114

5.4 C语句概述 114

5.5 if语句 116

5.6 switch语句 119

5.7 应用举例 122

5.8 本章小结 127

习题5 128

第6章 循环结构与程序设计基本算法 133

6.1 循环结构与控制语句 133

6.1.1 while语句 133

6.1.2 for语句 134

6.1.3 do-while语句 136

6.1.4 循环嵌套 139

6.1.5 流程控制语句(break语句、continue语句和goto语句) 140

6.2 控制循环的基本方法 144

6.2.1 通过计数器变量控制循环 144

6.2.2 通过程序执行的状态控制循环 148

6.3 穷举算法 153

6.4 迭代与递推算法 157

6.4.1 迭代 157

6.4.2 递推 159

6.5 程序设计实例 162

6.6 编程实践:程序计时 171

6.7 本章小结 172

习题6 175

第7章 函数与结构化程序设计 180

7.1 函数 180

7.1.1 为什么要使用函数 180

7.1.2 函数定义 183

7.1.3 函数调用 188

7.1.4 函数原型与函数声明 190

7.1.5 函数的执行 193

7.1.6 主调函数与被调函数之间的数据传递 195

7.1.7 函数设计的思路 198

7.2 递归调用与递归算法 202

7.2.1 递归调用的执行过程 202

7.2.2 递归算法 204

7.2.3 Hanoi塔问题 206

7.3 程序的函数分解 208

7.4 C程序结构 217

7.4.1 编译预处理命令 217

7.4.2 全局声明 224

7.4.3 函数 225

7.4.4 C程序的逻辑与物理构成 225

7.5 编程实践:软件测试 227

7.6 本章小结 229

习题7 232

第8章 指针与数组 236

8.1 指针与指针变量 237

8.1.1 指针的概念 237

8.1.2 指针变量的声明与初始化 239

8.1.3 指针的基本运算 241

8.2 数组的指针 246

8.2.1 一维数组的指针 246

8.2.2 二维数组 251

8.2.3 二维数组的元素指针和行指针 256

8.2.4 指向一维数组的指针变量(行指针变量) 260

8.3 字符指针与字符串 262

8.3.1 字符串处理函数 262

8.3.2 指向字符的指针变量处理字符串 265

8.4 指针作为函数参数 267

8.4.1 变量的指针作为函数参数 267

8.4.2 一维数组的指针作为函数参数 270

8.4.3 二维数组的指针作为函数参数 273

8.5 返回指针的函数 275

8.6 指针数组 277

8.6.1 指针数组的概念及其应用 277

8.6.2 指针数组作main函数的形参 280

8.6.3 行指针数组 282

8.7 编程实践:实用字符串处理 284

8.8 本章小结 288

习题8 297

第9章 C程序运行原理 304

9.1 一个C程序的运行之旅 304

9.2 计算机指令的执行过程 306

9.3 计算机的存储模型 308

9.4 程序的内存布局 310

9.4.1 概述 310

9.4.2 栈 311

9.4.3 堆 312

9.4.4 可执行文件映像 314

9.5 变量的存储类型 314

9.5.1 作用域 315

9.5.2 存储期限(生存期) 319

9.5.3 链接 322

9.5.4 变量分类 323

9.6 编程实践:程序设计与操作系统 327

9.7 本章小结 329

习题9 332

第10章 复杂问题的求解算法 334

10.1 分治法 334

10.1.1 分治法的基本思想 334

10.1.2 折半查找 335

10.1.3 循环赛赛程安排 338

10.2 贪心算法 340

10.2.1 贪心算法的基本概念 340

10.2.2 活动安排问题 342

10.2.3 背包问题 344

10.3 动态规划算法 348

10.3.1 动态规划介绍 348

10.3.2 最长公共子序列问题 349

10.3.3 0-1背包问题 353

10.3.4 动态规划算法总结 355

10.4 回溯法 356

10.4.1 回溯法的基本思想 356

10.4.2 n皇后问题 357

10.4.3 0-1背包问题 359

10.4.4 回溯法总结 362

10.5 本章小结 363

习题10 365

第11章 结构体、联合共用体与枚举类型 368

11.1 数据类型的再讨论 368

11.1.1 数据类型与事物属性 368

11.1.2 数据类型的定义 369

11.2 结构体 370

11.2.1 结构体类型的定义 370

11.2.2 结构体变量的声明与存储 371

11.2.3 结构体变量的引用与初始化 373

11.3 结构体数组 375

11.4 结构体指针 377

11.5 结构体与函数 379

11.5.1 函数的结构体类型参数 379

11.5.2 结构体类型的函数 381

11.6 结构体嵌套 382

11.7 线性链表 383

11.7.1 线性链表概述 383

11.7.2 C语言实现线性链表 384

11.8 联合共用体 389

11.9 枚举类型 393

11.9.1 枚举类型定义与变量声明 393

11.9.2 枚举类型的使用方法 394

11.9.3 类型名重新定义typedef 396

11.10 编程实践:中文处理 397

11.11 本章小结 400

习题11 403

第12章 文件 406

12.1 C文件概述 406

12.1.1 C文件的基本概念 406

12.1.2 文本文件与二进制文件 407

12.1.3 文件的处理方法 408

12.2 流与文件类型的指针 408

12.3 文件操作 409

12.3.1 文件的打开 409

12.3.2 文件的关闭 411

12.3.3 字符方式读写文件 411

12.3.4 数据块方式读写文件 414

12.4 文件的定位与随机读写 418

12.4.1 文件的定位 418

12.4.2 随机读写 421

12.5 文件操作的出错检测 422

12.6 文件读写操作应用实例 422

12.6.1 文件中数据的修改 423

12.6.2 文件中数据的删除 424

12.6.3 向文件中追加或插入数据 425

12.7 编程实践:C与C++ 426

12.8 本章小结 428

习题12 431

第13章 指针的进一步讨论与位运算 432

13.1 多级指针 432

13.1.1 指向指针的指针与指向行指针的指针 432

13.1.2 指向指针的指针数组与指向行指针的指针数组 434

13.2 函数与指针 435

13.2.1 指向函数的指针变量 435

13.2.2 指向函数的指针数组 440

13.2.3 指向返回指针的函数的指针变量 440

13.2.4 指向返回指针的函数的指针数组 441

13.2.5 返回行指针的函数 441

13.2.6 指向返回行指针的函数的指针变量 442

13.2.7 指向返回行指针的函数的指针数组 443

13.3 位运算 443

13.3.1 二进制位运算概述 443

13.3.2 位运算符 444

13.3.3 位段 448

13.4 本章小结 450

习题13 452

第14章 C程序开发环境与调试 455

14.1 Visual Studio Community 2015的安装与使用 455

14.1.1 Visual Studio Community 2015简介 455

14.1.2 Visual Studio Community 2015的安装 457

14.1.3 Visual Studio Community 2015中编写C程序 459

14.1.4 Visual Studio Community 2015中运行C程序 461

14.1.5 Visual Studio Community 2015中调试C程序 463

14.2 Code∷Blocks的安装与使用 468

14.2.1 Code∷Blocks简介 468

14.2.2 Code∷Blocks的安装 469

14.2.3 在Code∷Blocks中编写程序 471

14.2.4 在Code∷Blocks中运行和调试程序 476

第15章 C语言上机实验 478

15.1 实验概述 478

15.1.1 实验目的 478

15.1.2 实验步骤 478

15.2 实验项目 479

15.2.1 实验1:C程序调试与输入输出 479

15.2.2 实验2:运算符、表达式及简单C程序设计 481

15.2.3 实验3:分支及循环结构 483

15.2.4 实验4:循环程序设计 485

15.2.5 实验5:函数程序设计 487

15.2.6 实验6:函数设计 489

15.2.7 实验7:数组、指针的应用 491

15.2.8 实验8:二维数组的应用 492

15.2.9 实验9:结构体与文件 494

附录 部分字符与ASCII代码对照表 496

参考文献 497