第1章 C语言程序设计的概念 1
1.1 程序与程序设计语言 1
1.1.1 计算机与程序 1
1.1.2 计算机程序设计语言 2
1.1.3 高级语言程序的开发过程 3
1.2 C语言及其标准 6
1.2.1 C语言的出现 6
1.2.2 C语言的标准 7
1.3.1 函数 8
1.3 C语言程序概要 8
1.3.2 语句 12
1.3.3 名字与声明 15
1.3.4 变量及其赋值 17
1.3.5 算术运算 19
1.3.6 赋值类运算符的副作用及限制 21
习题一 23
第2章 基本数据类型 26
2.1 基本数据类型的特征 27
2.1.1 数值的定点表示与浮点表示 27
2.1.3 类型宽度与取值范围 28
2.1.2 整数的有符号类型与无符号类型 28
2.2 数据常量 30
2.2.1 整型常量 30
2.2.2 字符类型及其常量 32
2.2.3 实型常量 35
2.2.4 符号常量 36
2.3 数据类型转换 37
2.3.1 几个概念 38
2.3.2 数据类型的隐式转换 40
2.4 数据的控制台输入与输出 42
2.3.3 数据类型的显式转换 42
2.4.1 格式化输出函数printf() 43
2.4.2 格式化输入函数scanf() 48
2.4.3 字符输入/输出函数getchar()与putchar() 56
习题二 58
第3章 C语言程序的流程控制 60
3.1 算法 60
3.1.1 算法的组成要素与基本性质 60
3.1.2 算法描述工具 62
3.1.3 自顶向下、逐步细化的算法设计过程 66
3.2.1 命题的“真”、“假”与C语言中的逻辑值 67
3.2 判断 67
3.2.2 关系运算与关系表达式 68
3.2.3 逻辑运算与逻辑表达式 69
3.3 选择型程序设计 71
3.3.1 if…else结构的应用 71
3.3.2 if-else if结构的应用 75
3.3.3 switch结构的应用 78
3.3.4 条件表达式 83
3.4 循环型程序设计 85
3.4.1 迭代与穷举算法 85
3.4.2 while结构 91
3.4.3 do…while结构 97
3.4.4 for结构 99
3.4.5 循环结构的中途退出与重复周期的中途结束 105
习题三 107
第4章 模块化程序设计 112
4.1 函数 112
4.1.1 设计C语言程序就是设计函数 112
4.1.2 函数结构 115
4.1.3 函数定义与函数声明 119
4.1.4 虚实结合与传值调用 121
4.1.5 递归函数 123
4.2 变量的存储属性 127
4.2.1 变量的作用域与生存期 127
4.2.2 C语言中变量的存储类型 132
4.2.3 通过const声明将变量存储在只读区 138
4.3 模块的编译与链接 139
4.3.1 分别编译 139
4.3.2 用项目管理多文件程序的编译与链接过程 142
4.3.3 头文件 142
4.4.1 字符串宏定义及其基本格式 143
4.4 宏定义与宏替换 143
4.4.2 使用宏需注意的问题 144
4.4.3 撤销已定义的宏 146
4.4.4 带参数的宏定义 147
习题四 149
第5章 数组 155
5.1 一维数组 155
5.1.1 一维数组定义及数组元素引用 155
5.1.2 数组元素的引用方法 156
5.1.3 一维数组的初始化 158
5.1.4 一维数组元素的查找与排序 161
5.1.5 数组与函数 166
5.2 字符串 170
5.2.1 字符数组与字符串 170
5.2.2 字符串的输入/输出 171
5.2.3 字符串处理函数 174
5.3 二维数组与多维数组 178
5.3.1 二维数组及其定义 178
5.3.2 二维数组的初始化 180
5.3.3 向函数传送二维数组 181
5.3.4 多维数组 183
习题五 186
第6章 指针 190
6.1 指针基础 190
6.1.1 地址与指针 190
6.1.2 指针变量及其定义 191
6.1.3 指针变量的引用 192
6.1.4 指针的移动与比较 195
6.1.5 指向指针变量的指针与多级指针 198
6.1.6 指向void类型的指针 199
6.2.1 数组元素的指针引用 200
6.2 指针与数组 200
6.2.2 多字符串的存储与处理 204
6.2.3 内存的动态分配与动态数组的建立 212
6.3 指针与函数 214
6.3.1 指针参数与函数的地址传送调用 214
6.3.2 带参数的主函数 223
6.3.3 返回指针值的函数 226
6.3.4 指向函数的指针 228
习题六 234
7.1.1 结构体类型及其定制 244
7.1 结构体类型基础 244
第7章 用户定制数据类型 244
7.1.2 定义结构体类型变量及对变量的初始化 246
7.1.3 结构体变量的操作 248
7.1.4 嵌套结构体类型 250
7.1.5 位段 252
7.2 结构体数组 254
7.2.1 结构体数组的定义与初始化 255
7.2.2 对结构体数组元素的操作 256
7.3 指向结构体的指针 258
7.3.1 指向结构体变量的指针 258
7.3.2 指向结构体数组的指针 260
7.4.1 链表的概念 262
7.4 链表 262
7.4.2 链表结点的定义与链接关系的建立 263
7.4.3 动态链表的建立 265
7.5 结构体与函数 271
7.5.1 结构体变量作为函数参数 271
7.5.2 用指向结构体变量的指针作为函数参数 271
7.5.3 返回结构体类型值的函数 272
7.6.1 共用体的特点 273
7.6 共用体类型数据 273
7.6.2 共用体变量的应用 275
7.7 枚举类型数据 277
7.8 用typedef定义类型 279
习题七 280
第8章 文件 284
8.1 文件的有关概念 284
8.1.1 文件及其分类 284
8.2 流的创建与撤销 285
8.2.1 FILE类型指针 285
8.1.2 文件名 285
8.1.3 文件的位置指针与读/写方式 285
8.2.2 流 286
8.2.3 文件的打开与关闭——流的创建与撤销 287
8.3 文件的顺序读/写 289
8.3.1 文件的字符读/写 290
8.3.2 文件的字符串读/写 295
8.3.3 文件的格式化读/写 297
8.3.4 文件的记录读/写 299
8.4 文件的随机读/写 301
8.4.2 文件随机读/写程序举例 302
8.4.1 文件位置指针的定位 302
8.5 文件操作的出错检测 304
8.5.1 ferror函数 304
8.5.2 fclearerr函数 304
习题八 305
附录 306
附录A C语言运算符的优先级与结合性 306
附录B C99关键字 307
附录C ASCII码表 307
附录D 常用C语言标准库函数 309
参考文献 326