Chapter 01 C语言程序设计概述 2
1.1 程序与程序设计语言 2
1.1.1 程序的基本概念 2
1.1.2 程序设计语言 2
1.2 C语言的发展及特点 3
1.2.1 C语言的发展概况 3
1.2.2 C语言的特点 4
1.3 C语言程序的基本结构 4
1.3.1 简单的C语言程序示例 4
1.3.2 C语言程序基本结构 6
1.4 C语言字符集、标识符与关键字 7
1.4.1 C语言字符集 7
1.4.2 C语言的标识符与关键字 7
1.5 C语言程序的调试 8
1.5.1 C语言的调试步骤 8
1.5.2 Turbo C 20 9
1.5.3 Visual C++ 6.0集成开发环境简介 13
Chapter 02 算法 16
2.1 算法基本概念 16
2.1.1 算法的主要特性 16
2.1.2 如何衡量算法的优劣 16
2.2 算法描述 18
2.2.1 用自然语言描述算法 18
2.2.2 流程图 18
2.2.3 N-S流程图 20
2.2.4 用计算机语言描述算法 21
Chapter 03 编程规范与数据类型 23
3.1 C语言编程规范 23
3.1.1 代码缩进设置 23
3.1.2 常量、变量命名规范 23
3.1.3 函数命名规范 23
3.1.4 注释 24
3.2 关键字 24
3.3 标识符 25
3.4 C语言的数据类型 25
3.5 常量与变量 26
3.5.1 常量与符号常量 26
3.5.2 变量 27
3.6 整型数据 28
3.6.1 整型常量 28
3.6.2 整型变量 29
3.7 浮点型数据 30
3.7.1 浮点型常量 30
3.7.2 浮点型变量 31
3.8 字符型数据 32
3.8.1 字符常量 32
3.8.2 字符变量 34
3.8.3 字符串常量 35
Chapter 04 运算符与表达式 37
4.1 了解运算符与表达式 37
4.1.1 运算符与表达式 37
4.1.2 算数运算符与算数表达式 38
4.1.3 关系运算符与关系表达式 41
4.1.4 逻辑运算符与逻辑表达式 42
4.1.5 赋值运算符与赋值表达式 45
4.1.6 其他运算符 47
4.2 数据类型转换 49
4.2.1 类型自动转换 49
4.2.2 赋值转换 50
4.2.3 强制类型转换 50
Chapter 05 顺序结构程序设计 52
5.1 C语言的基本语句 52
5.1.1 C语言语句简介 52
5.1.2 顺序结构 54
5.2 数据的输出 55
5.2.1 格式化输出函数printf() 55
5.2.2 单个字符的输出函数putchar() 62
5.3 数据的输入 63
5.3.1 格式化输入函数scanf() 63
5.3.2 单个字符的输出函数getchar() 68
5.4 顺序结构程序设计举例 69
Chapter 06 选择结构程序设计 73
6.1 if语句 73
6.1.1 单分支if语句 73
6.1.2 双分支if语句 76
6.1.3 多分支选择结构 78
6.1.4 if语句的嵌套 80
6.2 switch语句 83
6.3 选择结构程序设计举例 86
Chapter 07 循环结构程序设计 90
7.1 while循环语句 90
7.2 do-while语句 95
7.3 for语句 99
7.4 break、continue和goto语句 107
7.4.1 break语句 107
7.4.2 continue语句 109
7.4.3 goto语句 111
7.5 循环的嵌套 113
7.6 循环结构常用算法举例 119
Chapter 08 数组 128
8.1 一维数组 128
8.1.1 一维数组的定义 128
8.1.2 一维数组元素的引用 130
8.1.3 一维数组元素的初始化 131
8.1.4 一维数组算法举例 133
8.2 二维数组的定义和引用 142
8.2.1 二维数组的定义 142
8.2.2 二维数组元素的引用 143
8.2.3 二维数组元素的初始化 145
8.2.4 二维数组算法举例 146
8.3 字符数组与字符串 151
8.3.1 字符数组的定义与初始化 151
8.3.2 字符串的概念与存储 154
8.3.3 常用的字符串处理函数 158
8.3.4 字符串程序举例 163
Chapter 09 函数 169
9.1 函数概述 169
9.1.1 函数的引入 169
9.1.2 函数的定义 172
9.1.3 函数调用与函数的值 175
9.1.4 形式参数和实际参数 181
9.2 函数的嵌套调用与递归调用 184
9.2.1 函数的嵌套调用 184
9.2.2 函数的递归调用 186
9.3 数组作为函数参数 191
9.3.1 数组元素作为函数参数 191
9.3.2 数组名作为函数的形参和实参 193
9.4 局部变量与全局变量 199
9.4.1 局部变量 199
9.4.2 全局变量 200
9.5 数据的存储类别 204
9.5.1 动态存储与静态存储 204
9.5.2 aotu变量 205
9.5.3 static变量 207
9.5.4 register变量 210
9.5.5 extern变量 211
9.6 内部函数与外部函数 213
9.6.1 内部函数 213
9.6.2 外部函数 214
9.7 函数设计举例 215
Chapter 10 编译预处理 221
10.1 编译预处理概述 221
10.2 宏定义 221
10.2.1 无参宏的定义与使用 222
10.2.2 有参宏的定义与使用 226
10.3 文件包含 230
10.4 条件编译 232
Chapter 11 指针 238
11.1 地址与指针 238
11.2 指针变量 240
11.2.1 指针变量的定义与初始化 240
11.2.2 指针运算 243
11.2.3 指针作为函数参数 247
11.3 指针与一维数组 249
11.3.1 指向一维数组的指针的定义及使用 249
11.3.2 指向一维数组的指针作为函数的参数 254
11.4 指向二维数组的指针 256
11.4.1 二维数组的指针 256
11.4.2 指向二维数组的指针作为函数的参数 260
11.4.3 动态数组的实现 262
11.5 指针与字符串 264
11.5.1 字符指针的定义与初始化 264
11.5.2 利用字符指针表示与引用字符串 266
11.5.3 字符指针与字符数组的比较 269
11.5.4 字符串指针作为函数参数 269
11.6 返回指针值的函数 273
11.7 指向函数的指针 275
11.8 指针数组和二级指针 280
11.8.1 指针数组 280
11.8.2 main()函数的参数 281
11.8.3 二级指针 283
Chapter 12 结构体、共用体与枚举类型 286
12.1 结构体类型 286
12.1.1 结构体类型的定义 287
12.1.2 结构体变量的定义与使用 288
12.1.3 结构体数组的定义与使用 295
12.1.4 结构体类型指针 301
12.1.5 指向结构体数组的指针 303
12.1.6 结构体类型程序举例 306
12.2 用typedef定义类型 309
12.3 链表 310
12.3.1 链表的概念 311
12.3.2 实现链表所需的内存管理函数 312
12.3.3 链表的操作 314
12.3.4 链表程序举例 319
12.4 共用体 324
12.41 共用体类型的定义 324
12.4.2 共用体变量的定义和使用 324
12.4.3 共用体的应用举例 326
12.5 枚举类型 329
Chapter 13 位运算 333
13.1 位运算符与位运算 333
13.1.1 按“位”与运算 333
13.1.2 按位“或”运算 334
13.1.3 按位“异或”运算 335
13.1.4 求反运算 336
13.1.5 左移运算 337
13.1.6 右移运算 338
13.1.7 复合赋值运算符 338
13.1.8 位运算举例 338
13.2 位段 340
Chapter 14 文件 344
14.1 文件概述 344
14.2 文件指针 345
14.3 文件的打开与关闭 346
14.3.1 文件的打开 346
14.3.2 文件的关闭 348
14.4 文件的读写函数 349
14.4.1 fputc()函数和fgetc()函数 349
14.4.2 fputs()函数和fgets()函数 353
14.4.3 fprintf()函数和fscanf()函数 356
14.4.4 fread()函数和fwrite()函数 358
14.5 文件的定位函数 361
14.5.1 fseek()函数 361
14.5.2 ftell()函数 362
14.5.3 rewind()函数 363
Chapter 15 存储管理 366
15.1 内存组织方式 366
15.1.1 内存的组织方式 366
15.1.2 堆与栈 366
15.2 动态管理 367
15.2.1 malloc()函数 367
15.2.2 calloc()函数 369
15.2.3 realloc()函数 369
15.2.4 free()函数 370
15.3 内存丢失 371
Chapter 16 网络套接字编程 373
16.1 计算机网络基础 373
16.1.1 IP地址 373
16.1.2 OSI七层参考模型 373
16.1.3 地址解析 374
16.1.4 域名系统 375
16.1.5 TCP/IP协议 375
16.1.6 端口 376
16.1.7 套接字的引入 377
16.1.8 网络字节 顺序 377
16.2 套接字 377
16.2.1 套接字概述 377
16.2.2 套接字工作流程 378
16.3 套接字函数 379
16.3.1 套接字函数介绍 379
16.3.2 基于TCP的网络聊天程序 384
Chapter 17 工资管理系统 389
17.1 设计目的和功能 389
17.2 总体设计 390
17.2.1 功能模块设计 390
17.2.2 数据结构设计 392
17.2.3 函数功能描述 393
17.3 程序实现 394
17.3.1 源码分析 394
17.3.2 运行结果 409
Chapter 18 电话簿管理系统 415
18.1 设计目的 415
18.2 功能描述 415
18.3 总体设计 416
18.3.1 功能模块设计 416
18.3.2 数据结构设计 419
18.3.3 函数功能描述 419
18.4 程序实现 420
18.4.1 源码分析 420
18.4.2 运行结果 435
附录 439
附录1 课后习题答案 439
附录2 C语言中的关键字 448
附录3 常用字符与ASCII代码对照表 449
附录4 C语言运算符优先级和结合性 450
附录5 C语言常用语法提要 452
附录6 C库函数 456