本书分为12个章节,首先介绍了程序设计基础思想,其次介绍了C语言的基础语法,包括基础数据类型、流程控制、数组、函数、指针、字符串、结构体,之后介绍了预处理、文件操作等知识,然后通过综合项目,对前面所述知识进行回顾、总结与应用,最后介绍了程序开发中常见的数据结构(包括链表、栈、队列)及其相关操作。
1.传智播客经典教材升级,配套教学视频、PPT、课后习题答案、源代码、教学大纲、教学设计等丰富资源。
2.本书在上一版的基础上,对内容做了大幅的优化,选用了全新的C语言开发工具Dev-C++,其便捷小巧、简单易学的特点,更适合初学者快速学习C语言。
3.全书增加、改进了大量案例代码,并将代码放在二维码中,同时方便读者阅读和使用。
4.较上一版,全书体系更加合理、逻辑性更强,文字更通俗易懂。
黑马程序员,传智播客旗下高端IT教育品牌,它是由中国Java培训先驱张孝祥老师发起,联合全球最大的中文IT社区CSDN、中关村软件园共同创办的一家专业教育机构。办学至今,我们一直坚守着“为千万人少走弯路而著书,为中华软件之崛起而讲课”的办学理念,坚持培养优秀软件应用工程师的宏伟目标,在累计培养的十万余名学员中,其中90%的学员均已在北、上、广等一线城市高薪就业。
第1章 程序设计与C语言 1
1.1 计算机语言 1
1.2 程序设计与算法 2
1.2.1 算法——程序的灵魂 2
1.2.2 算法的表示 3
1.3 C语言概述 4
1.3.1 C语言的发展史 5
1.3.2 C语言的标准 5
1.3.3 C语言的应用领域 5
1.4 开发环境搭建 7
1.4.1 主流开发工具介绍 7
1.4.2 安装Dev-C++ 8
1.5 编写Hello World 10
1.5.1 编写第一个程序Hello World 10
1.5.2 C程序编译运行原理 13
1.6 阶段案例——我的名片 14
1.7 本章小结 14
1.8 习题 14
第2章 数据类型与运算符 16
2.1 关键字和标识符 16
2.1.1 关键字 16
2.1.2 标识符 17
2.2 常量与变量 18
2.2.1 常量 18
2.2.2 变量 18
2.3 数据类型 19
2.3.1 基本类型 20
2.3.2 构造类型 24
2.3.3 指针类型 26
2.3.4 类型转换 27
2.4 运算符与表达式 28
2.4.1 运算符与表达式的概念 28
2.4.2 算术运算符与算术表达式 29
2.4.3 关系运算符与关系表达式 31
2.4.4 逻辑运算符与逻辑表达式 31
2.4.5 赋值运算符与赋值表达式 33
2.4.6 条件运算符与条件表达式 33
2.4.7 位运算符 34
2.4.8 sizeof运算符 36
2.5 运算优先级 36
2.6 阶段案例——加密 38
2.7 阶段案例——数字反转 38
2.8 本章小结 39
2.9 习题 39
第3章 流程控制 41
3.1 程序流程图 41
3.2 顺序结构 42
3.3 选择结构 42
3.3.1 if条件语句 42
3.3.2 switch条件语句 46
3.4 阶段案例——自动贩卖机 48
3.5 循环结构 48
3.5.1 while循环 48
3.5.2 do…while循环 49
3.5.3 for循环 50
3.5.4 循环嵌套 51
3.5.5 跳转语句 52
3.6 阶段案例——薪水问题 53
3.7 本章小结 54
3.8 习题 54
第4章 数组 57
4.1 什么是数组 57
4.2 一维数组 58
4.2.1 一维数组的定义与初始化 58
4.2.2 一维数组的访问 59
4.2.3 数组元素排序 60
4.3 阶段案例——双色球 63
4.4 二维数组 64
4.4.1 二维数组定义与初始化 64
4.4.2 二维数组的访问 66
4.5 阶段案例——杨辉三角 67
4.6 多维数组 68
4.7 本章小结 69
4.8 习题 69
第5章 函数 71
5.1 初识函数 71
5.1.1 函数的定义 71
5.1.2 格式化输入/输出 75
5.2 函数调用 76
5.2.1 函数调用方式 76
5.2.2 嵌套调用 77
5.2.3 递归调用 78
5.3 阶段案例——汉诺塔 79
5.4 外部函数与内部函数 80
5.4.1 外部函数 80
5.4.2 内部函数 81
5.5 局部变量与全局变量 82
5.5.1 局部变量 82
5.5.2 全局变量 83
5.6 认识静态库与动态库 84
5.7 阶段案例——体测成绩
判定 85
5.8 本章小结 87
5.9 习题 87
第6章 指针 89
6.1 指针的概念 89
6.2 指针运算 91
6.2.1 取址运算符 91
6.2.2 取值运算符 91
6.2.3 常用指针运算 92
6.3 指针与数组 93
6.3.1 指针与一维数组 94
6.3.2 指针与二维数组 95
6.4 阶段案例——幻方 97
6.5 指针与函数 99
6.5.1 指针变量作为函数参数 99
6.5.2 函数指针 101
6.5.3 回调函数 103
6.6 指针数组 104
6.6.1 定义指针数组 104
6.6.2 指针数组的应用 105
6.7 二级指针 107
6.8 阶段案例——天生棋局 108
6.9 指针与const 109
6.10 本章小结 110
6.11 习题 110
第7章 字符串 113
7.1 字符数组和字符串 113
7.1.1 字符数组 113
7.1.2 字符串 114
7.1.3 字符串与指针 116
7.2 字符串的输入/输出 118
7.2.1 常见的输入函数 118
7.2.2 常见的输出函数 119
7.3 字符串操作函数 120
7.3.1 字符串比较 120
7.3.2 字符串查找 121
7.3.3 字符串连接 122
7.3.4 字符串复制 123
7.4 数字与字符串转换 124
7.5 阶段案例——回文字符串 125
7.6 本章小结 126
7.7 习题 126
第8章 结构体 128
8.1 结构体类型 128
8.1.1 结构体类型声明 128
8.1.2 结构体变量定义 129
8.1.3 结构体变量的大小 130
8.1.4 结构体变量初始化 132
8.1.5 结构体变量访问 132
8.2 结构体数组 133
8.2.1 结构体数组的定义 133
8.2.2 结构体数组的初始化 133
8.2.3 结构体数组的访问 134
8.3 结构体与指针 134
8.3.1 结构体指针 135
8.3.2 结构体数组指针 135
8.4 结构体与函数 136
8.4.1 结构体变量作为函数参数 136
8.4.2 结构体数组作为函数参数 137
8.4.3 结构体指针作为函数参数 138
8.5 typedef的使用 138
8.6 阶段案例——学生成绩
管理系统 139
8.7 本章小结 141
8.8 习题 141
第9章 预处理 144
9.1 宏定义 144
9.1.1 不带参数的宏定义 144
9.1.2 带参数的宏定义 146
9.2 文件包含 147
9.2.1 文件包含命令的格式 147
9.2.2 多文件包含实例 148
9.3 条件编译 149
9.3.1 #if/#else/#endif指令 149
9.3.2 #ifdef指令 150
9.3.3 #ifndef指令 150
9.4 断言 154
9.4.1 断言的作用 154
9.4.2 断言与debug 155
9.5 本章小结 155
9.6 习题 155
第10章 文件操作 157
10.1 文件概述 157
10.1.1 流 157
10.1.2 文件 158
10.1.3 文件指针 159
10.1.4 文件位置指针 160
10.2 文件的打开和关闭 161
10.3 文件的读写 162
10.3.1 单字符读写文件 162
10.3.2 单行读写文件 164
10.3.3 二进制形式读写文件 165
10.4 阶段案例——文件加密 166
10.5 文件随机读写 167
10.6 阶段案例——个人日记本 168
10.7 本章小结 169
10.8 习题 169
第11章 常见的数据结构 172
11.1 链表 172
11.1.1 链表概述 172
11.1.2 链表的结构 173
11.1.3 链表的实现 173
11.2 栈 177
11.2.1 什么是栈 178
11.2.2 栈的链式存储与实现 178
11.3 队列 181
11.3.1 什么是队列 182
11.3.2 链式队列的存储与实现 182
11.4 阶段案例——机器运算 186
11.5 本章小结 188
11.6 习题 188
第12章 综合项目—贪吃蛇
控制台游戏 190
12.1 项目分析 190
12.1.1 项目需求分析 190
12.1.2 效果显示 193
12.1.3 项目设计 195
12.2 项目实现 197
12.2.1 项目创建 197
12.2.2 snake.h文件定义 199
12.2.3 界面管理模块的实现 200
12.2.4 贪吃蛇初始化模块的实现 203
12.2.5 食物模块的实现 204
12.2.6 游戏规则设计模块的实现 205
12.2.7 贪吃蛇移动控制模块的实现 207
12.2.8 信息管理模块的实现 212
12.2.9 main()函数实现 214
12.3 程序调试 215
12.3.1 设置断点 215
12.3.2 单步调试 216
12.3.3 观察变量 217
12.3.4 条件判断 217
12.3.5 项目调试 218
12.4 项目心得 220
12.5 本章小结 220
附录I 二进制与十进制对应
关系表 221
附录Ⅱ 八进制与十进制对应
关系表 222
附录Ⅲ 十六进制与十进制对应
关系表 223
附录Ⅳ 二进制与八进制对应
关系表 224
附录V 二进制与十六进制对应
关系表 225
附录Ⅵ ASCII码表 226
附录Ⅶ C语言常用的字符串操作
函数 227