第1章 绪论 1
1.1 程序设计语言 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级程序设计语言 3
1.2 C语言及其家族 4
1.2.1 C语言 4
1.2.2 C++ 5
1.2.3 C# 5
1.3 C语言的特点 5
1.4 C语言的词汇 6
1.5 C语言程序的结构与书写规则 8
1.5.1 C语言程序的总体结构 8
1.5.2 函数的一般结构 9
1.5.3 书写程序时应遵循的规则 9
1.6 算法 10
1.6.1 算法的概念 10
1.6.2 算法的特性 11
1.6.3 算法的描述 12
1.7 结构化程序设计方法 13
1.7.1 结构化程序设计的主要原则 13
1.7.2 程序设计的步骤 14
1.8 C程序的上机步骤 15
本章小结 18
习题 18
第2章 数据类型、运算符和表达式 21
2.1 C语言的数据类型 21
2.2 常量与变量 22
2.2.1 常量 22
2.2.2 变量 23
2.3 整型数据 24
2.3.1 整型常量 24
2.3.2 整型变量 25
2.4 实型数据 28
2.4.1 实型常量的表示方法 28
2.4.2 实型变量 29
2.5 字符型数据 31
2.5.1 字符常量 31
2.5.2 字符变量 33
2.5.3 字符串常量 34
2.6 数据类型的转换 35
2.6.1 自动转换 35
2.6.2 强制类型转换 36
2.7 运算符和表达式 37
2.7.1 运算符 37
2.7.2 算术运算符和算术表达式 38
2.7.3 赋值运算符和赋值表达式 40
2.7.4 逗号运算符和逗号表达式 42
2.7.5 数据类型长度运算符 43
本章小结 44
习题 45
第3章 结构化程序设计 49
3.1 顺序结构程序设计 49
3.1.1 赋值语句 49
3.1.2 数据输入和输出的概念 50
3.1.3 字符数据的输入输出 51
3.1.4 格式输出函数printf 53
3.1.5 格式输入函数scanf 56
3.1.6 顺序结构程序设计举例 59
3.2 选择结构程序设计 60
3.2.1 关系运算符和关系表达式 60
3.2.2 逻辑运算符和逻辑表达式 62
3.2.3 if语句 65
3.2.4 if语句的嵌套 68
3.2.5 条件运算符和条件表达式 71
3.2.6 多分支选择语句 72
3.2.7 选择结构程序举例 75
3.3 循环结构程序设计 78
3.3.1 while语句 78
3.3.2 do-while语句 80
3.3.3 for语句 82
3.3.4 break和continue语句 83
3.3.5 循环的嵌套 85
3.3.6 几种循环的比较 86
3.3.7 循环程序应用举例 86
本章小结 92
习题 93
第4章 数组 107
4.1 一维数组 107
4.1.1 一维数组的定义和初始化 107
4.1.2 一维数组元素的引用 109
4.1.3 一维数组应用举例 110
4.2 二维数组 115
4.2.1 二维数组的定义和引用 115
4.2.2 二维数组应用举例 119
4.3 字符数组 122
4.3.1 字符数组的定义和初始化 123
4.3.2 字符数组的输入和输出 124
4.3.3 字符串处理函数 127
4.3.4 字符数组应用举例 130
本章小结 132
习题 132
第5章 指针 140
5.1 指针的基本概念 140
5.1.1 地址和指针 140
5.1.2 指针变量的定义和初始化 141
5.1.3 指针变量的引用 142
5.2 指针和数组 144
5.2.1 指向数组元素的指针 144
5.2.2 用指针访问数组元素 145
5.3 指向多维数组的指针变量 148
5.3.1 多维数组元素的地址 148
5.3.2 指向多维数组元素的指针变量 149
5.3.3 指向多维数组中一维数组的指针变量 150
5.4 字符串与指针变量 152
5.4.1 指向字符串的指针 152
5.4.2 字符串指针应用举例 153
5.5 指针数组和指向指针的指针 155
5.5.1 指针数组的概念 155
5.5.2 数组指针和指针数组的区别 157
5.5.3 指向指针的指针 158
本章小结 159
习题 161
第6章 函数 165
6.1 函数的定义和调用 165
6.1.1 函数定义 165
6.1.2 函数的调用 167
6.1.3 函数的返回值 168
6.1.4 函数的声明 169
6.1.5 函数的嵌套调用 170
6.2 函数间的参数传递 173
6.2.1 传值参数 173
6.2.2 指针参数 176
6.2.3 数组参数 179
6.3 函数的递归调用 184
6.3.1 递归的定义 184
6.3.2 递归函数的设计 184
6.3.3 递归函数的执行过程 186
6.4 作用域和存储类别 188
6.4.1 局部变量 188
6.4.2 全局变量 189
6.4.3 存储方式 192
6.4.4 存储类别 192
6.4.5 作用域和生存期 195
6.5 函数指针和指针函数 196
6.5.1 函数指针 196
6.5.2 指针函数 199
6.6 内部函数和外部函数 200
6.7 带参主函数 202
本章小结 204
习题 205
第7章 编译预处理 214
7.1 宏定义 214
7.1.1 无参宏定义 214
7.1.2 带参宏定义 217
7.2 文件包含 221
7.3 条件编译 222
本章小结 224
习题 225
第8章 结构体与共用体 232
8.1 结构体定义 232
8.1.1 结构体类型定义 232
8.1.2 定义结构体变量 233
8.2 结构体变量的引用和初始化 236
8.2.1 结构体变量的引用 236
8.2.2 结构体变量的初始化 237
8.3 结构体数组 239
8.3.1 结构体数组的定义 239
8.3.2 结构体数组的初始化 240
8.4 结构体指针变量 242
8.4.1 指向结构体变量的指针 242
8.4.2 指向结构体数组的指针 244
8.4.3 结构体指针变量作函数参数 245
8.5 动态存储分配 247
8.6 链表 249
8.7 共用体 254
8.7.1 共用体的定义 254
8.7.2 共用体变量的引用 255
8.8 枚举类型 257
8.9 定义已有类型的别名 260
本章小结 262
习题 263
第9章 位运算 270
9.1 位运算符 270
9.1.1 按位与运算 270
9.1.2 按位或运算 271
9.1.3 按位异或运算 271
9.1.4 求反运算 273
9.1.5 左移运算 273
9.1.6 右移运算 274
9.2 位域(位段) 275
本章小结 278
习题 278
第10章 文件 281
10.1 文件的分类 281
10.2 文件的打开与关闭 282
10.2.1 文件缓冲区 282
10.2.2 文件指针 283
10.2.3 文件的打开(fopen函数) 283
10.2.4 文件的关闭(fclose函数) 285
10.3 文件的读写 285
10.3.1 字符读写函数fgetc和fputc 285
10.3.2 字符串读写函数fgets和fputs 289
10.3.3 数据块读写函数fread和fwrite 290
10.3.4 格式化读写函数fscanf和fprintf 292
10.4 文件的随机读写 294
10.4.1 文件定位 294
10.4.2 随机读写 295
10.5 文件检测函数 296
本章小结 297
习题 298
附录 303
附录A 数在计算机中的表示 303
A.1 数制及转换 303
A.2 计算机中的数和编码 309
附录B Turbo C(V2.0)编译错误信息 313
附录C ASCII对照表 318
附录D C语言常用库函数 320
参考文献 324