目 录
资源下载
基础理论篇
第 1章一切从零开始 ——程序设计和 C语言概述
····2
1.1程序设计和编程语言 ·3
1.2 C语言之旅 ···5
1.3 C语言集成开发环境 Visual Studio 2010和 EasyX图形库·····7
1.4编写运行一个 HelloWorld程序······8
1.5数制及进制转换 10
1.6 C语言关键字 ····13 实验 ···15 小结 ···19 习题 ···20 项目拓展20 探索与扩展:影片播放时数据的传输··21
第 2章程序的基础 ——数据类型、运算符和表达式 ···23
2.1数据类型概述
······24
2.1.1 项目引入 24
2.1.2 数据类型 25
2.2常量和变量
···26
2.2.1 常量·26
2.2.2 变量·27
30
2.3整型数据
2.3.1 整型数据的概念 ··30
2.3.2 整型数据的存储 ··30
2.3.3 整型数据的表示 ··31
2.4浮点型数据
···32
2.4.1 浮点型数据的概念 ·····32
2.4.2 浮点型数据的分类、存储及变量的定义 ·····32
2.4.3 浮点型数据的运算及精度 ·33
2.5字符型数据 ·34
2.5.1 字符型数据的概念 ·····34
2.5.2 字符型数据的存储和表示 ·35
2.6布尔类型数据 ····36
2.6.1 布尔类型 36
2.6.2 布尔类型示例 ······36
2.7运算符及表达式
··36
2.7.1 运算符和表达式 ··36
2.7.2 算术运算符及表达式 ··38
2.7.3 赋值运算符 ···39
2.7.4 条件运算符(三目运算符) ····39
2.7.5 关系运算符 ···40
2.7.6 逻辑运算符 ···40
2.7.7 位运算符 40
2.7.8 逗号运算符 ···40
2.7.9 指针运算符 ···41
2.7.10求字节数运算符 41
2.8基本数据类型之间的赋值 ······41 实验 ···42 小结 ···43 习题 ···43 探索与扩展:关于新质生产力44
第 3章进行到底 ——顺序结构 ···46
3.1项目引入——字符的显示 ······47
3.2 C语句··47
3.2.1 C语句的作用和分类 ··47
3.2.2 赋值语句 49
3.3单个字符的输出输入 ······51
3.3.1 字符输出函数 putchar( ) ····51
3.3.2 字符输入函数 getchar( ) ····52
3.4格式输出输入
······53
3.4.1 格式输出函数 printf( ) 53
3.4.2 格式输入函数 scanf( ) 56
3.5什么是算法
···59
目 录 V
3.5.1 算法举例 59
3.5.2 算法的描述 ···61 实验 ···64 小结 ···65 习题 ···66 项目拓展:彩色泡泡的显示 ···67 探索与扩展:关于数据和人工智能······68
第 4章程序的判断力 ——选择结构 ···69
4.1项目引入——字符的选择
·70
4.2关系运算和逻辑运算 ······70
4.2.1 关系运算符 ···70
4.2.2 关系表达式 ···71
4.2.3 逻辑运算符 ···71
4.2.4 逻辑表达式 ···73
4.3 if语句实现判断
···74
4.3.1 if语句举例 ····74
4.3.2 if语句一般形式 ···75
4.3.3 条件运算符 ···80
4.3.4 if语句的嵌套 81
4.4多路开关 switch语句······82
4.5选择结构综合举例 ···84 实验 ···88 小结 ···89 习题 ···90 项目拓展:泡泡的颜色自选 ···91 探索与扩展:栈与队列——关于浏览器中的“前进”和“后退”按钮 ···93
第 5章不必亲手愚公移山 ——循环结构 ··94
5.1项目引入——字符的运动和反弹
···95
5.2 while语句实现循环
····95
···975.3 do…while语句实现循环
5.4 for语句实现循环
·98
5.5循环的嵌套
·101
5.6改变循环的执行状态
103
5.6.1 break语句···103
5.6.2 continue语句·····104
5.7循环结构综合举例 ·107 实验 · 111 小结 · 112 习题 · 112 项目拓展:彩色泡泡的跳动 · 114 探索与扩展:串——关于中国文化中的“诗歌” · 115
第 6章批量处理数据 ——数组 · 116
6.1项目引入 ——多个字符在平面中的反弹· 117
6.2一维数组 ··· 118
6.2.1 一维数组的定义
··· 118
6.2.2 引用一维数组元素
······ 118
6.2.3 一维数组的初始化
······ 119
6.2.4 一维数组程序举例 ···120
6.3二维数组 ···123
6.3.1 二维数组的定义
···123
6.3.2 引用二维数组的元素
··124
6.3.3 二维数组的初始化
······125
6.3.4 二维数组程序举例 ···126
6.4字符及字符串数组 ·128
6.4.1 字符数组的定义
···128
6.4.2 字符数组的初始化
······128
·····129
6.4.3 引用字符数组中的元素
6.4.4 字符串和字符串结束标志
·129
6.4.5 字符数组的输入输出
··130
6.4.6 使用字符串处理函数
··131
6.4.7 字符数组应用举例 ···136 实验一 · 136 实验二 · 137 实验三 · 138 实验四 · 138 小结 · 139 习题 · 140 项目拓展:多个彩色泡泡的反弹·140 探索与扩展:使用数组实现线性表,创建搜索引擎·····142
第 7章程序模块化的手段 ——函数·144
7.1项目引入——模块化彩色泡泡项目 ··145
7.2函数概述
·····145
7.3函数的定义和调用
···146
7.3.1 为什么要定义函数 ···146
目 录 VII
7.3.2 函数的定义 ·147
7.3.3 函数的调用 ·147
7.4函数声明
·····149
7.5函数的嵌套调用
150
7.6函数的递归调用
152
7.7数组作为函数参数
···153
7.7.1 数组元素作函数实参 154
7.7.2 数组名作函数实参 ···154
7.8变量的作用域及存储类别
······155
7.9常用函数
·····156 实验一 · 156 实验二 · 157 实验三 · 158 实验四 · 158 小结 · 159 习题 · 159 项目拓展:彩色泡泡项目中加入音乐和图片··160 探索与扩展:排序功能——党的百年史诗······162
第 8章闪耀的星星 ——指针·····164
···165
8.1地址和指针的基本概念
8.1.1 什么是地址和指针 ···165
8.1.2变量的访问 ·166
8.2指针变量
·····167
8.2.1 定义指针变量 ····167
8.2.2 引用指针变量 ····168
8.2.3 指针变量作为函数参数 ···170
8.3数组与指针
·173
8.3.1 数组元素的指针 173
8.3.2 在引用数组元素时指针的运算 ·····173
8.3.3 通过指针引用数组元素 ···174
8.3.4 用数组名作函数参数 176
8.3.5 通过指针引用多维数组 ···180
8.4字符串与指针
····183
8.4.1 字符串的引用方式 ···183
8.4.2 字符指针作函数参数 185
8.4.3 使用字符指针变量和字符数组的比较 186
8.5函数与指针 ······189
8.6动态内存分配 ··191 8.6.1 内存的动态分配 191
8.6.2 建立内存的动态分配 191
8.6.3 void指针类型····192
8.7 main( )函数参数 ·····192 实验一 · 193 实验二 · 195 实验三 · 195 实验四 · 197 小结 · 198 习题 · 198 项目拓展:彩色泡泡项目中加入键盘交互······199 探索与扩展:树——关于人机对弈····201
第 9章我的类型我做主 ——自定义数据类型
·203
9.1项目引入——用结构类型定义泡泡信息 ·204
9.2结构体类型变量 ·····205
9.2.1 结构体类型变量的定义 ···205
9.2.2 结构体变量的引用 ···206
9.3结构体数组和结构体指针 ····208
9.3.1 结构体数组 ·208
9.3.2 结构体指针 ·209
9.4共用体类型 ······210
9.5枚举类型 ···212
9.6用 typedef自定义类型 ··215
9.7链表····216
9.7.1 单链表 ··216
9.7.2 存储空间处理的库函数 ···218
9.7.3 单链表的基本操作 ···219 实验 ·221 小结 ·222 习题 ·222 探索与扩展:关于数字导航地图·224
第 10章“位”得根深蒂固——位运算
·····225
10.1 位运算符和位运算 ······226
10.1.1 位运算操作 ····226
10.1.2 位运算操作举例 ···231
10.2 位段··232 实验 · 234
目 录 IX
小结 ·235 习题 ·235 探索与扩展:家谱···235
第 11章数据的最终归属 ——文件 ·····237
11.1文件概述 ·238
11.1.1 文件类型 ·238
11.1.2 文件指针 ·239
11.1.3 文件的缓冲区 240
11.2文件打开与关闭 ···240
11.2.1 文件的打开操作 ····240
11.2.2 文件的关闭操作 ····241
11.3顺序读写文件 242
11.3.1 字符的读写 ····242
11.3.2 字符串的读写 243
11.3.3 数据块的读写 244
11.3.4 格式化读写函数 ····246
11.4随机读写文件 247 实验 · 249 小结 · 249 习题 · 250 探索与扩展:查找···251
应用进阶篇
第 12章综合应用项目 ···254
12.1 贪吃蛇项目 ····256
12.2 人机对弈五子棋项目 ··261
附录 A大厂笔试、面试题 ··275
A.1面试官谈面试和基础知识 ···276
A.2基础概念和语句真题 ···278
A.3数组和指针真题 ····286
A.4算法编程真题 ·289
附录 BC语言运算符优先级一览表·296
附录 C十进制 ASCII表·····299
参考文献·····301