1 C语言概述 1
1.1 概述 1
1.1.1 程序设计与高级语言 1
1.1.2 C语言的产生与发展 2
1.1.3 C语言的特点 3
1.2 C程序简介 4
1.2.1 简单的C程序实例 4
1.2.2 C程序设计规则 5
1.2.3 C程序的编译与运行 6
习题1 8
2 数据类型及基本运算 9
2.1 数据的表示 9
2.1.1 信息与数据的特征 9
2.1.2 数据类型 9
2.2 基本数据类型及其表示 10
2.2.1 标识符、常量与变量 10
2.2.2 整型数据 12
2.2.3 实型数据 12
2.2.4 字符型数据 13
2.3 基本运算符和表达式 14
2.3.1 算术运算符和算术表达式 14
2.3.2 赋值运算符和赋值表达式 17
2.3.3 逗号运算符和逗号表达式 18
2.3.4 位运算符和位表达式 19
习题2 21
3 顺序结构程序设计 25
3.1 语句概述 25
3.2 表达式语句 26
3.3 数据的输出 26
3.3.1 putchar函数 27
3.3.2 printf函数 27
3.4 数据的输入 30
3.4.1 getchar函数 30
3.4.2 scanf函数 30
3.5 顺序结构程序设计举例 32
习题3 34
4 选择结构程序设计 37
4.1 条件 37
4.1.1 关系运算 38
4.1.2 逻辑运算 38
4.1.3 条件运算 40
4.2 if语句 41
4.2.1 单边形式if语句 41
4.2.2 双边形式if语句 42
4.2.3 if语句的嵌套 43
4.3 switch语句 46
4.3.1 switch语句的结构 46
4.3.2 switch与break配合使用 47
4.4 应用举例 48
习题4 50
5 循环结构程序设计 52
5.1 while语句 52
5.2 do-while语句 54
5.3 for语句 56
5.4 循环结构中的转移语句 59
5.4.1 break语句 59
5.4.2 continue语句 60
5.5 循环结构的嵌套 60
5.6 应用举例 62
习题5 65
6 数组 68
6.1 数组概念的引入 68
6.2 数组的说明 69
6.2.1 数组说明形式 69
6.2.2 使用数组的注意事项 69
6.3 数组的引用 70
6.3.1 下标变量的表示形式 70
6.3.2 使用说明 70
6.4 数组的存储结构 71
6.4.1 一维数组的存储结构 71
6.4.2 二维数组的存储结构 71
6.5 数组的赋初值 72
6.5.1 语法形式 73
6.5.2 注意事项 73
6.6 数组应用举例 74
6.7 字符数组与字符串处理 78
6.7.1 字符数组的定义 78
6.7.2 字符数组赋初值 79
6.7.3 字符串的结束标记 79
6.7.4 字符串的输入与输出 80
6.7.5 常用的字符串处理函数 83
6.7.6 字符数组应用举例 85
习题6 88
7 函数 89
7.1 函数的概念 89
7.1.1 函数实例 89
7.1.2 实例分析 91
7.2 函数的定义 92
7.2.1 函数的定义形式 92
7.2.2 函数的使用说明 94
7.3 函数的调用 95
7.3.1 函数调用形式 95
7.3.2 函数调用方式 96
7.3.3 参数的传递 96
7.3.4 函数调用声明 99
7.4 函数的嵌套与递归 100
7.4.1 嵌套函数 101
7.4.2 递归函数 102
7.4.3 嵌套函数与递归函数应用举例 105
7.5 变量的作用域 108
7.5.1 局部变量 108
7.5.2 全局变量 110
7.6 变量的存储类别 111
7.6.1 动态存储 112
7.6.2 静态存储 112
7.6.3 寄存器型存储 115
7.6.4 外部存储 115
习题7 117
8 编译预处理 121
8.1 宏定义 121
8.1.1 无参数宏定义 121
8.1.2 有参数宏定义 123
8.1.3 宏调用 125
8.1.4 宏调用与函数调用的区别 125
8.2 文件包含处理 126
8.2.1 文件包含命令的形式 126
8.2.2 使用说明 126
8.3 条件编译 127
8.3.1 条件编译命令的形式 128
8.3.2 使用注意 128
8.4 应用举例 129
习题8 130
9 指针 132
9.1 指针的概念 132
9.1.1 地址与指针 132
9.1.2 指针变量及其定义 133
9.1.3 指针变量的引用 133
9.2 指针与数组 135
9.2.1 指针与一维数组 135
9.2.2 指针与二维数组 139
9.3 指针与函数 143
9.3.1 函数指针的定义 144
9.3.2 通过函数指针调用其他函数 144
9.3.3 函数指针作为函数的参数 145
9.4 指针与字符串 147
9.4.1 单个字符串的表示 147
9.4.2 多字符串的表示 150
9.5 多级指针 153
9.5.1 二级指针的定义 153
9.5.2 二级指针与指针数组的联系 154
9.6 命令行参数 155
9.7 指针类型小结 159
习题9 160
10 结构与其他自定义类型 163
10.1 结构类型的认识 163
10.2 结构类型的定义 164
10.3 结构变量 165
10.3.1 结构变量的定义 165
10.3.2 结构变量的引用 166
10.3.3 结构变量的初始化 167
10.4 结构数组 167
10.4.1 结构数组的定义 168
10.4.2 结构数组的引用 168
10.4.3 结构数组的初始化 169
10.4.4 结构数组应用举例 169
10.5 结构指针 172
10.5.1 结构指针的定义 172
10.5.2 通过结构指针引用结构变量 173
10.5.3 结构指针作为函数的参数 173
10.6 动态数据结构“链表” 175
10.6.1 链表概述 175
10.6.2 单链表结点的类型定义 176
10.6.3 动态存储分配函数 177
10.6.4 创建链表 178
10.6.5 结点的删除与插入 183
10.6.6 链表综合应用举例 187
10.7 共用体 191
10.7.1 共用体类型的定义 191
10.7.2 共用体变量的引用 191
10.7.3 使用注意 192
10.8 枚举类型 193
10.8.1 枚举类型的定义 193
10.8.2 枚举类型的使用规则 194
10.9 类型自定义 196
10.9.1 typedef语句的形式 196
10.9.2 typedef语句使用说明 197
习题10 197
11 文件 199
11.1 文件的概念 199
11.1.1 C语言的文件系统 199
11.1.2 文件指针 200
11.2 文件的打开与关闭 201
11.2.1 文件的打开 201
11.2.2 文件的关闭 202
11.3 文件的读写 202
11.3.1 fputc和fgetc函数 203
11.3.2 fputs和fgets函数 204
11.3.3 fwrite和fread函数 205
11.3.4 fscanf和fprintf函数 207
11.4 文件的定位与出错检测 208
11.4.1 文件的定位 208
11.4.2 文件的出错检测与处理 211
11.5 文件应用举例 212
习题11 214
12 图形处理初步 215
12.1 图形处理基础 215
12.1.1 显示器的图形模式 215
12.1.2 像素坐标 215
12.1.3 图形模式的初始化 216
12.1.4 色彩设置 216
12.1.5 线型设置 217
12.2 基本绘图函数 218
12.2.1 点函数 218
12.2.2 直线函数 219
12.2.3 多边形函数 220
12.2.4 圆弧函数 222
12.3 图形填充 223
12.3.1 设置填充模式 223
12.3.2 填充 224
12.3.3 具有自动填充功能的封闭图形函数 225
12.4 图形方式下的文本输出 226
12.4.1 文本输出函数 226
12.4.2 设置文本的输出格式 226
12.5 图形视口 228
12.6 简单动画 229
12.6.1 简单动画的制作方法 229
12.6.2 动画处理函数 230
12.6.3 算法设计步骤 231
习题12 232
13 算法基础 234
13.1 使用解析方法设计算法 234
13.1.1 奇数阶幻方的生成 235
13.1.2 算法设计 237
13.1.3 程序实现 239
13.1.4 算法正确性的证明 239
13.2 使用枚举方法设计算法 242
13.2.1 集装箱的优化装箱方案 242
13.2.2 算法设计 243
13.2.3 程序实现 244
13.2.4 计算工作量的分析与比较 244
13.3 使用递归方法设计算法 245
13.3.1 对分查找算法 246
13.3.2 汉诺塔问题 247
13.3.3 用图形显示汉诺塔的搬动过程 249
习题13 253
附录 254
附录A C语言主要关键字及其用途 254
附录B 运算符优先级和结合性 255
附录C 常用字符与ASCII编码对照表 256
附录D 常用库函数 257
附录E 常用关键字和术语的中英文对照表 264
附录F 习题参考解答 266