第一篇基础语法篇
第1章C语言初识
1.1编程入门2
1.1.1什么是程序2
1.1.2什么是计算机语言2
1.1.3什么是编译2
1.2编辑器、编译器与集成开发环境3
1.2.1什么是编辑器3
1.2.2什么是编译器3
1.2.3什么是集成开发环境(IDE)4
1.2.4IDE的比较与选择4
1.2.5VisualStudio2012下载与安装4
1.3编写第一个C语言程序4
1.3.1新建第一个解决方案5
1.3.2添加.c文件7
1.3.3编辑C语言程序8
1.3.4生成可执行程序9
1.3.5查看编译结果9
1.3.6运行C语言程序10
1.3.7项目过期提示10
1.3.8生成错误提示11
1.3.9常见错误11
1.3.10设置行号显示12
1.4解析第一个C语言程序13
1.4.1什么是控制台程序13
1.4.2什么是窗口程序14
1.4.3解析C语言程序14
1.5课后习题15
1.6习题答案15
第2章数据类型
2.1常量与变量16
2.1.1常量16
2.1.2变量18
2.2标识符与关键字18
2.2.1标识符18
2.2.2关键字19
2.3基本数据类型19
2.3.1数据类型引入19
2.3.2整数类型20
2.3.3浮点数类型21
2.3.4字符型22
2.3.5转义字符25
2.3.6字符与字符串的关系29
2.3.7printf与数据类型29
2.4注释30
2.4.1行注释30
2.4.2块注释31
2.5变量详解32
2.5.1定义变量32
2.5.2引用变量33
2.5.3定义多个变量33
2.5.4变量的本质34
2.5.5语句与语句块35
2.5.6顺序结构36
2.6变量需要注意的问题37
2.6.1先定义变量,再使用变量37
2.6.2变量定义必须在引用之前37
2.6.3变量重名问题38
2.6.4局部变量39
2.6.5局部变量的初始化43
2.6.6经典案例——交换变量45
2.7课后习题48
2.8习题答案48
第3章运算符与表达式
3.1算术运算符和算术表达式50
3.1.1算术运算符50
3.1.2算术表达式53
3.2赋值运算符和赋值表达式54
3.2.1赋值运算符54
3.2.2赋值表达式54
3.3复合赋值运算符和复合赋值表达式55
3.3.1复合赋值运算符55
3.3.2复合赋值表达式56
3.4自增、自减运算符57
3.4.1自增运算符57
3.4.2自增运算表达式57
3.4.3自减运算符59
3.4.4自减运算表达式59
3.5强制类型转换运算符60
3.6关系运算符与关系表达式61
3.6.1关系运算符61
3.6.2关系表达式62
3.7逻辑运算符与逻辑表达式63
3.7.1逻辑运算符63
3.7.2逻辑表达式64
3.8逻辑运算的“陷阱”:短路与、短路或65
3.8.1短路与运算65
3.8.2短路或运算66
3.9条件运算符与条件表达式66
3.9.1条件运算符67
3.9.2条件表达式67
3.10求字节数运算符68
3.11课后习题69
3.12习题答案70
第4章选择结构
4.1if语句71
4.1.1if语句的第一种形式71
4.1.2if语句的第二种形式73
4.1.3if语句的第三种形式74
4.1.4if语句常见错误76
4.1.5if案例—判断季节77
4.1.6if语句嵌套79
4.1.7if语句与三元运算符81
4.2switch语句81
4.2.1switch语句一般形式81
4.2.2switch语句优化83
4.2.3switch语句常见错误84
4.2.4关于default的几点说明87
4.3课后习题88
4.4习题答案89
第5章循环结构
5.1while循环语句91
5.1.1while循环应用92
5.1.2while循环常见错误93
5.2do…while循环语句94
5.2.1do…while循环应用95
5.2.2do…while常见错误96
5.2.3do…while与while的区别96
5.3for循环语句97
5.3.1for循环应用98
5.3.2for循环常见错误99
5.3.3for循环其他几种写法101
5.3.4for循环嵌套102
5.4改变循环执行状态103
5.4.1break语句104
5.4.2continue语句107
5.4.3break语句与continue语句对比108
5.5课后习题108
5.6习题答案109
第6章函数初识
6.1函数引入111
6.1.1定义函数111
6.1.2调用函数112
6.1.3函数的实参与形参赋值113
6.1.4函数定义、调用注意事项114
6.1.5函数中的局部变量117
6.1.6函数参数的传递方式:值传递117
6.1.7函数返回值118
6.1.8无返回值函数中的return语句120
6.1.9函数调用的其他形式121
6.2函数案例122
6.2.1案例1:打印整数1~n的数值122
6.2.2案例2:计算整数1~n的累加和123
6.2.3案例3:求两个整数最大值124
6.2.4案例4:计算矩形面积124
6.2.5案例5:计算圆面积125
6.3课后习题126
6.4习题答案127
第7章数组
7.1一维数组128
7.1.1定义一维数组128
7.1.2一维数组初始化128
7.1.3引用一维数组元素129
7.1.4一维数组其他初始化方式130
7.2数组遍历与常见错误132
7.2.1一维数组遍历132
7.2.2sizeof计算数组元素字节数132
7.2.3sizeof计算数组总字节数133
7.2.4sizeof计算数组长度134
7.2.5数组常见错误分析135
7.3字符数组137
7.3.1如何定义字符数组137
7.3.2字符数组初始化137
7.3.3字符串与字符串结束标志138
7.3.4'\\0'使用时的注意事项139
7.3.5sizeof计算字符串长度140
7.3.6strlen计算字符串有效长度141
7.3.7中文字符串142
7.3.8字符串元素遍历143
7.3.9char*方式引用字符串144
7.3.10char*类型数组简介144
7.4数组案例145
7.4.1案例1:计算两个等长数组元素和145
7.4.2案例2:查找数组中最大值146
7.4.3atoi字符串转整型函数147
7.4.4sprintf字符串格式化函数147
7.5课后习题149
7.6习题答案150
第8章如鹏游戏引擎初识
8.1配置游戏开发环境152
8.1.1创建第一个游戏项目152
8.1.2分析第一个游戏代码154
8.1.3小试牛刀—修改游戏代码154
8.1.4查看yzkgame.h头文件157
8.2游戏引擎基础知识157
8.2.1什么是像素157
8.2.2游戏窗口坐标157
8.2.3如何描述矩形158
8.2.4什么是图层158
8.3课后习题159
8.4习题答案159
第9章常用游戏元素介绍
9.1游戏开发核心函数介绍160
9.1.1pauseGame设置游戏暂停时间函数160
9.1.2setGameSize设置窗口尺寸函数161
9.1.3setGameTitle设置窗口标题函数161
9.2文本元素162
9.2.1createText创建文本函数162
9.2.2setTextPosition设置文本显示位置函数163
9.2.3setTextFontSize设置文本字体大小函数164
9.2.4setText修改文本内容函数165
9.2.5hideText隐藏文本函数166
9.2.6showText显示文本函数167
9.2.7操作多个文本元素168
9.2.8文本元素常见错误170
9.2.9文本案例——判断年龄172
9.2.10文本案例——超级玛丽启动界面173
9.3图片元素175
9.3.1查看图片格式175
9.3.2快速转换图片格式175
9.3.3图片格式转换误区176
9.3.4图片文件夹存放位置177
9.3.5createImage创建图片元素函数178
9.3.6setImagePosition设置图片显示位置函数179
9.3.7setImageSource修改显示图片函数180
9.3.8hideImage隐藏图片函数181
9.3.9showImage显示图片函数182
9.3.10常见错误183
9.3.11图片案例——性别判断187
9.3.12图片案例——超级玛丽启动界面188
9.4精灵元素189
9.4.1精灵动作189
9.4.2精灵文件夹存放位置190
9.4.3createSprite创建精灵函数191
9.4.4playSpriteAnimate播放精灵动作函数192
9.4.5setSpritePosition设置精灵显示位置函数193
9.4.6hideSprite隐藏精灵函数194
9.4.7showSprite显示精灵函数195
9.4.8setSpriteFlipX精灵在x轴翻转函数196
9.4.9setSpriteFlipY精灵在y轴翻转函数197
9.4.10getSpriteHeight获取精灵高度函数199
9.4.11getSpriteWidth获取精灵宽度函数200
9.4.12精灵案例——精灵切换动作201
9.4.13精灵案例——精灵向右移动202
9.4.14精灵案例——精灵向右上方移动203
9.5课后习题205
9.6习题答案205
第10章游戏开发基础
10.1文本案例206
10.1.1呼吸字体206
10.1.2倒计时208
10.1.3秒表209
10.2精灵案例215
10.2.1精灵走圈215
10.2.2桌面弹球218
10.3课后习题221
10.4习题答案221
第11章游戏开发高级
11.1键盘输入功能223
11.1.1getPressedKeyCode获取按键函数223
11.1.2案例——按键控制精灵移动225
11.2随机数227
11.2.1生成[0,n)之间的随机数229
11.2.2生成[m,n)之间的随机数230
11.2.3封装随机数生成函数230
11.3吃金币游戏232
11.3.1吃金币游戏—吃金币232
11.3.2吃金币游戏—显示分数238
11.3.3吃金币游戏—吃到炸弹游戏结束244
11.3.4吃金币游戏—随机生成金币位置250
11.4课后习题253
11.5习题答案253
第12章指针初识
12.1指针知识先导258
12.1.1内存空间与内存地址258
12.1.2探索内存259
12.1.3指针变量:保存内存地址的变量262
12.1.4指针变量定义与初始化263
12.1.5引用指针变量263
12.1.6指针变量作函数参数:交换两个变量的值265
12.1.7指针变量作函数参数:获取三位整数的个、十、百位268
12.1.8scanf获取输入数据函数269
12.2数组与指针271
12.2.1数组元素地址初识272
12.2.2数组元素地址深入分析274
12.2.3数组名与数组首元素地址276
12.2.4指针加、减运算276
12.2.5数组作函数参数278
12.2.6*(a+i)与a[i]等效280
12.2.7查找数组元素最大值281
12.3字符串与指针282
12.3.1字符串的引用与存储282
12.3.2字符串长度与字符串有效长度284
12.3.3自定义strlen函数的多种写法286
12.4字符串处理函数288
12.4.1strcmp字符串比较函数288
12.4.2strcpy字符串复制函数289
12.4.3memcpy内存复制函数290
12.4.4memcpy与strcpy的区别291
12.4.5atof字符串转浮点型函数291
12.5课后习题292
12.6习题答案292
第13章内存管理
13.1栈区与堆区294
13.1.1栈内存294
13.1.2栈内存注意事项295
13.1.3堆内存296
13.1.4堆内存注意事项297
13.1.5内存分配298
13.1.6返回函数内部数据的三种方法299
13.1.7为什么要初始化内存301
13.1.8memset内存初始化函数303
13.1.9案例——分割文件名与扩展名305
13.2结构体307
13.2.1结构体307
13.2.2定义结构体变量308
13.2.3初始化、引用结构体变量309
13.2.4结构体类型大小311
13.2.5结构体指针311
13.2.6typedef类型另起名函数313
13.2.7结构体复制315
13.3课后习题316
13.4习题答案316