第1章 C语言概述 1
1.1 引言 2
1.1.1 C语言的出现 2
1.1.2 C语言的特点 3
1.1.3 C语言的发展 4
1.2 C语言程序的基本组成 5
1.3 C程序的开发步骤 7
1.3.1 C编译器简介 7
1.3.2 代码编辑 9
1.3.3 编译 10
1.3.4 链接 11
1.3.5 运行 13
1.3.6 保存 13
1.4 第一个C程序 14
1.5 本章习题 17
第2章 基本数据类型 19
2.1 C的基本数据类型 20
2.2 常量和变量 20
2.2.1 常量 20
2.2.2 变量 22
2.3 整型数据类型 23
2.3.1 整型常量 24
2.3.2 整型变量 25
2.3.3 应用示例 26
2.4 浮点型数据类型 27
2.4.1 浮点型常量 27
2.4.2 浮点型变量 27
2.4.3 应用示例 28
2.5 字符型数据类型 29
2.5.1 字符常量 29
2.5.2 字符串常量 30
2.5.3 转义字符 31
2.5.4 字符变量 32
2.6 数据类型的相互转换 34
2.7 本章习题 36
第3章 运算符和表达式 39
3.1 常用运算符和表达式 40
3.1.1 常用运算符 40
3.1.2 表达式 40
3.2 算术运算 41
3.2.1 算术运算符 41
3.2.2 自增自减运算符 42
3.2.3 算术表达式 43
3.2.4 应用示例 44
3.3 赋值运算 45
3.3.1 简单赋值运算符和赋值表达式 45
3.3.2 复合赋值运算符 47
3.4 关系运算 48
3.4.1 关系运算符 48
3.4.2 关系表达式 49
3.5 逻辑运算 50
3.5.1 逻辑运算符 50
3.5.2 逻辑表达式 51
3.6 位运算 53
3.7 逗号运算符 55
3.8 条件运算符 56
3.9 运算符的优先级 59
3.10 本章习题 60
第4章 顺序结构 63
4.1 C语句概述 64
4.2 赋值语句 66
4.3 格式输入输出 67
4.3.1 printf函数——格式输出 67
4.3.2 scanf函数——格式输入 70
4.3.3 应用示例 74
4.4 字符数据的输入输出 75
4.4.1 putchar函数——字符输出 75
4.4.2 getchar函数——字符输入 77
4.4.3 应用示例 78
4.5 综合应用 79
4.6 本章习题 80
第5章 选择结构 83
5.1 选择结构概述 84
5.1.1 条件的构成 84
5.1.2 关系运算的优先级 85
5.1.3 逻辑运算的优先级 86
5.2 if语句 87
5.2.1 if语句 87
5.2.2 if...else语句 89
5.2.3 if...else if...else语句 92
5.2.4 if语句的注意事项 94
5.2.5 应用示例 95
5.3 switch语句 97
5.3.1 switch语句的形式 97
5.3.2 应用示例 101
5.4 选择结构的嵌套 102
5.5 条件表达式 105
5.6 综合应用 106
5.7 本章习题 110
第6章 循环结构 113
6.1 循环结构概述 114
6.2 goto语句及其构成的循环 114
6.3 while语句 117
6.3.1 while语句的形式 117
6.3.2 while语句的注意事项 119
6.4 do...while语句 121
6.4.1 do...while语句的形式 121
6.4.2 应用示例 123
6.5 for语句 125
6.5.1 for语句的形式 125
6.5.2 for语句的注意事项 127
6.6 循环嵌套 128
6.7 辅助控制语句 131
6.7.1 break语句 131
6.7.2 continue语句 132
6.8 循环结构的综合应用 133
6.9 本章习题 135
第7章 数组 137
7.1 数组概述 138
7.1.1 基本概念 138
7.1.2 声明数组 139
7.2 一维数组 140
7.2.1 一维数组的存储形式 140
7.2.2 一维数组的声明 140
7.2.3 一维数组的引用 141
7.2.4 应用示例 143
7.3 二维数组 144
7.3.1 二维数组的存储形式 144
7.3.2 二维数组的声明 144
7.3.3 二维数组的引用 145
7.3.4 应用示例 147
7.4 字符数组 148
7.4.1 字符数组的声明及引用 148
7.4.2 字符串 149
7.4.3 常用字符串函数 152
7.4.4 应用示例 157
7.5 初始化数组 159
7.5.1 初始化一维数组 159
7.5.2 初始化二维数组 161
7.5.3 初始化字符数组 162
7.6 综合应用 163
7.7 本章习题 165
第8章 函数 167
8.1 函数 168
8.1.1 函数的分类 168
8.1.2 函数的作用 169
8.2 定义函数 170
8.2.1 定义无参函数 170
8.2.2 定义带参函数 171
8.2.3 定义空函数 172
8.2.4 应用示例 173
8.3 函数的参数及原型 174
8.3.1 形式参数和实际参数 174
8.3.2 函数的返回值 174
8.3.3 函数原型及声明 175
8.3.4 应用示例 176
8.4 调用函数 177
8.4.1 调用函数的一般形式 177
8.4.2 传值调用 178
8.4.3 传地址调用 180
8.5 嵌套调用和递归调用 182
8.5.1 嵌套调用 182
8.5.2 递归调用 184
8.6 数组作为函数参数 186
8.7 带参数的main函数 189
8.8 变量的作用域 191
8.8.1 局部变量 191
8.8.2 全局变量 194
8.8.3 变量的存储方式 196
8.9 综合应用 197
8.10 本章习题 198
第9章 指针 201
9.1 指针的基本概念 202
9.2 变量与指针 203
9.2.1 定义指针变量 203
9.2.2 指针变量的初始化 204
9.2.3 应用示例 206
9.3 指针的运算 207
9.3.1 取地址和取值运算 207
9.3.2 赋值运算 209
9.3.3 算术运算 209
9.3.4 关系运算 212
9.4 数组与指针 213
9.4.1 指向一维数组的指针 214
9.4.2 指向多维数组的指针 216
9.4.3 数组指针 217
9.5 字符串与指针 218
9.5.1 定义字符指针 219
9.5.2 应用示例 220
9.6 指针的综合应用 221
9.7 本章习题 223
第10章 指针的高级应用 225
10.1 指针与函数 226
10.1.1 指针作为函数参数 226
10.1.2 字符指针作为函数参数 227
10.1.3 指针函数 228
10.2 函数指针 230
10.2.1 函数指针 230
10.2.2 函数指针数组 232
10.2.3 函数指针作为函数参数 233
10.3 指针数组 235
10.3.1 指针数组的使用 235
10.3.2 main函数中的指针数组 236
10.4 void指针 238
10.5 指向指针的指针 240
10.6 内存操作 242
10.6.1 内存分配方式 242
10.6.2 内存操作函数 242
10.6.3 应用示例 245
10.6.4 注意事项 246
10.7 综合应用 247
10.8 本章习题 248
第11章 编译预处理 251
11.1 预处理概述 252
11.2 宏 252
11.2.1 宏概述 252
11.2.2 无参宏定义 253
11.2.3 带参宏定义 255
11.2.4 实参为表达式的宏调用 256
11.2.5 形参带括号的宏定义 258
11.3 宏与函数的区别 260
11.4 条件包含 262
11.4.1 #include预处理命令 262
11.4.2 应用示例 263
11.5 条件编译 265
11.5.1 #ifdef预处理命令 265
11.5.2 #ifndef预编译命令 267
11.5.3 #if预编译命令 268
11.6 应用示例 270
11.7 本章习题 272
第12章 扩展数据类型 275
12.1 结构体 276
12.1.1 结构体概念 276
12.1.2 构造结构体 277
12.1.3 声明结构体类型变量 278
12.1.4 引用结构体变量成员 280
12.1.5 初始化结构体变量 281
12.1.6 结构体变量的赋值 283
12.1.7 应用示例 284
12.2 结构体数组 287
12.2.1 定义和引用结构体数组 287
12.2.2 应用示例 288
12.3 结构体指针 289
12.3.1 指向结构体变量的指针 290
12.3.2 指向结构体数组的指针 291
12.4 结构体作为函数参数 292
12.4.1 结构体指针作为参数 293
12.4.2 应用示例 294
12.5 共用体 296
12.5.1 共用体概述 296
12.5.2 构造共用体 297
12.5.3 声明共用体类型变量 298
12.5.4 共用体变量的使用和赋值 299
12.5.5 应用示例 301
12.6 枚举 303
12.6.1 定义枚举类型 303
12.6.2 枚举类型变量的声明和引用 305
12.7 用户自定义数据类型 306
12.8 综合示例 309
12.9 本章习题 311
第13章 文件 313
13.1 文件概述 314
13.1.1 文件的作用 314
13.1.2 文件的分类 314
13.2 文件的打开与关闭 316
13.2.1 打开文件 316
13.2.2 关闭文件 318
13.3 文件的读写 320
13.3.1 字符读写函数fgetc和fputc 320
13.3.2 字符串读写函数fgets和fputs 323
13.3.3 数据块读写函数fread和fwrite 326
13.3.4 格式化读写函数fscanf和fprintf 328
13.4 文件的定位 330
13.4.1 rewind函数 330
13.4.2 fseek函数 332
13.5 综合应用 333
13.6 本章习题 336
第14章 算法 339
14.1 算法概述 340
14.1.1 算法的特征 340
14.1.2 算法示例 340
14.2 算法的表示 342
14.2.1 问题的引入 342
14.2.2 流程图描述 343
14.2.3 N-S图描述 345
14.2.4 PAD图描述 346
14.3 算法的实现 347
14.4 算法分析 350
14.4.1 时间复杂度 350
14.4.2 空间复杂度 351
14.5 算法的优化 353
14.6 综合示例 356
14.7 本章习题 358
第15章 C高级操作 361
15.1 链表的操作 362
15.1.1 链表概述 362
15.1.2 构造单链表 363
15.1.3 建立单链表 364
15.1.4 输出单链表 365
15.1.5 链表的插入 370
15.1.6 链表的删除 372
15.1.7 链表的查找 375
15.2 查找 377
15.2.1 顺序查找 377
15.2.2 折半查找 380
15.3 排序 383
15.3.1 冒泡排序 383
15.3.2 快速排序 386
15.4 综合示例 388
15.5 本章习题 389
第16章 程序调试 391
16.1 常见错误 392
16.1.1 语法错误 392
16.1.2 逻辑错误 394
16.1.3 运行错误 397
16.1.4 常见错误 398
16.2 程序调试 401
16.2.1 调试步骤 401
16.2.2 debug 403
16.2.3 watch 403
16.2.4 调试快捷键及注意事项 404
16.3 调试示例 405
16.4 本章习题 407
第17章 成绩管理系统 409
17.1 需求分析 410
17.2 总体设计 411
17.3 详细设计 411
17.3.1 数据结构设计 412
17.3.2 成绩录入模块 412
17.3.3 成绩查询模块 416
17.3.4 成绩更新模块 418
17.3.5 成绩删除模块 422
17.3.6 成绩排序模块 424
17.3.7 成绩导出模块 428
17.3.8 成绩导入模块 431
17.4 系统集成 434
17.4.1 设计菜单函数 434
17.4.2 设计主函数 437
17.5 测试运行 437
第18章 个人通讯录管理系统 441
18.1 需求分析 442
18.2 总体设计 442
18.3 详细设计 443
18.3.1 数据结构设计 443
18.3.2 设计主界面 444
18.4 模块设计 445
18.4.1 信息录入模块 445
18.4.2 信息查询模块 448
18.4.3 信息更新模块 450
18.4.4 信息删除模块 452
18.4.5 信息导出模块 455
18.4.6 信息导入模块 457
18.5 系统集成 458
18.6 测试运行 460