第1章 程序设计概述 1
1.1 计算机与程序设计语言 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 2
1.2 C语言的发展和特点 4
1.2.1 C语言的发展 4
1.2.2 C语言的特点 6
1.3 C语言的应用 7
1.3.1 简单的C语言程序实例 7
1.3.2 C语言程序的结构 10
1.4 C程序的工作原理与操作环境 12
1.4.1 工作原理 12
1.4.2 操作环境 14
习题 20
第2章 C数据类型 22
2.1 C语言的数据类型 22
2.2 常量和变量 23
2.2.1 标识符 23
2.2.2 常量和符号常量 24
2.2.3 变量 25
2.3 整型数据 26
2.3.1 整型常量 26
2.3.2 整型数据在内存中的存储形式 26
2.3.3 整型变量 27
2.3.4 整型常量的类型 30
2.3.5 整型类型大小 30
2.4 实型数据 30
2.4.1 实型常量 30
2.4.2 实型数据在内存中的存储形式 31
2.4.3 实型变量 32
2.4.4 实型类型大小 33
2.5 字符型数据 33
2.5.1 字符常量 34
2.5.2 字符变量 35
2.5.3 字符数据在内存中的存储形式及使用方法 35
2.5.4 字符串常量 37
习题 38
第3章 顺序结构程序设计 40
3.1 赋值运算符与赋值表达式 40
3.1.1 赋值运算符 40
3.1.2 赋值表达式 41
3.1.3 赋值语句 41
3.1.4 左值和右值 42
3.1.5 不同数据类型间的赋值规则 42
3.2 算术运算符与算术表达式 44
3.2.1 算术运算符 44
3.2.2 算术表达式 45
3.2.3 运算符的优先级和结合性 45
3.2.4 自增自减运算符 46
3.2.5 算术运算中数据类型转换规则 48
3.2.6 sizeof运算符、复合赋值运算符 49
3.3 数据的格式化输出 50
3.3.1 整数的输出 53
3.3.2 实数的输出 56
3.3.3 字符和字符串的输出 58
3.3.4 格式化输出总结 59
3.4 数据的格式化输入 61
3.5 单个字符的输入和输出 65
3.5.1 单个字符输出函数putchar 65
3.5.2 单个字符输入函数getchar 66
3.6 宏定义与宏替换 67
3.6.1 无参宏定义 67
3.6.2 带参宏定义 70
3.7 程序举例 71
习题 73
第4章 选择结构程序设计 75
4.1 算法及其描述方法 75
4.1.1 算法的概念 75
4.1.2 算法的表示 76
4.2 关系运算符与关系表达式 83
4.2.1 关系运算符 83
4.2.2 关系表达式 84
4.3 逻辑运算符与逻辑表达式 85
4.3.1 逻辑运算符 85
4.3.2 逻辑表达式 86
4.4 单分支与双分支结构 88
4.4.1 单分支结构 88
4.4.2 双分支结构 90
4.4.3 if语句的嵌套 93
4.5 条件运算符与条件表达式 96
4.6 多分支结构 98
4.6.1 多分支结构的条件语句 98
4.6.2 多分支结构的开关语句 100
4.7 程序举例 103
习题 110
第5章 循环结构程序设计 113
5.1 循环结构程序的概念 113
5.2 while循环 114
5.3 do-while循环 117
5.4 逗号表达式 120
5.5 for循环 121
5.6 循环的嵌套 128
5.7 流程的转移控制 131
5.7.1 goto语句 131
5.7.2 break语句 132
5.7.3 continue语句 133
5.8 几种循环的比较 136
5.9 程序举例 136
习题 140
第6章 数组 142
6.1 数组的概念 142
6.2 一维数组 144
6.2.1 一维数组的定义 144
6.2.2 一维数组的引用 145
6.2.3 一维数组的初始化 147
6.3 二维数组 154
6.3.1 二维数组的定义 154
6.3.2 二维数组的引用 155
6.3.3 二维数组的初始化 157
6.4 字符数组 159
6.4.1 字符数组与字符串 159
6.4.2 字符数组的定义与初始化 160
6.4.3 字符数组的输入与输出 162
6.4.4 字符串处理函数 165
6.5 程序举例 170
习题 176
第7章 函数 179
7.1 函数的概念 179
7.2 函数定义与返回值 181
7.2.1 函数类型 181
7.2.2 函数定义 183
7.3 函数调用 184
7.3.1 函数调用的形式 184
7.3.2 函数调用时的参数传递 185
7.4 函数声明 186
7.5 函数的嵌套与递归调用 193
7.5.1 函数的嵌套调用 193
7.5.2 函数的递归调用 196
7.6 数组作为函数参数 198
7.6.1 数组元素作为函数参数 198
7.6.2 一维数组作为函数参数 200
7.6.3 二维数组作为函数参数 202
7.7 变量的作用域和存储类型 206
7.7.1 变量的作用域 206
7.7.2 变量的存储类型 210
7.8 编译预处理 214
7.9 综合实例 217
习题 231
第8章 指针 236
8.1 指针的概念 236
8.2 指针变量的定义 238
8.2.1 定义指针变量 238
8.2.2 引用指针变量 239
8.2.3 指针变量作为函数参数 243
8.3 指针与数组 247
8.3.1 数组元素的指针 247
8.3.2 一维数组的地址和指针 248
8.3.3 二维数组的地址和指针 256
8.4 字符串和指针 260
8.4.1 使用字符指针变量访问字符串常量 260
8.4.2 使用字符指针变量访问字符串变量 263
8.4.3 字符指针变量与字符数组的区别 265
8.5 指针与函数 268
8.5.1 指向函数的指针 268
8.5.2 返回指针的函数 270
8.6 指针的高级应用 272
8.6.1 指针数组 272
8.6.2 main函数的命令行参数 274
8.6.3 动态内存分配 275
习题 282
第9章 结构体和共用体 286
9.1 结构体类型和结构体变量 286
9.1.1 结构体类型的定义 287
9.1.2 结构体变量的定义 289
9.1.3 结构体变量的引用 291
9.1.4 结构体变量的初始化 294
9.1.5 结构体变量的举例 295
9.2 结构体数组 296
9.2.1 结构体数组的定义 297
9.2.2 结构体数组的引用 298
9.2.3 结构体数组的初始化 299
9.2.4 结构体数组的举例 300
9.3 结构体指针 301
9.3.1 指向结构体变量的指针 302
9.3.2 指向结构体数组的指针 303
9.4 链表 306
9.4.1 链表概念 306
9.4.2 链表相关操作 308
9.5 共用体 325
9.5.1 共用体类型和共用体变量的定义 325
9.5.2 共用体变量的引用和初始化 328
9.5.3 共用体变量的举例 331
9.6 枚举类型 333
9.7 用typedef定义新类型名 335
习题 337
第10章 文件 339
10.1 文件概述 339
10.1.1 文件的概念 339
10.1.2 文件的分类 340
10.1.3 文件指针 341
10.2 文件的打开与关闭 341
10.2.1 文件的打开 341
10.2.2 文件的关闭 343
10.2.3 文件的检测 344
10.3 文件的读写操作 345
10.3.1 字符读写函数 345
10.3.2 字符串读写函数 348
10.3.3 格式化读写函数 351
10.3.4 数据块读写函数 356
10.4 文件的随机读写 360
习题 365
附录A C语言中的关键字 370
附录B C运算符的优先级与结合性 372
附录C 常用字符与ASCII值对照表 373
附录D 常用的ANSI C标准库函数 374
参考文献 381