《Hello C 语言》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:郑赟,郑洪清编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121317460
  • 页数:351 页
图书介绍:本书分3部分。第一部分是快速入门:通过设计一批浅显易懂、有趣新颖的例子,将计算机编程需要的概念与知识点串起来,让大家明白编程是什么,编程需要用到哪些概念;第二部分是知识总结:在第一部分的基础上,对知识进行深入讲解与总结,让读者彻底明白编程中出现各种问题的原因;第三部分是项目进阶:通过前两部分的学习,进一步引入新的更难的项目,让读者进一步领会、应用编程知识。

第一部分 轻松入门 2

第1章 C语言编程环境搭建 2

1.1 编程工具选择 2

1.2 Dev-C++工具的下载与安装 2

1.3 创建一个C文件 5

1.4 编译一个C文件 7

1.5 改变字体大小的设置 9

第2章 初识C语言 11

2.1 掀起C语言的盖头来 11

2.2 写给女朋友的一封情诗 14

2.3 送你一束玫瑰花 14

2.4 绚丽的动画——女朋友数玫瑰 16

2.5 小结 19

2.6 练习 19

第3章 减少重复操作——循环语句 21

3.1 循环的描述——循环三要素 21

3.2 帮你计数的人——循环变量 22

3.2.1 变量的定义 22

3.2.2 变量的输出 23

3.3 循环是否达到终值 23

3.3.1 比较运算符 23

3.3.2 逻辑运算符 24

3.4 时刻变化着的循环——循环增量 25

3.5 三种循环语句 25

3.5.1 for循环语句 25

3.5.2 while循环语句 26

3.5.3 do-while循环语句 26

3.6 女朋友数玫瑰——循环版 27

3.7 几何图形有学问 29

3.7.1 实心长方形 29

3.7.2 空心长方形 30

3.7.3 直角三角形 31

3.7.4 菱形 31

3.8 数列求和也容易 32

3.9 送你999朵玫瑰花 33

3.10 三种循环语句的区别 36

3.11 死循环的各种写法 37

3.12 循环中的特殊情况——continue、break与goto 38

3.13 小结 40

3.14 练习 42

第4章 分情况处理——分支语句 43

4.1 爱情心理测试介绍 43

4.2 输入函数 43

4.3 分支语句 44

4.4 爱情心理测试 46

4.4.1 单次测试版 46

4.4.2 循环测试版 47

4.4.3 循环版本的问题 49

4.5 测测女朋友值多少钱 49

4.6 猜数游戏 52

4.7 猜数游戏的问题——随机数种子 53

4.8 石头剪刀布——猜拳游戏 54

4.8.1 单局猜拳游戏 54

4.8.2 多局猜拳游戏 55

4.9 多路开关好处多——switch语句 57

4.10 switch语句的运行过程 60

4.11 if-else语句的运行过程 62

4.12 年龄的秘密 65

4.13 小结 69

4.14 练习 70

第5章 制造自己的工具——函数 72

5.1 内容变化的重复 72

5.2 工欲善其事,必先利其器——函数的概念 73

5.3 造一把利器——函数的定义 74

5.4 女朋友数玫瑰——函数版 75

5.5 取回新产品——函数的返回值 76

5.6 函数注意事项 78

5.7 有用的定位函数 79

5.8 小球横向滚动 80

5.9 小球弹跳游戏 83

5.9.1 游戏界面绘制 83

5.9.2 小球移动反向逻辑 85

5.10 全局变量与局部变量 86

5.11 修改小球弹跳的速度 87

5.12 两个小球弹跳游戏 88

5.12.1 重复代码实现方式 88

5.12.2 函数版本实现方式 90

5.13 函数参数的传递机制 92

5.13.1 函数参数的值传递机制 92

5.13.2 程序调试(debug) 93

5.13.3 指针的概念 97

5.13.4 指针做函数参数 97

5.13.5 指针总结 99

5.14 小结 100

5.15 练习 101

第6章 封装相关数据——结构体 103

6.1 结构体的概念 103

6.2 小球弹跳的结构体版本 105

6.3 掷骰子游戏 106

6.3.1 游戏介绍与分析 106

6.3.2 画骰子边框 107

6.3.3 画骰子点数 107

6.3.4 画出骰子并提示玩家输入选择 109

6.3.5 骰子跳动与输赢判断 110

6.4 100个小球弹跳 112

6.4.1 数组的概念 112

6.4.2 100个小球弹跳 113

6.5 小结 114

6.6 练习 115

第7章 组合类型比较——数组与结构体 116

7.1 数组与结构体的区别 116

7.2 数组的常用操作 118

7.2.1 遍历数组 118

7.2.2 数组元素累加 118

7.2.3 数组添加元素 118

7.2.4 数组删除元素 119

7.2.5 寻找数组的最值 119

7.2.6 冒泡排序 120

7.2.7 冒泡排序改进 122

7.2.8 选择排序 122

7.3 猴子选大王 123

7.4 全民打飞机 125

7.4.1 游戏界面开发 125

7.4.2 画飞机 127

7.4.3 飞机移动 127

7.4.4 键盘操控飞机 128

7.4.5 设计子弹 129

7.4.6 子弹产生与消失 130

7.4.7 怪物的产生与消失 132

7.4.8 碰撞检测 134

7.5 小结 136

7.6 练习 136

第8章 数组的数组——二维数组 138

8.1 二维数组的概念 138

8.2 二维数组的初始化 139

8.3 一份成绩单 140

8.4 螺旋矩阵 141

8.5 练眼力 144

8.6 井字棋 146

8.6.1 游戏介绍与界面搭建 146

8.6.2 棋子信息存储 147

8.6.3 下棋逻辑设计 147

8.6.4 判断游戏结束逻辑 148

8.6.5 判断输赢逻辑 149

8.6.6 手动下棋操作 150

8.6.7 智能自动下棋逻辑 152

8.7 男女的婚姻匹配问题 153

8.7.1 问题描述 153

8.7.2 数据存储于初始化 154

8.7.3 算法描述 155

8.7.4 main函数实现 157

8.8 小结 158

8.9 练习 158

第9章 无处不在的字符串 160

9.1 字符串的概念 160

9.2 字符串的常用操作 161

9.3 字符串反转 163

9.4 字符串压缩算法 164

9.4.1 压缩逻辑设计 164

9.4.2 整数转字符串 165

9.5 删除重复字符 167

9.5.1 普通删除法 167

9.5.2 快速删除法 168

9.6 测测你的名字在古代是什么职位 169

9.7 自定义字符串的常用操作 170

9.8 小结 172

9.9 练习 172

第二部分 知识进阶 177

第10章 数据类型与变量 177

10.1 变量的定义与初始化 177

10.2 变量的大小 177

10.3 更多数据类型 178

10.4 各种类型的范围 179

10.5 变量在内存中的样子 180

10.6 类型的相互转换 181

10.7 数组变量及其大小 183

10.8 结构体变量及其大小 183

10.8.1 字符变量与int型变量在内存中的对齐方式 184

10.8.2 字符变量与double型变量在内存中的对齐方式 185

10.8.3 结构体内部变量的对齐方式 186

10.8.4 结构体的大小必须是最大对齐模数的整数倍 188

10.8.5 嵌套结构体的大小 189

10.8.6 结构体大小计算法则 190

10.9 指针变量及其大小 190

10.10 枚举变量及其大小 191

10.11 共用体变量及其大小 192

10.12 小结 194

10.13 练习 195

第11章 运算符 197

11.1 各种运算符 197

11.2 优先级与结合性 198

11.3 i++与++i 199

11.4 逻辑运算符的短路特性 200

11.5 位运算符 201

11.5.1 位运算符介绍 201

11.5.2 位运算符的应用 202

11.5.3 位运算与枚举类型 204

11.5.4 位段及其好处 205

11.5.5 位操作与位段综合应用 208

11.5.6 位段与共用体的综合应用 212

11.6 小结 213

11.7 练习 213

第12章 指针 215

12.1 指针是什么 215

12.2 各种类型指针 216

12.2.1 基本类型变量的指针 216

12.2.2 结构体变量的指针 216

12.2.3 共用体变量的指针 217

12.2.4 数组的指针 217

12.2.5 函数的指针 217

12.2.6 指针的指针 218

12.2.7 void指针 218

12.3 指针的运算 219

12.3.1 指针只能与整数做加减运算 219

12.3.2 相同类型的指针可以做减法与比较运算 221

12.4 指针与数组 221

12.4.1 数组名是一个指针 221

12.4.2 数组名与数组地址的区别 222

12.4.3 数组做函数参数就转化为指针 223

12.5 指针与字符串 225

12.6 指针与函数 226

12.6.1 函数指针 226

12.6.2 函数指针数组 227

12.6.3 指针作为函数参数 227

12.6.4 返回指针值的函数 228

12.7 指针与const修饰词 229

12.7.1 const修饰普通变量 229

12.7.2 const修饰指针变量 229

12.7.3 const修饰函数的形参 230

12.7.4 const与面试题 230

12.8 指针与链表 231

12.8.1 链表的概念 231

12.8.2 链表的构造 232

12.8.3 链表遍历 232

12.8.4 插入节点 233

12.8.5 删除节点 234

12.8.6 链表反转 236

12.8.7 遍历一次链表找到链表的中间元素 236

12.9 小结 237

12.10 练习 237

第13章 C程序是怎么使用内存的 241

13.1 程序的运行过程 241

13.2 全局变量 243

13.3 静态变量 246

13.4 字符常量 248

13.5 动态内存管理 249

13.5.1 malloc进行动态内存分配 249

13.5.2 把英文句子按单词反转 250

13.5.3 ealloc进行动态内存分配 253

13.5.4 realloc进行动态内存分配 254

13.5.5 可变长数组 255

13.5.6 malloc与free的基本原理 256

13.6 C程序运行的4个内存区域 257

13.7 递归函数与栈 258

13.7.1 递归函数的定义 258

13.7.2 递归函数的运行过程 259

13.7.3 递归函数的应用——全排列 260

13.7.4 递归函数的应用——快速排序法 262

13.8 小结 264

13.9 练习 264

第14章 编译预处理 268

14.1 C程序的编译过程 268

14.2 头文件中装的是什么 269

14.3 项目分多个文件 271

14.4 include命令 273

14.5 头文件的正规写法 276

14.6 define命令 277

14.6.1 字符串宏替换 277

14.6.2 空宏体的宏 278

14.6.3 宏常量与const常量的区别 278

14.6.4 带参数的宏 279

14.6.5 #define命令的注意事项 279

14.7 条件编译 280

14.8 typedef命令 281

14.9 typedef的定义过程 283

14.10 define与typedef的区别 284

14.11 小结 284

14.12 练习 285

第15章 文件处理 287

15.1 文件与流 287

15.2 访问文本文件 288

15.2.1 打开与关闭文本文件 288

15.2.2 写入文本文件 289

15.2.3 读取文本文件 290

15.2.4 为文件追加内容 291

15.2.5 其他读取文本文件的方法 292

15.2.6 其他写入文本文件的方法 293

15.2.7 文本文件读写的问题 295

15.3 文本文件与二进制文件的区别 295

15.4 块方式读写文件 296

15.5 文件定位与随机读写 297

15.6 随机读写应用 298

15.7 总结 300

15.8 练习 300

第三部分 项目进阶 302

第16章 贪吃蛇 302

16.1 游戏介绍 302

16.2 游戏元素设计 302

16.3 画游戏界面 303

16.4 产生食物 304

16.5 产生蛇 304

16.6 画蛇 305

16.7 游戏逻辑设计 305

16.8 检查方向 306

16.9 蛇游动逻辑 307

16.10 蛇吃食物 308

16.11 游戏结束判断 308

16.12 删除两节蛇的身体 310

16.13 反转蛇的身体 311

16.14 反转蛇的移动方向 311

第17章 俄罗斯方块 313

17.1 游戏介绍 313

17.2 方块设计 313

17.3 打印游戏界面 315

17.4 游戏界面的数据 316

17.5 主函数与头文件 316

17.6 方块的产生 317

17.7 方块的移动 318

17.8 判断方块下方是否有空 319

17.9 判断方块是否到顶部 321

17.10 键盘操控逻辑 322

17.11 左移方块 324

17.12 右移方块 325

17.13 翻转方块 325

17.14 消除方块 327

17.15 计算得分 329

17.16 翻转方块的问题 329

第18章 围住神经猫 332

18.1 游戏介绍 332

18.2 游戏元素设计 333

18.3 初始界面绘制 334

18.4 移动光标进行封堵操作 335

18.5 寻找每个点周围的点 338

18.6 猫随机移动 341

18.7 猫智能移动 343

18.8 广度搜索算法 343

18.9 回溯找猫的位置 345

附录 348