第1章 C语言概述 1
1.1 C语言的发展史 1
1.2 C语言的主要特点 2
1.3 C语言程序的组成结构 2
1.3.1 基本程序结构 2
1.3.2 C语言程序结构的特点 5
1.4 C语言程序的集成开发环境 5
本章小结 7
第2章 数据类型 9
2.1 常用数据类型 9
2.1.1 整型数据 10
2.1.2 字符型数据 12
2.1.3 浮点型数据 12
2.1.4 枚举型数据 13
2.2 常量 13
2.2.1 整型常量 14
2.2.2 浮点型常量 15
2.2.3 字符常量 16
2.2.4 字符串常量 17
2.2.5 符号常量 18
2.3 变量 19
2.3.1 变量的定义 19
2.3.2 变量定义语句 20
2.3.3 变量初始化 21
2.4 标准输入/输出函数 22
本章小结 31
第3章 运算符和表达式 32
3.1 算术运算符和算术表达式 32
3.2 赋值运算符和赋值表达式 36
3.3 关系运算符和关系表达式 39
3.4 逻辑运算符和逻辑表达式 41
3.5 条件运算符和条件表达式 44
3.6 逗号运算符和逗号表达式 46
3.7 长度运算符 47
3.8 数据类型转换 48
本章小结 51
第4章 语句 52
4.1 基本语句 52
4.2 流程控制语句 53
4.2.1 程序流程 53
4.2.2 分支语句 56
4.2.3 循环语句 65
4.2.4 转向语句 74
本章小结 79
第5章 数组 80
5.1 一维数组 80
5.1.1 一维数组的定义 80
5.1.2 一维数组元素的引用 81
5.1.3 一维数组的初始化 82
5.1.4 一维数组应用举例 82
5.2 二维数组和多维数组 88
5.2.1 二维数组和多维数组的定义 88
5.2.2 二维数组和多维数组的引用 90
5.2.3 二维数组和多维数组的初始化 90
5.2.4 二维数组和多维数组的举例 91
5.3 字符数组和字符串 96
5.3.1 字符数组 96
5.3.2 字符串 98
5.3.3 字符串处理函数 99
5.3.4 字符数组的举例 105
本章小结 109
第6章 函数 110
6.1 函数的概念 110
6.2 函数的定义和说明 111
6.2.1 函数的定义 111
6.2.2 函数声明 113
6.3 函数调用 116
6.4 函数传递机制 119
6.5 数组作为函数参数 123
6.6 递归 126
6.7 变量的作用域及存储类型 130
6.7.1 变量的作用域 130
6.7.2 变量的存储类型 134
6.8 内部函数和外部函数 137
6.8.1 内部函数 137
6.8.2 外部函数 138
6.9 库函数 139
6.9.1 库函数概述 139
6.9.2 常用库函数 140
本章小结 145
第7章 指针 146
7.1 指针的概念 146
7.2 指针变量的定义和引用 147
7.2.1 指针变量的定义 147
7.2.2 指针变量的初始化 147
7.2.3 指针变量的引用 149
7.3 指向数组的指针 150
7.3.1 指向一维数组的指针 150
7.3.2 指向二维数组的指针 155
7.4 字符串的指针 159
7.5 函数与指针 162
7.5.1 指针变量作为函数参数 162
7.5.2 返回指针值的函数 166
7.5.3 指向函数的指针 168
7.6 指针数组 170
7.6.1 指针数组的定义 170
7.6.2 指针数组的引用 171
7.7 指向指针的指针 172
7.7.1 指向指针的指针的定义 172
7.7.2 指向指针的指针的引用 173
本章小结 175
第8章 预编译 176
8.1 宏定义 176
8.1.1 不带参数的宏定义 176
8.1.2 带参数的宏定义 180
8.2 文件包含 182
8.3 条件编译 185
本章小结 186
第9章 结构体与共用体 187
9.1 结构体类型变量定义和引用 187
9.1.1 结构体类型定义 187
9.1.2 结构体类型变量定义 188
9.1.3 结构体类型变量的初始化 190
9.1.4 结构体类型变量的引用 191
9.2 结构体数组 192
9.2.1 结构体数组的定义 192
9.2.2 结构体数组的初始化 193
9.2.3 结构体数组的引用 193
9.2.4 结构体数组的应用举例 194
9.3 结构体指针 195
9.3.1 指向结构体变量的指针 195
9.3.2 指向结构体数组的指针 198
9.3.3 用指向结构体的指针作为函数参数 199
9.4 链表 201
9.4.1 用指针处理链表 201
9.4.2 存储功能管理函数 203
9.4.3 建立链表与插入结点 204
9.4.4 删除结点 206
9.5 共用体 207
9.5.1 共用体的概念 207
9.5.2 共用体类型的定义 208
9.5.3 共用体变量的定义 208
9.5.4 共用体变量的引用 209
9.5.5 共用体类型数据的特点 210
本章小结 211
第10章 位运算 212
10.1 位运算概述 212
10.2 位运算符和位运算 213
10.2.1 按位与运算符 213
10.2.2 按位或运算符 215
10.2.3 按位取反运算符 216
10.2.4 按位异或运算符 216
10.2.5 左移运算符 218
10.2.6 右移运算符 219
10.2.7 位运算赋值运算符 220
10.3 位运算应用举例 220
10.4 位段 224
10.4.1 位段的概念 224
10.4.2 位段的定义 224
10.4.3 位段的引用 225
本章小结 227
第11章 文件 228
11.1 文件概述 228
11.2 文件类型指针 230
11.3 文件的输入和输出 231
11.3.1 文件的打开和关闭 231
11.3.2 文件的字符输入和输出 233
11.3.3 文件的字符串输入/输出函数 237
11.3.4 文件的格式化输入/输出函数 239
11.3.5 文件的数据块输入/输出函数 243
11.4 文件的定位操作 246
11.5 文件的错误检测 250
本章小结 251
第12章 C语言综合应用 252
12.1 排序和查找算法 252
12.1.1 插入法排序及实现 252
12.1.2 希尔排序及实现 254
12.1.3 快速排序及实现 255
12.1.4 折半查找及实现 257
12.2 经典回溯问题 258
12.3 递归问题及实现 260
12.3.1 全排列的生成算法 260
12.3.2 青蛙过河问题 262
12.4 动态规划问题 264
12.4.1 动态规划思想 264
12.4.2 背包问题 265
12.5 趣味数学 266
12.5.1 验证哥德巴赫猜想 266
12.5.2 “三天打鱼两天晒网”问题 269
12.5.3 “平分七筐鱼”问题 270
12.5.4 百鸡问题 272
12.6 数值计算 273
12.6.1 正定矩阵求逆 273
12.6.2 拉格朗日插值 276
12.6.3 螺旋方阵 279
本章小结 282
附录1 ASCⅡ字符编码一览表 283
附录2 C语言中的关键字 284
附录3 库函数 285
附录4 运算符的优先级和结合性 289
参考文献 290