第1章 绪论 1
1.1 程序设计语言 1
1.1.1 程序设计语言的发展 1
1.1.2 C语言的发展及特点 2
1.2 程序运行环境 2
1.2.1 Turbo C 3.0的安装 2
1.2.2 简单程序的编写和运行过程 3
1.3 C程序介绍 7
1.3.1 程序 8
1.3.2 程序的结构特点 10
1.3.3 C语言的词汇 10
1.4 小结与提高 11
1.5 思考与练习 11
第2章 数据类型及其运算 13
2.1 C语言的数据类型 13
2.2 常量与变量 14
2.2.1 常量 14
2.2.2 变量 17
2.2.3 变量存储 19
2.2.4 类型转换 21
2.3 运算符和表达式 22
2.3.1 算术运算符和算术表达式 22
2.3.2 赋值运算符和赋值表达式 25
2.3.3 逗号运算符和逗号表达式 26
2.3.4 运算符的优先级别 27
2.4 输入/输出函数 27
2.4.1 格式输入函数 28
2.4.2 格式输出函数 30
2.5 小结与提高 34
2.6 思考与练习 34
第3章 结构化程序设计 39
3.1 结构化程序设计概述 39
3.1.1 自上而下分析设计问题 40
3.1.2 模块化程序设计 40
3.2 C语句概述 41
3.2.1 C语句分类 41
3.2.2 赋值语句 43
3.3 程序的三种基本结构 43
3.3.1 顺序结构 44
3.3.2 选择结构 44
3.3.3 循环结构 45
3.4 字符输入/输出函数 45
3.4.1 字符输入函数 46
3.4.2 字符输出函数 48
3.5 顺序程序举例 49
3.6 小结与提高 52
3.7 思考与练习 52
第4章 选择结构程序设计 56
4.1 关系运算符与关系表达式 56
4.1.1 关系运算符及其优先次序 56
4.1.2 关系表达式 57
4.2 逻辑运算符与逻辑表达式 58
4.2.1 逻辑运算符及其优先次序 58
4.2.2 逻辑表达式 58
4.3 if语句 60
4.3.1 if语句的三种形式 60
4.3.2 if语句的嵌套 64
4.3.3 条件运算符 67
4.4 switch语句实现多分支选择结构 67
4.5 程序举例 70
4.6 小结与提高 73
4.7 思考与练习 74
第5章 循环结构程序设计 79
5.1 while和do...while语句 79
5.1.1 while语句 79
5.1.2 do...while语句 84
5.1.3 while语句与do...while语句比较 88
5.2 for语句 89
5.3 continue语句和break语句 92
5.3.1 continue语句 92
5.3.2 break语句 93
5.4 循环嵌套 94
5.5 程序举例 96
5.6 goto语句 100
5.7 小结与提高 101
5.8 思考与练习 101
第6章 数组 107
6.1 一维数组的定义和引用 107
6.1.1 一维数组的定义 107
6.1.2 一维数组的引用 108
6.1.3 一维数组的初始化 109
6.1.4 一维数组的程序举例 111
6.2 二维数组的定义和引用 113
6.2.1 二维数组的定义 114
6.2.2 二维数组的引用 114
6.2.3 二维数组的初始化 115
6.2.4 二维数组的程序举例 116
6.3 字符串的处理 119
6.3.1 字符数组的定义及引用 119
6.3.2 字符串和字符串的结束标志 120
6.3.3 字符串处理函数 121
6.3.4 字符串程序举例 125
6.4 小结与提高 127
6.5 思考与练习 128
第7章 函数 133
7.1 函数概述 133
7.2 函数定义的一般形式 134
7.3 函数的调用 136
7.3.1 函数调用的一般形式 136
7.3.2 函数调用的方式 136
7.3.3 对被调函数的声明 137
7.4 函数参数和函数的值 138
7.4.1 形参和实参 138
7.4.2 函数的返回值 140
7.4.3 标准库函数举例 141
7.5 函数的嵌套调用 142
7.6 函数的递归调用 143
7.6.1 递归调用的概念 143
7.6.2 递归调用的执行过程 144
7.6.3 递归调用函数应用举例 145
7.7 数组作函数的参数 146
7.8 局部变量与全局变量 150
7.8.1 局部变量 150
7.8.2 全局变量 152
7.9 变量的存储类别 154
7.9.1 动态存储方式与静态存储方式 154
7.9.2 用auto声明局部变量 154
7.9.3 用static声明局部变量 155
7.9.4 register变量 156
7.9.5 用extern声明外部变量 157
7.9.6 用static声明全局变量 159
7.10 内部函数与外部函数 159
7.11 小结与提高 161
7.12 思考与练习 162
第8章 编译预处理 168
8.1 宏定义 168
8.1.1 不带参数的宏定义 168
8.1.2 带参数的宏定义 171
8.1.3 取消宏定义 174
8.2 文件包含 175
8.3 条件编译 177
8.4 小结与提高 179
8.5 思考与练习 180
第9章 结构体与共用体 184
9.1 结构体 184
9.1.1 结构体类型的定义 184
9.1.2 结构体变量的定义 186
9.1.3 结构体变量的引用 188
9.1.4 结构体变量的初始化 189
9.1.5 结构体数组 191
9.1.6 结构体作函数的参数 194
9.1.7 结构体举例 196
9.2 共用体 198
9.2.1 共用体类型的定义 198
9.2.2 共用体类型变量的定义 199
9.2.3 共用体变量的引用 200
9.2.4 共用体变量的初始化 200
9.3 枚举类型 202
9.3.1 枚举类型的定义 203
9.3.2 枚举变量的定义和初始化 203
9.3.3 枚举变量举例 204
9.4 用typedef定义类型 206
9.5 小结与提高 208
9.6 思考与练习 210
第10章 指针 215
10.1 地址和指针 215
10.1.1 内存单元地址 215
10.1.2 指针的定义 216
10.2 变量的指针和指向变量的指针变量 217
10.2.1 指针变量的定义 217
10.2.2 指针变量的初始化 218
10.2.3 指针变量的引用 219
10.2.4 指针变量作函数参数 225
10.3 数组的指针和指向数组的指针变量 228
10.3.1 指向一维数组的指针 228
10.3.2 指向二维数组的指针 231
10.3.3 指向字符串的指针变量 234
10.3.4 指向数组的指针变量作函数的参数 237
10.4 函数的指针和指向函数的指针变量 239
10.4.1 用函数的指针变量调用函数 239
10.4.2 用指向函数的指针作函数的参数 240
10.5 返回指针值的函数 242
10.6 指针数组和指向指针的指针 244
10.6.1 指针数组的概念 244
10.6.2 指向指针的指针 249
10.6.3 指针数组作main函数的参数 251
10.7 结构体的指针与指向结构体的指针变量 252
10.7.1 指向结构体的指针 252
10.7.2 动态存储分配 256
10.7.3 链表 258
10.8 小结与提高 264
10.9 思考与练习 265
第11章 位运算 269
11.1 位运算符和表达式 269
11.1.1 按位与 269
11.1.2 按位或 270
11.1.3 按位异或 271
11.1.4 取反 272
11.1.5 左移和右移 273
11.1.6 位运算赋值运算符 274
11.1.7 不同长度的数据进行位运算 274
11.2 位运算举例 274
11.3 位段 275
11.4 小结与提高 277
11.5 思考与练习 278
第12章 文件 280
12.1 文件概述 280
12.2 文件类型指针 281
12.3 文件的打开与关闭 282
12.3.1 文件的打开 282
12.3.2 文件的关闭 284
12.4 文件的读/写 284
12.4.1 fputc函数和fgetc函数 284
12.4.2 字符串读/写函数fgets和fputs 286
12.4.3 fprintf函数和fscanf函数 288
12.4.4 fread函数和fwrite函数 290
12.5 文件的定位 293
12.5.1 rewind函数 293
12.5.2 fseek函数和随机读写 294
12.5.3 ftell函数 296
12.6 小结与提高 297
12.7 思考与练习 298
附录Ⅰ 常用字符与ASCII代码对照表 301
附录Ⅱ C语言中的关键字 302
附录Ⅲ 运算符与结合性 303
附录Ⅳ C语言库函数 305
主要参考文献 311