第1章C语言程序设计概述 1
1.1算法与程序设计 1
1.1.1算法 1
1.1.2程序 3
1.1.3程序设计语言 4
1.1.4程序设计的一般过程 4
1.2 C语言发展历史和特点 5
1.3 C语言程序的结构 7
1.3.1 C语言程序的一般形式 7
1.3.2 C程序中的主要成分 8
1.4 C语言上机环境及操作步骤 10
1.5用流程图表示算法 14
1.6结构化程序设计简介 15
1.6.1结构化程序 15
1.6.2结构化程序设计方法遵循的原则 15
习题1 17
第2章 数据类型与表达式 20
2.1 C语言的数据类型 20
2.2常量和变量 21
2.2.1常量和符号常量 21
2.2.2标识符与变量 21
2.3整型数据 23
2.3.1整型常量 23
2.3.2整型变量 24
2.4实型数据 26
2.4.1实型常量的表示方法 26
2.4.2实型变量 27
2.4.3双精度型数据 28
2.5字符型数据 28
2.5.1字符常量 28
2.5.2字符变量 30
2.5.3字符串常量 31
2.6系统函数 32
2.6.1简例 32
2.6.2常用数学函数 33
2.7 C运算符概述 34
2.8算术运算符 34
2.8.1基本的算术运算符 34
2.8.2算术表达式和运算符的优先级与结合性 35
2.8.3自加、自减运算符 36
2.8.4类型转换运算符及类型转换 37
2.9关系运算符和逻辑运算符 38
2.9.1关系运算符 38
2.9.2逻辑运算符 39
2.9.3条件运算符 40
2.10位运算符与长度运算符 41
2.10.1原码、反码和补码 41
2.10.2移位运算符 42
2.10.3位逻辑运算符 43
2.10.4求长度运算符 44
2.11赋值运算符和赋值表达式 45
2.11.1赋值运算符和赋值表达式 45
2.11.2类型转换问题 45
2.11.3算术复合赋值运算符 46
2.11.4位复合赋值运算符 46
2.11.5赋值运算符的优先级与结合性 46
2.12逗号运算符和逗号表达式 47
2.13运算符的优先级与表达式的分类 48
2.13.1运算符的优先级 48
2.13.2 C表达式的分类 48
习题2 49
第3章 简单的C程序设计 54
3.1 C语句概述 54
3.2赋值语句和表达式语句 54
3.2.1赋值语句 54
3.2.2表达式语句 56
3.3格式化输入/输出 56
3.3.1 printf()函数 56
3.3.2 scanf()函数 60
3.4字符数据的输入/输出 63
3.4.1 putchar()函数 63
3.4.2 getchar()函数和getch()函数 64
3.5顺序结构程序举例 65
习题3 66
第4章 控制结构程序设计 71
4.1 if语句和条件运算符 71
4.1.1 if语句 71
4.1.2 if语句的嵌套 73
4.1.3条件运算符 75
4.2 switch-case语句 76
4.3 while循环语句 79
4.4 do …while循环语句 83
4.5 for循环语句 86
4.6三种循环比较及循环嵌套 90
4.6.1三种循环比较 90
4.6.2循环嵌套 91
4.7标号语句与goto语句、break语句和continue语句 93
4.7.1标号语句与无条件转移语句goto 93
4.7.2 break语句和continue语句 96
习题4 97
第5章 数组 105
5.1一维数组 105
5.1.1一维数组的定义 105
5.1.2一维数组元素的引用 106
5.1.3一维数组的初始化 107
5.1.4应用举例 107
5.2二维数组和多维数组 110
5.2.1二维数组的定义 110
5.2.2二维数组变量的存储 111
5.2.3二维数组元素的引用 112
5.2.4二维数组的初始化 113
5.2.5多维数组 113
5.2.6应用举例 114
5.3字符数组与字符串 117
5.3.1字符数组的定义 118
5.3.2字符数组元素的引用 118
5.3.3字符数组的初始化 118
5.3.4字符串的输入/输出 118
5.3.5字符串处理函数 120
5.3.6应用举例 123
习题5 126
第6章 函数和编译预处理 132
6.1函数的定义和调用 132
6.1.1函数定义的一般方式 132
6.1.2函数调用的方式 133
6.1.3形式参数与实际参数 134
6.2函数返回值和函数类型说明 135
6.2.1函数的返回值 135
6.2.2函数的类型声明 136
6.3数组或字符串作为函数参数 137
6.3.1数组元素作为函数的实参 137
6.3.2一维数组名作为函数参数 138
6.3.3多维数组名作为函数参数 140
6.3.4字符串作为函数参数 142
6.4函数的嵌套调用和递归调用 143
6.4.1函数的嵌套调用 143
6.4.2递归调用的形式 145
6.4.3递归函数的使用 145
6.44消去递归 146
6.5变量存储类型 147
6.5.1局部变量与全局变量 147
6.5.2自动变量 149
6.5.3寄存器变量 149
6.5.4外部变量 150
6.5.5静态变量 151
6.6内部函数与外部函数 154
6.6.1内部函数 154
6.6.2外部函数 154
6.7编译预处理 155
6.7.1宏定义 156
6.7.2文件包含 161
6.7.3条件编译 164
习题6 166
第7章 指针 175
7.1内存数据的指针与指针变量 175
7.2指针变量的定义及指针运算 176
7.2.1指针变量的定义 176
7.2.2指针变量的运算 177
7.2.3指针变量作为函数的参数 179
7.3数组元素的指针与数组的指针 181
7.3.1数组元素的指针 181
7.3.2数组的指针 183
7.3.3多维数组的指针 186
7.3.4指向由m个元素组成的一维数组的指针变量 187
7.4函数的指针和返回指针的函数 190
7.4.1指向函数的指针变量 190
7.4.2返回指针的函数 192
7.5字符指针 193
7.5.1字符串的指针 193
7.5.2字符数组和字符指针变量的区别 195
7.6指针数组与指向指针的指针 196
7.6.1指针数组 196
7.6.2指向指针的指针 197
7.6.3命令行参数 200
7.7指针类型小结及相关说明 202
7.7.1指针类型小结 202
7.7.2与指针相关的运算 202
7.7.3使用指针的利与弊 203
习题7 203
第8章 结构体与共用体 209
8.1结构体类型与结构体类型的变量 209
8.1.1结构体类型的定义 209
8.1.2结构体类型变量的定义 211
8.1.3结构体类型变量的引用 212
8.1.4结构体类型变量的初始化 213
8.2结构体数组 214
8.3指向结构体类型数据的指针 217
8.3.1指向结构体变量的指针变量 217
8.3.2指向结构体数组的指针 219
8.3.3用结构体变量(或数组)作为函数参数 221
8.4内存的动态分配与单链表 224
8.4.1存储空间的动态分配 224
8.4.2单链表的存储 225
8.4.3单链表的基本操作 226
8.4.4单链表上的其他操作 232
8.5共用体 234
8.5.1共用体类型及共用体类型变量的定义 234
8.5.2共用体变量的引用 235
8.5.3使用共用体应注意的问题 235
8.6位段 236
8.6.1位段的概念 236
8.6.2使用位段应注意的问题 237
8.7枚举类型 238
8.7.1枚举类型的定义和枚举变量的定义 238
8.7.2枚举类型在使用中应注意的问题 239
8.8 typedef语句 240
8.8.1 typedef语句的一般形式及使用方法 240
8.8.2使用typedef语句应注意的问题 241
习题8 243
第9章 文件 247
9.1 C语言文件概述 247
9.2文件类型指针 249
9.3文件的打开与关闭 249
9.3.1文件的打开 249
9.3.2文件的关闭 251
9.4文件的读写 251
9.4.1文件的字符读写函数 251
9.4.2文件的字符串读写函数 253
9.4.3文件的数据块读写函数 255
9.4.4文件的格式化读写函数 257
9.4.5文件的其他读写函数 258
9.5文件的定位 259
9.5.1 rewind()函数 259
9.5.2 ftell()函数 260
9.5.3 fseek()函数 260
9.6文件操作中的错误检测 264
9.6.1 ferror()函数 264
9.6.2 clearerr()函数 264
9.6.3 feof()函数 265
9.6.4常用文件操作函数表 265
习题9 265
第10章C语言上机实验 271
10.1 C语言上机环境 271
10.1.1 Visual C+++ 6.0集成开发环境 271
10.1.2利用Turbo C运行C语言程序 277
10.2上机实验内容 280
实验一 顺序结构(数据类型、输入与输出) 280
实验二 选择结构 281
实验三 循环控制 282
实验四 数组 282
实验五 函数 283
实验六 编译预处理 284
实验七 指针 285
实验八 结构体与共用体 285
实验九 位运算 286
实验十 文件 286
附录A C语言的字符集 288
附录B C语言的关键字 289
附录C C语言的库函数 290
参考文献 296