第1章C语言概述 1
1.1程序设计语言的发展 1
1.2 C语言的发展过程 3
1.3 C语言的主要特点 4
1.4 C语言程序的结构 5
1.5 C语言程序的执行 8
1.5.1源程序翻译 9
1.5.2链接目标程序 10
1.6 C语言程序的开发工具 11
1.7本章小结 12
1.8问与答 12
习题一 12
第2章 基本的数据类型、运算符与程序语句 13
2.1数据在计算机内的存储形式 13
2.1.1字符型数据 13
2.1.2整型数据 14
2.1.3实型数据 14
2.2标识符、变量和常量 15
2.2.1标识符 15
2.2.2变量 15
2.2.3常量 16
2.3基本数据类型 16
2.3.1整型 17
2.3.2实型数据 18
2.3.3字符型 20
2.4运算符和表达式 23
2.4.1算术运算符和算术表达式 24
2.4.2关系运算符和关系表达式 26
2.4.3逻辑运算符和逻辑表达式 27
2.4.4赋值运算符和赋值表达式 28
2.4.5逗号运算符和逗号表达式 30
2.4.6位运算符与位运算 31
2.4.7 sizeof运算符 35
2.4.8数据类型的转换 35
2.4.9表达式的计算次序 37
2.4.10 C语句概述 37
2.5标准的输入/输出函数 38
2.5.1格式化输出函数printf() 38
2.5.2格式化输入函数scanf() 42
2.5.3字符输出函数putchar()、 putc()、putch() 44
2.5.4字符输入函数getchar()、 getc()、getch() 46
2.6程序范例 47
2.7本章小结 49
2.8问与答 51
习题二 52
第3章 算法设计与程序的控制结构 56
3.1算法的概念与特点 56
3.1.1什么是算法 56
3.1.2算法的特点 57
3.1.3引例 57
3.2算法的描述方法 60
3.2.1用自然语言表示算法 60
3.2.2用流程图表示算法 60
3.2.3用伪代码表示算法 65
3.2.4用计算机语言表示算法 65
3.3顺序结构 66
3.3.1顺序结构 66
3.3.2应用程序范例 67
3.4选择结构 68
3.4.1分支语句if()~与if()~else~ 68
3.4.2条件运算符和条件表达式 73
3.4.3多分支语句switch 74
3.4.4应用程序范例 76
3.5循环结构 80
3.5.1 while语句、 do~while语句和for语句 80
3.5.2单重循环应用程序范例 85
3.5.3嵌套循环及其应用程序范例 86
3.6程序流程的转移控制 87
3.6.1跳转语句goto 87
3.6.2 break和continue语句 88
3.6.3 exit()函数 90
3.6.4应用程序范例 91
3.7结构化程序设计方法 94
3.8本章小结 95
3.9问与答 96
习题三 99
第4章 函数与编译预处理 103
4.1函数的概念及其分类 103
4.2函数的定义 104
4.3函数的声明与调用 107
4.3.1函数能被使用的条件 107
4.3.2函数声明的场合 107
4.3.3函数声明的格式 108
4.3.4函数声明的位置 108
4.3.5函数的调用、参数与返回值 109
4.3.6函数的传值方式 110
4.4变量的作用域和存储类别 111
4.4.1变量的作用域 111
4.4.2变量的存储类别 112
4.5内部函数与外部函数 117
4.6递归函数 118
4.7编译预处理 123
4.7.1宏定义与宏替换 123
4.7.2文件包含预处理命令#include 126
4.7.3条件编译命令 127
4.8综合范例 129
4.9本章小结 130
4.10问与答 131
习题四 132
第5章 数组 136
5.1数组的应用场合 136
5.2一维数组的定义、引用和初始化 137
5.2.1一维数组的定义 137
5.2.2一维数组的初始化 137
5.2.3一维数组元素的引用与应用程序范例 138
5.2.4一维数组作为函数的参数与应用程序范例 142
5.3多维数组的定义、引用和初始化 147
5.3.1二维数组的概念 147
5.3.2二维数组的定义 147
5.3.3二维数组及多维数组的初始化 148
5.3.4二维数组元素的引用及其应用程序范例 149
5.3.5二维数组作为函数的参数与应用程序范例 152
5.4字符数组 156
5.4.1字符数组与字符串的关系 156
5.4.2字符数组的初始化 157
5.4.3字符串的输入 158
5.4.4字符串的输出 159
5.4.5字符串处理函数 160
5.4.6字符数组的应用程序范例 162
5.5本章小结 165
5.6问与答 166
习题五 166
第6章 指针 170
6.1指针的概念 170
6.1.1什么是指针 170
6.1.2为什么要引入指针概念 171
6.1.3指针变量的定义 171
6.1.4指针变量的使用 173
6.2指针的运算 176
6.2.1指针的算术运算 176
6.2.2指针的关系运算 177
6.3指针与数组之间的关系 177
6.3.1指向一维数组元素的指针及其应用程序范例 177
6.3.2指向二维数组的指针及其应用程序范例 180
6.3.3字符指针及其应用程序范例 181
6.3.4指针数组及其应用程序范例 183
6.4指针作为函数的参数及其应用程序范例 185
6.5指针作为函数的返回值及其应用程序范例 187
6.6指向函数的指针及其应用程序范例 189
6.7带参数的main函数及其应用程序范例 192
6.8指向指针的指针及其应用程序范例 194
6.9动态数组的实现 195
6.9.1 C程序的内存映像 195
6.9.2动态内存分配与释放函数 196
6.9.3一维动态数组的实现 199
6.9.4二维动态数组的实现 199
6.10图形处理函数的简单应用 200
6.11本章小结 204
习题六 205
第7章 构造数据类型 210
7.1问题的提出 210
7.2结构体数据类型 211
7.2.1结构体数据类型的定义 211
7.2.2关键字typedef的用法 212
7.2.3结构体变量的定义 213
7.2.4结构体变量的初始化 215
7.2.5结构体变量成员的引用 216
7.2.6结构体变量成员的输入/输出 218
7.3结构体数组 219
7.3.1结构体数组的定义与初始化 219
7.3.2结构体数组的应用程序范例 219
7.4结构体指针 220
7.4.1结构体指针变量的定义与应用程序范例 220
7.4.2结构体数组与指针变量及其应用程序范例 221
7.5结构体变量与函数 222
7.5.1结构体作为函数的形式参数与实际参数 222
7.5.2函数的返回值类型为结构体 223
7.6共用体(联合体)数据类型 224
7.6.1共用体(联合体)数据类型的定义 225
7.6.2共用体(联合体)类型变量的定义与引用 225
7.7枚举数据类型 228
7.7.1枚举数据类型的定义 228
7.7.2枚举类型变量的定义与引用 228
7.8单向链表的概念 230
7.8.1问题的提出 230
7.8.2单向链表的建立 231
7.8.3单向链表的节点的插入 231
7.8.4单向链表节点的删除 232
7.8.5单向链表的销毁 233
7.9位段 235
7.10本章小结 236
7.11问与答 236
习题七 237
第8章 文件 242
8.1问题的提出 242
8.2文件的概念 242
8.3文件操作的常用函数 243
8.3.1文件的打开与关闭 244
8.3.2文件的错误检测与处理 245
8.3.3文件的顺序读写及其范例 246
8.3.4文件的随机读写及其范例 251
8.4本章小结 252
8.5问与答 253
习题八 253
附录A C语言的保留字与关键字 256
附录B C语言运算符优先级结合性表 257
附录C ASCII字符表 258
附录D C语言常用库函数 260
参考文献 265