《C语言从入门到精通 精粹版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:梁义涛编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2018
  • ISBN:9787115463401
  • 页数:544 页
图书介绍:本书面向C语言的零基础读者,介绍基础入门知识和实际操作技巧。全书紧贴软件开发的实际需求,首先向读者展示语言的背景知识和应用范围,之后通过实例和自测,系统讲解相关知识点,同时兼顾实际开发项目经验。为了增强实用性,光盘中还特别赠送了精选的考试认证、求职面试等题库,供读者研究学习。最后,为帮助初入职场的从业者顺利进入角色,还在光盘中赠送了职业规划建议及相关开发文档。

第0章 学习攻略 2

0.1 编程的魔力 2

0.2 C语言的来源及特点 2

0.3 让计算机开口说话 4

0.4 C语言的用途 5

0.5 学习C语言的方法 5

第Ⅰ篇 基础知识 9

第1章 步入C的世界——Hello C 9

1.1 C语言的开发环境 9

1.1.1 C语言常用的开发环境 9

1.1.2 VC++开发环境的安装 9

1.1.3 Turbo C 2.0开发环境的安装 12

1.2 认识常用开发环境 13

1.2.1 认识VC++开发环境 13

1.2.2 认识Turbo开发环境 14

1.3 开始C编程——我的第1个C程序 15

1.3.1 程序编写及运行流程 15

1.3.2 在Visual C++ 6.0中开发C程序 16

1.3.3 在Turbo C中开发C程序 18

1.4 高手点拨 20

1.5 实战练习 20

第2章 C程序的组成 22

2.1 简单例子 22

2.2 声明区 22

2.2.1 头文件 22

2.2.2 函数声明 23

2.2.3 变量声明 24

2.3 主函数 25

2.4 函数定义区 26

2.5 注释 26

2.6 代码的规矩 27

2.7 高手点拨 27

2.8 实战练习 28

第3章 C语言的基本构成元素——字符集、标识符和关键字 30

3.1 标识符和关键字 30

3.1.1 标识符 30

3.1.2 关键字 30

3.2 常量 30

3.2.1 什么是常量 30

3.2.2 常量的声明 32

3.3 常量的类别 32

3.3.1 数值常量 32

3.3.2 字符常量 33

3.3.3 字符串常量 34

3.3.4 符号常量 34

3.4 综合应用——常量指针与指针常量 36

3.5 高手点拨 36

3.6 实战练习 37

第4章 变量 40

4.1 变量 40

4.1.1 什么是变量 40

4.1.2 变量的定义与声明 41

4.2 变量的类别 41

4.2.1 局部变量 41

4.2.2 形式参数 42

4.2.3 全局变量 43

4.3 变量的存储类型 45

4.3.1 自动变量 45

4.3.2 静态变量 45

4.3.3 外部变量 46

4.3.4 寄存器变量 47

4.4 变量的赋值和初始化 48

4.5 综合应用——根据变量的不同决定运行的结果 50

4.6 高手点拨 52

4.7 实战练习 52

第5章 计算机如何识数——数制 54

5.1 二进制 54

5.2 八进制 55

5.3 十进制 55

5.4 十六进制 55

5.5 数制间的转换 56

5.6 综合应用——数制转换 57

5.7 高手点拨 57

5.8 实战练习 58

第6章 数据的种类——数据类型 60

6.1 数据类型的分类 60

6.1.1 基本数据类型 60

6.1.2 构造数据类型 60

6.1.3 指针数据类型 60

6.1.4 空类型 61

6.2 整型 61

6.3 字符型 63

6.4 浮点型 65

6.5 类型转换 67

6.5.1 隐式转换 67

6.5.2 显式转换 69

6.6 综合应用——类型转换 70

6.7 高手点拨 70

6.8 实战练习 71

第7章 C世界中的加减乘除——运算符和表达式 74

7.1 C中的运算符和表达式 74

7.1.1 运算符 74

7.1.2 表达式 74

7.2 算术运算符和表达式 75

7.2.1 算术运算符 75

7.2.2 算术表达式 75

7.2.3 应用举例 75

7.3 关系运算符和表达式 77

7.3.1 关系运算符 77

7.3.2 关系表达式 77

7.3.3 应用举例 77

7.4 逻辑运算符和表达式 78

7.4.1 逻辑运算符 78

7.4.2 逻辑表达式 79

7.4.3 应用举例 79

7.5 条件运算符和表达式 81

7.6 赋值运算符和表达式 82

7.6.1 赋值运算符 82

7.6.2 赋值表达式 82

7.6.3 应用举例 83

7.7 自增、自减运算符 84

7.8 逗号运算符和表达式 85

7.9 位运算符 86

7.9.1 按位与运算符 86

7.9.2 按位或运算符 87

7.9.3 按位异或运算符 87

7.9.4 按位取反运算符 88

7.9.5 左移运算符 88

7.9.6 右移运算符 89

7.9.7 位运算赋值运算符 90

7.9.8 位运算应用 90

7.10 优先级与结合性 93

7.10.1 算术运算符的优先级和结合性 93

7.10.2 关系运算符的优先级和结合性 93

7.10.3 逻辑运算符的优先级和结合性 93

7.10.4 赋值运算符的优先级与结合性 94

7.11 综合应用——根据输入值计算结果 94

7.12 高手点拨 95

7.13 实战练习 95

第8章 顺序结构与选择结构 98

8.1 程序流程概述 98

8.2 语句 98

8.2.1 基本赋值语句 98

8.2.2 表达式语句 99

8.2.3 基本输入/输出语句 99

8.2.4 控制语句 101

8.2.5 空语句和复合语句 101

8.3 顺序结构与语句 102

8.4 选择结构 103

8.4.1 选择结构 103

8.4.2 单分支选择结构——if语句 103

8.4.3 双分支选择结构——if-else语句 106

8.4.4 多分支选择结构——if-else的嵌套形式 107

8.4.5 多分支选择结构——switch语句 111

8.5 综合应用——根据不同的利润计算奖金 113

8.6 高手点拨 114

8.7 实战练习 115

第9章 C程序的流程——循环结构与转向语句 118

9.1 循环结构与语句 118

9.1.1 循环结构 118

9.1.2 当型循环语句——for语句 119

9.1.3 当型循环语句——while语句 122

9.1.4 直到型循环语句——do-while语句 123

9.1.5 循环的嵌套 125

9.2 转向语句 128

9.2.1 goto语句 129

9.2.2 break语句 129

9.2.3 continue语句 131

9.3 综合应用——简单计算器 132

9.4 高手点拨 134

9.5 实战练习 134

第10章 用户与计算机的交互——输入和输出 136

10.1 标准输入/输出 136

10.2 格式化输入/输出 136

10.2.1 格式化输出函数——printf() 136

10.2.2 格式控制字符 138

10.2.3 格式化输入函数——scanf() 142

10.3 字符输入/输出 144

10.3.1 字符输出函数——putchar() 144

10.3.2 字符输入函数——getchar() 146

10.4 字符串输入/输出 146

10.4.1 字符串输出函数——puts() 146

10.4.2 字符串输入函数——gets() 147

10.5 高手点拨 148

10.6 实战练习 148

第11章 数组 152

11.1 数组概述 152

11.2 一维数组 152

11.2.1 一维数组的定义 152

11.2.2 一维数组的初始化 155

11.2.3 一维数组元素的操作 156

11.2.4 数组作为参数传递 158

11.2.5 一维数组的应用举例 160

11.3 二维数组 162

11.3.1 二维数组的定义 162

11.3.2 二维数组的初始化 163

11.3.3 二维数组元素的操作 163

11.3.4 二维数组的应用举例 164

11.4 多维数组 165

11.5 综合应用——杨辉三角 166

11.6 高手点拨 167

11.7 实战练习 168

第12章 字符数组 170

12.1 字符数组概述 170

12.2 字符数组 170

12.2.1 字符数组的初始化 170

12.2.2 字符数组的引用 170

12.2.3 字符数组的输入与输出 171

12.3 字符串 172

12.3.1 字符串和字符数组 172

12.3.2 字符串的输入/输出 174

12.3.3 字符串应用举例 175

12.4 综合应用——自动分类字符 177

12.5 高手点拨 178

12.6 实战练习 179

第Ⅱ篇 算法应用 183

第13章 程序的灵魂——算法与流程图 183

13.1 算法基础 183

13.1.1 算法的概念 183

13.1.2 算法的特性 183

13.1.3 简单算法举例——解方程 184

13.2 流程图的基础 185

13.2.1 流程图中的元素及含义 185

13.2.2 流程图的绘制 186

13.3 如何表示一个算法 188

13.3.1 用自然语言表示算法 188

13.3.2 用流程图表示算法 190

13.3.3 用传统流程图表示3种基本结构 192

13.3.4 用N-S图表示算法 193

13.3.5 用伪代码表示算法 195

13.3.6 用计算机语言表示算法 195

13.4 结构化程序设计方法 196

13.5 综合应用——求解一元二次方程 197

13.6 高手点拨 199

13.7 实战练习 200

第14章 基础算法 202

14.1 排序算法 202

14.1.1 桶排序法 202

14.1.2 冒泡排序法 203

14.1.3 快速排序法 204

14.2 栈、队列、链表算法 206

14.2.1 队列 206

14.2.2 栈 209

14.2.3 链表 211

14.2.4 模拟链表 216

14.3 枚举算法 218

14.4 搜索算法 220

14.4.1 深度优先搜索 220

14.4.2 广度优化搜索 220

14.5 图的遍历算法 221

14.5.1 深度和广度的区别 221

14.5.2 图的深度优化遍历 221

14.5.3 图的广度优化遍历 223

14.6 综合应用——宝岛探险 225

14.7 高手点拨 227

14.8 实战练习 228

第15章 C世界中的高级算法 230

15.1 模拟算法 230

15.2 简单动态规划 231

15.3 用递归实现回溯算法 233

15.4 最短路径算法 236

15.4.1 只有五行的算法——Floyd-Warshall 236

15.4.2 Dijkstra算法——单源最短边 237

15.4.3 Bellman-Ford——解决负权边 237

15.4.4 Bellman-Ford的队列优化 238

15.4.5 最短路径算法对比分析 238

15.5 树算法 240

15.5.1 二叉树算法 240

15.5.2 堆算法 241

15.5.3 并查集 241

15.6 综合应用——镖局运镖 243

15.7 高手点拨 245

15.8 实战练习 246

第16章 数学在程序设计中的应用 248

16.1 常用数学函数 248

16.2 质因数分解 249

16.3 最大公约数的欧几里得算法 251

16.4 加法原理与乘法原理 252

16.5 排列与组合 253

16.6 综合应用——圆排列、可重集排列 254

16.7 高手点拨 255

16.8 实战练习 256

第17章 算法设计的常用思路 258

17.1 分治算法 258

17.2 动态规划算法 259

17.3 贪心算法 261

17.4 回溯算法 263

17.5 高手点拨 265

17.6 实战练习 265

第18章 算法竞赛实例 268

18.1 衡量程序质量的标准 268

18.2 Hilbert曲线 269

18.3 验证四色问题 271

18.4 n女王问题 273

18.5 跳马问题 274

18.6 生成全部排列及其应用 276

18.7 贪吃蛇游戏 278

18.8 快速排序 283

18.9 幻方 284

18.10 高精度计算 288

18.11 高手点拨 289

18.12 实战练习 290

第Ⅲ篇 核心技术 293

第19章 函数 293

19.1 函数概述 293

19.1.1 什么是函数 293

19.1.2 函数的分类 294

19.2 函数的定义 294

19.3 函数的返回值及类型 297

19.3.1 函数的返回值 297

19.3.2 函数的类型 298

19.4 函数的参数及传递方式 300

19.4.1 函数的参数 301

19.4.2 函数参数的传递方式 302

19.5 函数的调用 303

19.5.1 函数调用方式 304

19.5.2 函数的声明 305

19.5.3 函数的嵌套调用 307

19.5.4 函数的递归调用 308

19.6 内部函数和外部函数 312

19.6.1 内部函数 312

19.6.2 外部函数 313

19.7 main()函数 314

19.8 综合应用——用截弦法求方程的根 315

19.9 高手点拨 316

19.10 实战练习 318

第20章 函数中的变量 320

20.1 局部变量与全局变量 320

20.1.1 局部变量 320

20.1.2 全局变量 321

20.2 变量的存储类别 323

20.2.1 自动类型(auto) 324

20.2.2 寄存器类型(register) 324

20.2.3 静态类型(static) 325

20.2.4 外部类型(extern) 327

20.3 综合应用——日期判断 328

20.4 高手点拨 329

20.5 实战练习 330

第21章 文件 332

21.1 文件概述 332

21.1.1 文件类型 332

21.1.2 C如何操作文件——文件指针 332

21.1.3 文件缓冲区 333

21.2 文件的打开和关闭 333

21.2.1 文件的打开——fopen()函数 333

21.2.2 文件的关闭——fclose()函数 334

21.2.3 文件结束检测——feof()函数 335

21.3 文件的顺序读写 335

21.3.1 文本文件中字符的输入/输出 335

21.3.2 文本文件中字符串的输入/输出 337

21.3.3 格式化输入/输出 339

21.3.4 二进制文件的输入/输出——数据块读写 340

21.4 文件的随机读写 342

21.5 综合应用——文件操作 343

21.6 高手点拨 345

21.7 实战练习 346

第22章 库函数概览 348

22.1 标准C库函数 348

22.2 数学函数 348

22.2.1 绝对值函数 348

22.2.2 幂函数和开平方函数 349

22.2.3 指数函数和对数函数 350

22.2.4 三角函数 350

22.2.5 取整函数和取余函数 350

22.3 字符串处理函数 351

22.3.1 字符串长度函数 351

22.3.2 字符串连接函数 352

22.3.3 字符串复制函数 353

22.3.4 字符串比较函数 353

22.3.5 字符串查找函数 354

22.3.6 字符串填充函数 355

22.4 字符处理函数 356

22.4.1 字符类型判断函数 356

22.4.2 字符大小写转换函数 357

22.5 转换和存储管理函数 358

22.5.1 转换函数 358

22.5.2 存储管理函数 359

22.6 随机函数 360

22.6.1 初识随机函数 360

22.6.2 使用随机函数 361

22.7 日期和时间处理函数 362

22.8 诊断函数 363

22.9 命令行参数 364

22.10 其他函数 365

22.10.1 exit()函数 366

22.10.2 qsort()函数 366

22.11 综合应用——猜数字游戏 367

22.12 高手点拨 369

22.13 实战练习 370

第23章 合理利用内存——位运算 372

23.1 二进制数 372

23.1.1 二进制 372

23.1.2 无符号数和有符号数 372

23.2 位运算符 372

23.2.1 按位与运算符 373

23.2.2 按位或运算符 373

23.2.3 按位异或运算符 374

23.2.4 按位取反运算符 375

23.2.5 左移运算符 375

23.2.6 右移运算符 375

23.2.7 位运算赋值运算符 376

23.2.8 位运算应用 377

23.3 位域 379

23.4 综合应用——数制转换 380

23.5 高手点拨 381

23.6 实战练习 382

第24章 结构体和联合体 384

24.1 结构体 384

24.1.1 结构体类型 384

24.1.2 定义结构体变量 385

24.1.3 初始化结构体变量 386

24.1.4 结构体变量的引用 387

24.2 结构体数组 388

24.2.1 定义结构体数组 388

24.2.2 初始化结构体数组 390

24.2.3 结构体数组元素的引用 390

24.3 结构体与函数 392

24.3.1 结构体作为函数的参数 392

24.3.2 结构体作为函数的返回值 394

24.4 联合体 395

24.4.1 联合体类型 395

24.4.2 联合体变量的定义 396

24.4.3 联合体变量的初始化 397

24.4.4 联合体变量的引用 399

24.5 结构体和联合体的区别与联系 400

24.6 综合应用——计算学生成绩 400

24.7 高手点拨 402

24.8 实战练习 403

第25章 数据管理者——数据结构 406

25.1 数据结构概述 406

25.2 线性表 406

25.2.1 顺序表 407

25.2.2 单链表 410

25.3 栈 416

25.3.1 栈的基本运算 416

25.3.2 顺序栈的类型定义 417

25.3.3 链式栈的类型定义 417

25.4 队列 417

25.4.1 队列的基本运算 418

25.4.2 顺序队列类型定义 418

25.4.3 链队列类型定义 419

25.5 二叉树 419

25.6 查找 420

25.6.1 顺序查找 420

25.6.2 折半查找 422

25.7 排序 423

25.7.1 冒泡排序法 424

25.7.2 选择排序法 425

25.7.3 插入排序法 426

25.8 综合应用——链表的反转 427

25.9 高手点拨 430

25.10 实战练习 439

第Ⅳ篇 高级应用 443

第26章 内存的快捷方式——指针 443

26.1 指针概述 443

26.1.1 指针的类型 443

26.1.2 指针所指向的类型 443

26.1.3 指针的值 443

26.1.4 指针所占内存 443

26.2 指针的算术运算 444

26.2.1 指针与整数的运算 444

26.2.2 指针与指针的运算 445

26.3 运算符&和 446

26.4 指针表达式 447

26.5 综合应用——使用指针进行排序 448

26.6 高手点拨 449

26.7 实战练习 450

第27章 指针与数组 452

27.1 数组指针 452

27.2 数组指针作为函数参数 452

27.3 指针与字符数组 453

27.4 指针数组与指针的指针 454

27.5 综合应用——报数游戏 456

27.6 高手点拨 457

27.7 实战练习 457

第28章 指针与函数 460

28.1 函数指针 460

28.1.1 函数指针的定义 460

28.1.2 函数指针的赋值 461

28.1.3 通过函数指针调用函数 461

28.2 指针函数 462

28.3 指向函数的指针作为函数参数 463

28.4 综合应用——日期的输出 465

28.5 高手点拨 466

28.6 实战练习 466

第29章 指针与字符串 468

29.1 字符串指针 468

29.1.1 创建字符串 468

29.1.2 处理字符串 469

29.1.3 输出字符串 472

29.2 字符串指针作为函数参数 472

29.3 字符指针变量与字符数组的区别 474

29.4 综合应用——“回文”问题 474

29.5 实战练习 476

第30章 指针与结构体 478

30.1 结构体指针 478

30.1.1 定义结构体指针 478

30.1.2 初始化结构体指针 478

30.1.3 使用指针访问成员 478

30.1.4 给结构体指针赋值 479

30.2 指向结构体变量的指针 480

30.3 指向结构体数组的指针 481

30.4 综合应用——创建简单链表 482

30.5 高手点拨 484

30.6 实战练习 484

第31章 指针的高级应用与技巧 486

31.1 指向指针的指针 486

31.2 void操作 487

31.3 内存操作 489

31.4 指针的传递 491

31.5 综合应用——数值的降序排列 492

31.6 高手点拨 493

31.7 实战练习 494

第Ⅴ篇 趣味题解 497

第32章 K-均值聚类算法 497

32.1 问题描述 497

32.2 问题分析及实现 497

32.2.1 问题分析 497

32.2.2 问题实现 497

32.2.3 程序运行 499

32.3 开发过程常见问题及解决 500

第33章 哥德巴赫猜想 502

33.1 问题描述 502

33.2 问题分析及实现 502

33.2.1 问题分析 502

33.2.2 问题实现 502

33.2.3 程序运行 504

33.3 开发过程常见问题及解决 504

第34章 猴子选大王游戏 506

34.1 问题描述 506

34.2 问题分析及实现 506

34.2.1 问题分析 506

34.2.2 问题实现 506

34.2.3 程序运行 507

34.3 开发过程常见问题及解决 508

第35章 迷宫求解 510

35.1 问题描述 510

35.2 问题分析及实现 510

35.2.1 问题分析 510

35.2.2 问题实现 510

35.2.3 程序运行 513

35.3 开发过程常见问题及解决 514

第36章 背包问题求解 516

36.1 问题描述 516

36.2 问题分析及实现 516

36.2.1 问题分析 516

36.2.2 问题实现 516

36.2.3 程序运行 518

36.3 开发过程常见问题及解决 518

第37章 火车车厢重排 520

37.1 问题描述 520

37.2 问题分析及实现 520

37.2.1 问题分析 520

37.2.2 问题实现 520

37.2.3 程序运行 522

37.3 开发过程常见问题及解决 522

第38章 哈夫曼编码的实现 524

38.1 问题描述 524

38.2 问题分析及实现 524

38.2.1 问题分析 524

38.2.2 问题实现 524

38.2.3 程序运行 526

38.3 开发过程常见问题及解决 526

第39章 八皇后问题的实现 528

39.1 问题描述 528

39.2 问题分析及实现 528

39.2.1 问题分析 528

39.2.2 问题实现 528

39.2.3 程序运行 530

39.3 开发过程常见问题及解决 530

第40章 商人过河游戏 532

40.1 问题描述 532

40.2 问题分析及实现 532

40.2.1 问题分析 532

40.2.2 问题实现 532

40.2.3 程序运行 535

40.3 开发过程常见问题及解决 536

第41章 K阶斐波那契序列的实现 538

41.1 问题描述 538

41.2 问题分析及实现 538

41.2.1 问题分析 538

41.2.2 问题实现 538

41.2.3 程序运行 539

41.3 开发过程常见问题及解决 540

第42章 最短路径的实现 542

42.1 问题描述 542

42.2 问题分析及实现 542

42.2.1 问题分析 542

42.2.2 问题实现 542

42.2.3 程序运行 543

42.3 开发过程常见问题及解决 544