第1章 C程序设计入门 1
1.1 C语言的发展简史与特点 1
1.2 C程序的基本结构 2
1.2.1 C源程序的组成成分 2
1.2.2 C语言的基本元素 4
1.3 C语言的基本数据类型 6
1.3.1 C语言数据类型概述 6
1.3.2 C语言的整型数据类型 7
1.3.3 C语言的实型数据类型 9
1.3.4 C语言的字符型数据类型 10
1.3.5 变量的初始化 13
1.4 基本运算符和表达式 13
1.4.1 运算符的分类 13
1.4.2 算术运算符和算术表达式 14
1.4.3 赋值运算符和赋值表达式 15
1.4.4 自反运算符 15
1.4.5 自增、自减运算符 17
1.4.6 逗号运算符和逗号表达式 19
1.4.7 sizeof运算符 20
1.4.8 运算符优先级别和结合性规则 21
1.5.1 隐式转换 22
1.5 不同类型数据混合运算及数据转换 22
1.5.2 显式转换 23
1.6 C程序设计初步 24
1.6.1 C语句概述 24
1.6.2 C程序的输出——最基本的输出函数 25
1.6.3 C程序的输入——最基本的输入函数 29
1.6.4 常用数学类标准库函数 34
1.7 习题 37
第2章 C程序的控制结构 40
2.1 C程序控制结构中的条件表示 40
2.1.1 关系运算符和关系表达式 40
2.1.2 逻辑运算符和逻辑表达式 41
2.2 分支程序结构 43
2.2.1 if语句与程序的单分支结构 44
2.2.2 复合语句及其在程序中的使用 45
2.2.3 if...else语句与程序的双分支结构 46
2.2.4 条件运算符与条件表达式 47
2.2.5 if语句的嵌套与程序的多分支结构 48
2.2.6 switch语句与程序的多分支结构 52
2.2.7 if语句嵌套结构与switch语句结构的比较 54
2.3 循环程序结构 56
2.3.1 while型循环结构 57
2.3.2 do...while型循环结构 58
2.3.3 for型循环结构 59
2.3.4 空语句及其在程序中的使用 61
2.3.5 循环的嵌套 61
2.4 C语言中的其他简单控制结构 63
2.4.1 break语句 63
2.4.2 continue语句 65
2.4.3 goto语句和标号语句 66
2.5 C语言控制结构应用举例 67
2.5.1 最大公约数和最小公倍数 67
2.5.2 穷举思想及程序实现 68
2.5.3 迭代思想及程序实现 71
2.5.4 一元高阶方程的迭代解法 72
2.6 习题 75
第3章 函数与程序结构 79
3.1 函数的定义与调用 79
3.1.1 函数的定义 80
3.1.2 函数的声明 82
3.1.3 函数调用的一般形式与返回 84
3.1.4 函数调用时的参数传递 85
3.2 函数的嵌套调用和递归调用 87
3.2.1 函数的嵌套调用 87
3.2.2 函数的递归调用 88
3.2.3 递归函数的设计 91
3.3 程序结构与变量的作用域和生存期 95
3.3.1 变量的作用域 96
3.3.2 变量的生存期 102
3.4 编译预处理 108
3.4.1 宏定义 108
3.4.2 文件包含 112
3.4.3 C源程序文件的组合方法 112
3.4.4 条件编译 113
3.5 习题 115
4.1 指针变量的定义和引用 120
4.1.1 指针变量的定义 120
第4章 指针与函数 120
4.1.2 指针变量的引用 121
4.2 指针变量作为函数的参数及其与被指针指向变量的区别 128
4.2.1 指针变量作为函数的参数 129
4.2.2 指针变量与被指针指向变量的区别 132
4.3 函数的指针与函数调用 133
4.3.1 指向函数指针变量的定义 133
4.3.2 用指向函数的指针变量来调用函数 134
4.3.3 指向函数的指针变量作函数参数 135
4.4 返回指针值的函数 140
4.5 习题 141
5.1.1 一维数组的定义和数组元素的引用方法 146
第5章 数组及应用 146
5.1 一维数组 146
5.1.2 一维数组作函数的参数 152
5.2 二维数组和多维数组 154
5.2.1 二维数组、多维数组的定义和数组元素的引用方法 154
5.2.2 二维数组作函数的参数 160
5.3 数组的应用 163
5.3.1 数组元素值的随机生成 163
5.3.2 常用排序方法 168
5.3.3 常用查找方法 171
5.4 习题 175
6.1.1 字符串的表示 180
第6章 字符串及其应用 180
6.1 C语言的字符串表示方法 180
6.1.2 字符串的输入输出 182
6.2 字符串的常用处理方法及标准库函数 185
6.2.1 字符串中有效字符的统计 185
6.2.2 字符串的复制 188
6.2.3 字符串的连接 190
6.2.4 字符串中字符的查找、插入和删除 193
6.2.5 字符串中子串的查找、插入和删除 200
6.3 习题 210
7.1.1 多级指针 215
第7章 指针与数组 215
7.1 指针与数组的关系 215
7.1.2 一维数组与指针的关系 217
7.1.3 二维数组与指针的关系 220
7.1.4 指向若干元素构成的数组的指针 223
7.2 指针数组与命令行参数 225
7.2.1 指针数组 225
7.2.2 命令行参数 228
7.3 用指针构成动态数组 230
7.3.1 动态数组的概念 230
7.3.2 C语言中的存储分配标准库函数 231
7.3.3 一维动态数组的建立和使用 233
7.3.4 二维动态数组的建立和使用 235
7.4 习题 238
第8章 结构体类型和联合体类型 242
8.1 结构体数据类型的基本概念 242
8.1.1 结构体类型的定义 242
8.1.2 关键字typedef的简单应用 244
8.1.3 结构体变量的引用和输入输出 248
8.1.4 结构体变量作函数的参数 250
8.1.5 结构体作函数的返回值类型 251
8.2.1 结构体数组的定义和数组元素的引用 252
8.2 结构体数组 252
8.2.2 结构体数组作函数的参数 254
8.3 结构体数据类型与指针的关系 256
8.3.1 结构体类型变量与指针的关系 256
8.3.2 结构体类型数组与指针的关系 258
8.3.3 结构体数据类型的简单应用——单链表 260
8.4 联合体数据类型的基本概念 266
8.4.1 联合体类型的定义和变量的引用方法 266
8.4.2 联合体类型与结构体类型的区别 270
8.5 习题 272
9.1.1 位运算的概念 278
9.1.2 位运算符 278
9.1 位运算 278
第9章 位运算与枚举类型 278
9.1.3 位运算应用举例 282
9.2 位段及应用 286
9.2.1 位段的概念和定义方法 286
9.2.2 位段的引用方法 287
9.3 枚举 290
9.3.1 枚举的概念 290
9.3.2 枚举的应用 293
9.4 习题 295
10.1.1 文件的概念 299
第10章 文件 299
10.1 文件的概念与文件类型指针 299
10.1.2 文件类型指针 301
10.2 文件的打开与关闭 302
10.2.1 文件的打开 302
10.2.2 文件的关闭 303
10.3 文件的读写 303
10.3.1 文件中单个字符的读写操作 303
10.3.2 文件中的字符串读写操作 310
10.3.3 文件中的格式化读写操作 312
10.3.4 文件中的数据块读写操作 314
10.4 文件的定位和随机读写 321
10.4.1 文件的操作位置指针和文件定位 321
10.4.2 文件的随机读写 325
10.5 习题 327
附录 332
附录A 332
附录B 334
附录C 335
附录D 342
参考文献 348