目录
目 录
第1章 C语言概述 1
1.1 程序设计语言及其发展 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 2
1.2 C语言的历史 3
1.3 C语言的标准 4
1.4 C语言的程序结构 5
1.4.1 简单的C语言程序剖析 5
1.4.2 C语言程序的基本结构 9
1.5 C语言程序的运行 9
1.5.1 运行C语言程序的步骤 9
1.5.2 集成开发环境 10
1.6 本书的约定 10
1.6.1 示例代码的约定 10
1.6.2 图示的约定 10
1.6.3 本书使用的C语言标准 11
1.7 本章小结 11
1.8 习题 11
第2章 C语言程序设计基础 13
2.1 常量 13
2.1.1 整型常量 13
2.1.2 浮点型常量 14
2.1.3 单字符常量 14
2.1.4 字符串常量 16
2.1.5 符号常量 16
2.2 变量 17
2.2.1 变量名 17
2.2.2 变量的类型 18
2.2.3 sizeof运算符 20
2.2.4 变量的定义及操作 21
2.3 运算符与表达式 22
2.3.1 算术运算符和算术表达式 23
2.3.2 关系运算符和关系表达式 24
2.3.3 逻辑运算符和逻辑表达式 24
2.3.4 赋值运算符和赋值表达式 26
2.3.5 自增、自减运算符 27
2.3.6 条件运算符 28
2.3.7 逗号运算符和逗号表达式 28
2.4 运算符的优先级与结合性 29
2.4.1 优先级 29
2.4.2 结合性 29
2.5 类型转换 30
2.5.1 隐式类型转换 30
2.5.2 显式类型转换 31
2.6 本章小结 32
2.7 习题 32
第3章 输入与输出 35
3.1 读入一个字符:getchar函数 35
3.2 输出一个字符:putchar函数 36
3.3 格式化输入:scanf函数 37
3.3.1 整数的输入 38
3.3.2 实数的输入 39
3.3.3 单个字符的输入 39
3.3.4 字符串的输入 40
3.3.5 使用scanf函数的注意事项 40
3.3.6 scanf函数常用的转换码 41
3.3.7 scanf函数的返回值 42
3.4 格式化输出:printf函数 43
3.5 程序举例 45
3.6 本章小结 48
3.7 习题 48
第4章 选择结构程序设计 51
4.1 程序流程图简介 51
4.2 if语句 52
4.2.1 简单if语句 52
4.2.2 if...else语句 53
4.2.3 嵌套if...else语句 54
4.2.4 阶梯式if...else语句 56
4.3 switch语句 57
4.4 本章小结 59
4.5 习题 59
第5章 循环结构程序设计 63
5.1 goto语句 63
5.2 while语句 65
5.3 do...while语句 67
5.4 for语句 68
5.5 break语句与continue语句 70
5.5.1 break语句 70
5.5.2 continue语句 71
5.6 循环的嵌套 72
5.7 本章小结 73
5.8 习题 74
第6章 数组 77
6.1 一维数组 77
6.1.1 一维数组的定义 77
6.1.2 一维数组的引用 78
6.1.3 一维数组的初始化与赋值 79
6.1.4 一维数组的应用举例 80
6.2 二维数组 81
6.2.1 二维数组的定义 82
6.2.2 二维数组的引用 82
6.2.3 二维数组的初始化与赋值 83
6.3 字符数组与字符串 84
6.3.1 字符数组的定义 85
6.3.2 字符数组的初始化与赋值 85
6.3.3 字符串和字符数组 86
6.3.4 字符数组的输入/输出 87
6.3.5 字符串处理函数 88
6.4 本章小结 92
6.5 习题 93
第7章 函数 97
7.1 函数概述 97
7.2 函数声明 100
7.3 函数定义和函数调用 101
7.3.1 函数定义 101
7.3.2 函数调用 102
7.3.3 参数传递 103
7.4 程序举例 106
7.5 函数的嵌套调用和递归调用 108
7.5.1 函数的嵌套调用 108
7.5.2 函数的递归调用 109
7.6 变量的作用域 112
7.6.1 局部变量 113
7.6.2 全局变量 114
7.7 变量的存储类别 116
7.8 本章小结 118
7.9 习题 118
第8章 指针 123
8.1 指针概述 123
8.2 访问变量的地址 124
8.3 指针变量的定义与运算 125
8.3.1 指针变量的定义 125
8.3.2 指针变量的初始化与赋值 126
8.3.3 通过指针访问变量 126
8.3.4 指针的运算 130
8.4 指针与一维数组 130
8.4.1 指针的偏移 130
8.4.2 数组名与指针的关系 131
8.4.3 指针法访问数组元素 134
8.5 指向指针的指针与指针数组 136
8.5.1 指向指针的指针 136
8.5.2 指针数组 138
8.6 指针与二维数组 141
8.6.1 指向二维数组元素的指针 141
8.6.2 二维数组名与指针 142
8.6.3 二维数组与指向一维数组的
指针变量 145
8.7 指针与字符串 146
8.8 指针兼容性 149
8.8.1 指针大小兼容 149
8.8.2 void指针 150
8.8.3 指针转换 151
8.9 指针与函数 152
8.9.1 指针作为实参 152
8.9.2 数组作为实参 154
8.9.3 指针型函数 156
8.9.4 函数指针变量 158
8.10 main函数的参数 159
8.11 本章小结 160
8.12 习题 160
第9章 编译预处理 165
9.1 概述 165
9.1.1 预处理器的工作方式 165
9.1.2 编译预处理命令 166
9.2 宏定义 166
9.2.1 不带参数的宏定义 167
9.2.2 带参数的宏定义 168
9.3 文件包含 169
9.4 条件编译 171
9.5 本章小结 172
9.6 习题 173
第10章 结构体、共用体与枚举类型 175
10.1 结构体 175
10.1.1 定义结构体类型 175
10.1.2 定义结构体变量 177
10.1.3 访问结构体成员 179
10.1.4 结构体变量的初始化 181
10.1.5 结构体嵌套 182
10.1.6 结构体数组 183
10.1.7 结构体指针变量 184
10.1.8 结构体与函数 187
10.2 共用体 190
10.2.1 定义共用体类型 190
10.2.2 定义共用体变量 190
10.2.3 访问共用体成员 192
10.2.4 共用体变量的赋值 192
10.2.5 共用体变量的初始化 192
10.2.6 共用体的应用 192
10.3 枚举类型 194
10.3.1 定义枚举类型 194
10.3.2 定义枚举类型变量 194
10.4 用typedef定义类型 195
10.5 本章小结 197
10.6 习题 197
第11章 文件管理 201
11.1 概述 201
11.2 文件的打开与关闭 202
11.2.1 文件指针 202
11.2.2 文本文件与二进制文件 203
11.2.3 文件的打开 203
11.2.4 文件的关闭 205
11.3 文件的读/写 206
11.3.1 fputc函数和fgetc函数 206
11.3.2 fread函数和fwrite函数 209
11.3.3 fscanf函数和fprintf函数 212
11.3.4 fgets函数和fputs函数 214
11.4 文件的定位 215
11.5 本章小结 218
11.6 习题 218
第12章 C语言高级程序设计 221
12.1 位运算 221
12.1.1 位运算符 222
12.1.2 按位与运算 222
12.1.3 按位或运算 223
12.1.4 按位异或运算 223
12.1.5 按位取反运算 224
12.1.6 左移运算符(<<) 224
12.1.7 右移运算符(>>) 225
12.1.8 程序举例 225
12.2 动态存储分配 226
12.2.1 malloc函数 227
12.2.2 calloc函数 229
12.2.3 realloc函数 230
12.2.4 free函数 230
12.3 链表 231
12.3.1 链表概述 231
12.3.2 单向链表的构造 234
12.3.3 单向链表的遍历 236
12.3.4 查找数据项 238
12.3.5 插入节点 239
12.3.6 删除节点 241
12.3.7 清空链表 242
12.4 本章小结 250
12.5 习题 250
第13章 C语言程序设计实验指导 253
实验一 C语言程序开发环境和C语言
程序基本结构 253
实验二 C语言程序设计基础 264
实验三 输入与输出 269
实验四 选择结构程序设计 275
实验五 循环结构程序设计 285
实验六 数组 292
实验七 函数 299
实验八 指针 306
实验九 编译预处理 316
实验十 结构体、共用体与枚举类型 322
实验十一 文件管理 329
实验十二 C语言高级程序设计 334
参考文献 341
附录A 部分ASCII码表 343
附录B C语言的部分关键字 345
附录C 运算符的优先级和结合性 347