第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