第1部分 基础知识 2
第1章 引言 2
1.1 C语言的发展 2
1.2 C语言的特点 2
1.3 C程序结构 3
1.3.1 C程序的基本结构 3
1.3.2 C语言的算法 5
1.3.3 C程序的三种基本结构 6
1.4 C程序的实现 6
1.4.1 C程序的开发步骤 6
1.4.2 C程序的编辑 8
1.4.3 C程序的编译及执行 10
1.5 常见错误分析 13
本章小结 15
习题 15
第2章 数据类型及其运算 17
2.1 基本字符和标识符 17
2.1.1 标识符 17
2.1.2 关键字 17
2.2 常量与变量 18
2.2.1 常量与符号常量 18
2.2.2 变量 18
2.3 数据类型 18
2.3.1 整型数据 19
2.3.2 实型数据 21
2.3.3 字符型数据 22
2.4 数据类型的转换 23
2.4.1 隐式类型转换 24
2.4.2 强制类型转换 24
2.5 运算符和表达式 25
2.5.1 算术运算符和算术表达式 25
2.5.2 赋值运算符和赋值表达式 26
2.5.3 自增自减运算符 27
2.5.4 逗号运算符和逗号表达式 29
2.6 数据的输入和输出 29
2.6.1 格式输入函数scanf 29
2.6.2 格式输出函数printf 31
2.6.3 字符输入函数getchar 33
2.6.4 字符输出函数putchar 33
2.7 赋值语句和顺序结构程序设计 33
2.7.1 赋值语句 33
2.7.2 顺序结构程序设计 34
2.8 数学函数 35
2.9 应用举例 36
2.10 常见错误分析 39
本章小结 45
习题 45
第3章 选择结构及其应用 48
3.1 关系运算符和关系表达式 48
3.1.1 关系运算符 48
3.1.2 关系表达式 48
3.2 逻辑运算符和逻辑表达式 49
3.2.1 逻辑运算符 49
3.2.2 逻辑表达式 49
3.3 if语句 50
3.3.1 if分支 50
3.3.2 if-else分支 52
3.3.3 嵌套的if语句 54
3.4 switch语句 57
3.5 条件运算符和条件表达式 60
3.6 应用举例 61
3.7 常见错误分析 64
本章小结 67
习题 67
第4章 循环结构及其应用 70
4.1 while循环语句 70
4.2 for循环语句 74
4.3 do-while循环语句 79
4.4 三种循环语句的比较 81
4.5 break语句和continue语句 84
4.5.1 break语句 84
4.5.2 continue语句 86
4.6 循环嵌套 88
4.7 goto语句和标号 92
4.8 应用举例 93
4.9 常见错误分析 97
本章小结 99
习题 99
第5章 数组 104
5.1 一维数组 104
5.1.1 一维数组的定义和引用 104
5.1.2 一维数组的初始化 107
5.1.3 一维数组应用举例 108
5.2 二维数组 112
5.2.1 二维数组的定义和引用 112
5.2.2 二维数组的初始化 113
5.2.3 二维数组应用举例 113
5.3 字符数组和字符串 116
5.3.1 字符数组的定义和初始化 116
5.3.2 字符串 117
5.3.3 字符数组的输入和输出 118
5.3.4 字符串处理函数 120
5.3.5 字符数组应用举例 123
5.4 常见错误分析 124
本章小结 126
习题 126
第6章 函数 128
6.1 函数概述 128
6.1.1 函数的概念 128
6.1.2 库函数 129
6.2 用户自定义函数 129
6.2.1 函数定义的格式 129
6.2.2 形式参数和实际参数 131
6.2.3 函数的返回值 133
6.3 函数的调用 134
6.3.1 函数调用的一般形式 134
6.3.2 函数的调用方式 134
6.3.3 函数的原型声明 135
6.3.4 函数的参数传递 137
6.4 函数的嵌套调用和递归调用 138
6.4.1 函数的嵌套调用 138
6.4.2 函数的递归调用 139
6.5 数组作为函数的参数 141
6.5.1 数组元素作为函数的参数 141
6.5.2 数组名作为函数的参数 142
6.6 局部变量和全局变量 144
6.6.1 局部变量 144
6.6.2 全局变量 145
6.7 变量的存储类别 148
6.7.1 局部变量的存储类别 148
6.7.2 全局变量的存储类别 151
6.8 内部函数和外部函数 152
6.8.1 内部函数 152
6.8.2 外部函数 152
6.9 应用举例 152
6.10 常见错误分析 156
本章小结 158
习题 158
第7章 预处理命令 162
7.1 宏定义 162
7.1.1 不带参数的宏定义 162
7.1.2 带参数的宏定义 164
7.1.3 撤销宏定义命令 165
7.2 文件包含命令 166
7.3 条件编译命令 168
7.4 常见错误分析 170
本章小结 171
习题 171
第8章 指针 172
8.1 变量的地址和指针 172
8.2 指针变量的定义 173
8.3 指针运算 174
8.3.1 取地址运算符 174
8.3.2 指针运算符 174
8.3.3 赋值运算 174
8.3.4 空指针与void指针 176
8.4 指针与数组 177
8.4.1 一维数组的指针表示 177
8.4.2 二维数组的指针表示 184
8.4.3 指针与字符串 187
8.5 指针与函数 189
8.5.1 指针作为函数参数 190
8.5.2 指针作为函数的返回值 193
8.5.3 函数的指针 194
8.6 指针数组和指向指针的指针 195
8.6.1 指针数组 195
8.6.2 指向指针的指针 197
8.7 应用举例 199
8.8 常见错误分析 201
本章小结 202
习题 203
第9章 结构体与共用体 207
9.1 结构体 207
9.1.1 结构体类型的定义 208
9.1.2 结构体变量的定义 209
9.1.3 用typedef定义数据类型 211
9.1.4 结构体变量的引用 211
9.1.5 结构体变量的初始化 212
9.2 结构体数组 213
9.2.1 结构体数组的定义 213
9.2.2 结构体数组的初始化 214
9.2.3 结构体数组的引用 214
9.3 结构体指针变量 215
9.3.1 指向结构体变量的指针 215
9.3.2 指向结构体数组的指针 216
9.3.3 结构体变量和结构体指针变量作为函数参数 216
9.4 链表 218
9.4.1 链表的类型及定义 219
9.4.2 处理动态链表的函数 220
9.4.3 动态链表的基本操作 221
9.4.4 栈和队列 228
9.5 共用体 229
9.6 枚举类型 230
9.7 应用举例 230
9.8 常见错误分析 234
本章小结 236
习题 237
第10章 文件 240
10.1 文件概述 240
10.2 文件类型指针 241
10.3 文件的打开、读写和关闭 241
10.3.1 文件的打开函数fopen 241
10.3.2 文件的关闭函数fclose 243
10.3.3 文件的读写 243
10.3.4 文件读写函数的选择 249
10.4 文件的定位 250
10.5 应用举例 251
10.6 常见错误分析 253
本章小结 253
习题 254
第2部分 项目实战 258
第11章 贪吃蛇游戏 258
11.1 概述 258
11.2 需求分析 258
11.3 系统设计 258
本章小结 270
第12章 学生成绩管理系统 271
12.1 概述 271
12.2 系统设计 271
12.2.1 系统功能设计 271
12.2.2 数据结构设计 272
12.3 功能设计 273
12.3.1 主控模块 273
12.3.2 输入学生信息模块 276
12.3.3 显示学生信息模块 279
12.3.4 删除学生信息模块 281
12.3.5 查询学生信息模块 283
12.3.6 修改学生信息模块 285
12.3.7 插入学生信息模块 287
12.3.8 统计学生成绩模块 289
12.3.9 学生成绩排序模块 291
12.3.10 保存学生信息模块 294
本章小结 295
第13章 Ping程序设计 296
13.1 设计原理 296
13.2 功能描述 297
13.3 总体设计 297
13.3.1 功能模块设计 297
13.3.2 数据结构设计 299
13.3.3 函数功能描述 301
13.4 程序实现 302
13.4.1 源码分析 302
13.4.2 运行结果 313
本章小结 317
附录 318
附录1 常用字符与ASCII代码对照表 318
附录2 运算符的优先级和结合性表 318
附录3 C语言的关键字 319
附录4 常用标准库函数 319
参考文献 324