第1章 C程序设计概述 1
1.1 程序设计语言、程序与程序设计 1
1.1.1 程序设计语言 1
1.1.2 程序 2
1.1.3 程序设计 3
1.2 C语言概述 7
1.2.1 C语言的发展 7
1.2.2 C语言的特性 8
1.2.3 C语言程序的结构与执行 9
1.2.4 C语言程序实例 10
1.2.5 C语言程序的书写 17
1.2.6 上机调试运行C语言程序的过程 19
习题 30
第2章 数据的表示与存储 32
2.1 C语言的数据类型 32
2.2 整型数据 33
2.2.1 整型常量 34
2.2.2 整型变量 36
2.3 浮点型数据 42
2.3.1 浮点型常量 44
2.3.2 浮点型变量 45
2.4 字符型数据 45
2.4.1 字符集 45
2.4.2 字符型常量 46
2.4.3 字符型变量 47
2.5 字符串数据 48
2.6 指针型数据 50
2.6.1 地址的概念 50
2.6.2 指针变量声明及初始化 50
2.7 枚举型数据 53
2.7.1 定义枚举数据类型 53
2.7.2 枚举型变量的声明 53
2.8 符号常量与const限定 54
2.8.1 符号常量 54
2.8.2 const限定 57
2.9 使用typedef命名数据类型 58
习题 60
第3章 基本运算与输入输出 61
3.1 运算符与表达式概述 61
3.1.1 运算符 61
3.1.2 表达式 62
3.2 数据对象的存取 63
3.2.1 间接引用运算与间接引用数据对象 63
3.2.2 赋值运算与赋值表达式 64
3.3 基本数值运算 71
3.3.1 算术运算符 71
3.3.2 算术表达式 73
3.3.3 常见的数值计算与数学库函数的使用 76
3.3.4 数值计算中的溢出、有效数字与计算误差 78
3.4 其他常用运算 82
3.4.1 强制类型转换运算及其表达式 82
3.4.2 sizeof运算符及其表达式 83
3.4.3 逗号运算符及其表达式 84
3.5 输入与输出 85
3.5.1 输入输出包含文件stdio.h 86
3.5.2 字符数据的输入输出 86
3.5.3 格式化输入输出 88
习题 101
第4章 结构化程序设计 105
4.1 结构化算法及其表示 105
4.1.1 算法举例 105
4.1.2 基本算法结构及其表示 106
4.2 结构化程序开发 109
4.2.1 结构化程序设计方法 109
4.2.2 表示顺序算法结构的语句 111
4.2.3 表示选择算法结构的语句 113
4.2.4 表示循环算法结构的语句 129
4.2.5 break语句和continue语句 137
4.2.6 无条件转移语句 139
习题 140
第5章 常用数值计算算法及其程序设计 143
5.1 素数判断 143
5.1.1 最简单的素数判断算法 143
5.1.2 改进后的素数判断算法 144
5.2 求最大公约数 145
5.2.1 brute-force算法 145
5.2.2 欧几里得算法 145
5.3 穷举法求满足条件的一组解 146
5.4 级数近似计算 147
5.4.1 简单方法 148
5.4.2 递推法 148
5.5 一元非线性方程求根 150
5.5.1 牛顿迭代法 150
5.5.2 二分法和弦截法 151
5.6 定积分近似计算 152
5.6.1 梯形法 152
5.6.2 矩形法 154
习题 154
第6章 函数 156
6.1 函数概述 156
6.1.1 模块化程序设计 156
6.1.2 函数 156
6.2 函数定义 160
6.2.1 函数定义形式 160
6.2.2 函数名 160
6.2.3 函数返回值类型 160
6.2.4 函数的形式参数 161
6.2.5 函数体 162
6.2.6 函数的存储类型 163
6.3 函数返回 163
6.4 函数调用 165
6.4.1 调用函数的引用性声明 165
6.4.2 函数调用 167
6.4.3 函数调用时的参数传递 170
6.4.4 函数间数据通信的实现 172
6.4.5 递归函数 173
6.5 标识符的作用域 179
6.5.1 标识符的作用域 179
6.5.2 外部对象的连接属性 183
6.6 变量的存储属性 185
6.6.1 变量的生存周期属性 185
6.6.2 变量的存储器属性 187
6.7 参数个数可变函数的定义及调用 188
6.8 编译预处理及预处理命令 190
6.8.1 预处理概念 190
6.8.2 文件包含命令 191
6.8.3 宏定义命令 192
6.8.4 条件编译命令 194
习题 196
第7章 数组 202
7.1 数组概念 202
7.2 一维数组 203
7.2.1 一维数组声明 203
7.2.2 引用一维数组元素 204
7.2.3 一维数组的初始化 205
7.2.4 使用指针间接引用一维数组元素 206
7.2.5 一维数组作函数参数 208
7.2.6 一维数组应用 211
7.3 二维数组 224
7.3.1 二维数组声明与二维数组元素引用 224
7.3.2 二维数组初始化 226
7.3.3 使用指针间接引用二维数组元素 228
7.3.4 二维数组作函数参数 230
7.3.5 二维数组应用 231
7.4 字符与字符串处理 233
7.4.1 字符处理 233
7.4.2 字符数组与字符串 235
7.4.3 字符型指针变量 236
7.4.4 字符串输入输出 237
7.4.5 字符串处理 239
7.4.6 字符串处理实例 242
7.5 指针数组及应用 249
7.5.1 指针数组 249
7.5.2 指向指针变量的指针变量 251
7.5.3 带形式参数的main函数 252
7.6 动态数组 254
习题 257
第8章 结构、联合与指针 263
8.1 结构数据类型 263
8.1.1 结构类型定义 263
8.1.2 结构类型变量声明及初始化 265
8.1.3 结构类型变量及其成员的表示与使用 267
8.1.4 结构数组 271
8.1.5 函数间结构类型数据的传递 274
8.1.6 链表 281
8.2 联合类型 292
8.3 指针小结 296
8.3.1 指针与指针变量 296
8.3.2 利用指针存取指向的数据对象 299
8.3.3 指针运算 301
8.3.4 在函数间传递数据对象的地址 302
8.3.5 指针的综合应用例 304
习题 309
第9章 文件操作 314
9.1 文件概念 314
9.2 C文件系统 314
9.3 利用高级I/O库函数存取文件 315
9.3.1 打开文件 316
9.3.2 读写文件 319
9.3.3 关闭文件 324
9.3.4 文件结尾检测与读写错误检测 325
9.3.5 文件定位 327
9.3.6 其他文件操作函数 329
习题 334
第10章 位运算 336
10.1 位运算符 336
10.1.1 位逻辑运算符 337
10.1.2 移位运算符 339
10.1.3 位运算应用实例 341
10.2 位段 342
10.2.1 位段结构 342
10.2.2 位段结构应用实例 345
习题 348
附录A ASCII字符集及其编码 350
附录B C99中的关键字 351
附录C C99运算符的优先级与结合性 352
附录D 常用的C语言库函数 354
参考文献 364