1.1 C的发展史 1
1.2 C语言特点 1
第一章 概述 1
1.3 C的词汇和词法规则 2
1.3.1 C的字符集 2
1.3.2 标识符 2
1.3.3 关键字 3
1.3.4 字符串 3
1.3.5 注解 3
1.4 简单程序示例 4
1.5 本章小结 4
练习一 4
2.1.1 标识符命名及变量声明(declaration) 5
2.1.2 int(整数)类型 5
2.1 C的基本数据类型 5
第二章 简单数据类型 5
2.1.3 char(字符)类型 7
2.1.4 float和double类型 8
2.2 类型修饰符 9
2.2.1 const 9
2.2.2 volatile 10
2.3 存储类型声明 10
2.3.1 自动变量 10
2.3.2 外部变量 11
3.3.3 静态变量 12
2.3.4 寄存器变量 12
练习二 13
2.4 本章小结 13
3.1 运算符 14
3.1.1 赋值运算符 14
第三章 运算符与表达式 14
3.1.2 算术运算符 15
3.1.3 关系与逻辑运算符 17
3.1.4 位运算符 18
3.1.5 ?:运算符 19
3.1.6 取地址操作 和间接操作* 20
3.1.7 圆点“·”和箭头“→”运算符 22
3.1.8 sizeof和类型强制运算符 22
3.1.9 逗号(,)运算符 23
3.1.10 复合赋值运算符 23
3.2 表达式 24
3.1.11 运算符的优先级及结合性 24
3.2.1 表达式的求值 25
3.2.2 表达式求值过程中的类型转换 26
3.2.3 强制类型转换 27
3.2.4 常量表达式 28
3.3 本章小结 28
练习三 29
第四章 简单的C程序设计 30
4.1 标准设备的输入输出函数 30
4.1.1 printf()和scanf()语句(函数调用语句) 30
4.1.2 getchar()和putchar()函数 33
4.2 简单的C程序设计 33
4.3 空语句、复合语句和逗号表达式语句 34
4.4 if语句 35
4.5 goto语句和带标号的语句 36
4.6 本章小结 37
练习四 37
第五章 分支语句 39
5.1 if语句 39
5.1.1 if语句的形式与用法 39
5.1.2 关于控制表达式 40
5.2 if-else语句 42
5.2.1 if-else语句的形式与用法 42
5.2.2 if语句的嵌套 43
5.2.3 else- if匹配规则 44
5.2.4 ?:表达式 44
5.3.1 Switch基本用法 45
5.3 Switch语句 45
5.3.2 关于break 46
5.3.3 嵌套Switch语句 47
5.3.4 Switch的几点注意事项 47
5.4 本章小结 48
练习五 48
第六章 循环语句 50
6.1 for循环 50
6.1.1 for循环的基本形式 50
6.1.2 for循环的基本用法 50
6.1.3 for循环的灵活性 51
6.1.4 多重循环 52
6.2.1 while循环的基本形式 53
6.2 while循环 53
6.2.2 while语句的用法 54
6.3 do-while循环 55
6.3.1 do-while循环的形式 55
6.4 用法举例 56
6.4.1 试探法 56
6.4.2 迭代法 61
6.5 小结 65
练习六 67
第七章 转移语句 69
7.1 break语句 69
7.2 continue语句 70
7.3 goto语句 71
7.4 return语句 76
7.5本章小结 77
练习七 77
第八章 数组 79
8.1 一维数组 79
8.1.1 一维数组变量的声明 79
8.1.2 数组元素的引用 80
8.1.3 一维数组的应用 81
8.2 多维数组 84
8.2.1 多维数组变量的声明 84
8.2.2 多维数组元素的引用 85
8.2.3 多维数组的应用 86
8.3 一维字符数组 88
8.3.1 一维字符数组变量的初始化 88
8.3.2 几个与一维字符数组有关的库函数 89
8.4 数组变量初始化 91
8.4.1 一维数组变量的初始化 92
8.4.2 多维数组变量的初始化 92
8.5 数组变量声明中的修饰符 94
8.5.1 存储类说明符 94
8.5.2 类型修饰符 95
8.6 用法举例 96
8.7 小结 104
练习八 104
第九章 指针 107
9.1 指针变量的声明和用法 107
9.2 指针变量的运算 109
9.3 指针与数组 110
练习九 117
9.4 小结 117
第十章 枚举、结构、联合类型及类型定义 119
10.1 枚举类型 119
10.2 结构类型 120
10.2.1 声明结构类型变量的常用形式 120
10.2.2 结构型变量的运算及其成员的引用方式 123
10.2.3 存储管理库函数malloc和free 124
10.3 联合类型 125
10.4 类型定义typedef 127
10.5 用法举例 127
10.6 小结 141
练习十 141
11.1 函数的定义 142
第十一章 函数 142
11.2 函数调用和参数传递 145
11.3 函数的递归调用 157
11.4 递归调用函数到非递归调用函数的等价变换 167
11.4.1 用循环代替某些递归调用 167
11.4.2 用循环代替尾递归调用 170
11.4.3 用栈实现递归调用 172
11.5 标识符作用域与标识符名字空间 175
11.5.1 标识符作用域 175
11.5.2 标识符的名字空间 178
11.6 命令行参数 179
11.7 函数原型声明 180
11.8 与函数相关的声明 182
11.9 大型C程序的一般结构 183
11.10 小结 191
练习十一 191
第十二章 C预处理器 194
12.1 宏定义和宏扩展 195
12.1.1 简单宏 195
12.1.2 参数化宏 196
12.1.3 宏的反复处理 198
12.1.4 宏定义的取消和宏的重定义 198
12.1.5 定义宏时易犯的错误 199
12.1.6 预定义宏 199
12.2 文件内容并入 200
12.3 条件编译 201
12.4.2 #error 203
12.4 其它预处理命令 203
12.4.1 #line 203
12.4.3 #pragma 204
12.5 C编译流程小结 204
练习十二 204
第十三章 C运行库 206
13.1 输入输出(stdio.h) 208
13.1.1 流的建立与拆除 209
13.1.2 格式化输出 210
13.1.3 格式化输入 215
13.1.4 以正文行为单位的输入输出 218
13.1.5 以字符为单位的输入输出 218
13.1.7 文件重定位 219
13.1.6 无格式输入输出 219
13.1.8 状态处理 220
13.1.9 流缓冲控制 220
13.1.10 文件的改名与删除 221
13.1.11 临时文件处理 221
13.2 字符串处理(string.h) 222
13.2.1 字符串处理设施 222
13.2.2 存储块处理设施 224
13.3 字符处理(ctype.h) 225
13.3.1字符类判断 225
13.3.2 大小写字母转换 226
13.4 实用设施(stdlib.h) 226
13.4.1 字符串到数值的转换 226
13.4.2 常用数学函数 227
13.4.3 与操作系统的交互设施 228
13.4.4 查找与排序 229
13.4.5 多字节字符处理 230
13.5 数学函数(math.h) 231
13.6 信号处理(signal.h) 232
13.7 日期和时间表示(time.h) 233
13.8 变长参数表处理(stdarg.h) 236
13.9 非局部跳转(setjump.h) 237
13.10 诊断设施(assert.h) 239
13.11 地域设置(locale.h) 239
13.12 有关整数表示范围的常数(limits.h) 241
13.13 有关浮点数表示范围的常数(float.h) 242
练习十三 243
14.1 计算并输出n!(0≤n≤42900)的准确值 244
第十四章 综合举例 244
14.2 计算并输出两个大无符号整数m与n的乘积、整除商和余数 248
14.3 计算自然数e(精确到小数点后2000位) 257
14.4 皇后问题 260
14.5 0,1环马步遍历及子集合问题 266
14.5.1 0,1环问题 266
14.5.2 马步遍历问题 269
14.5.3 子集合问题 271
14.6 计算一元函数的定积分 273
14.7 背包问题 275
14.8 汉诺塔问题 277
14.9 小结 283
练习十四 283