1 程序设计语言和算法描述 1
1.1 程序设计语言 1
1.1.1 程序设计语言概述 1
1.1.2 语言处理程序概述 2
1.2 算法特征及算法的描述方法 3
1.2.1 程序中数据的表示 4
1.2.2 算法的概念与特征 4
1.2.3 算法的描述方法 7
1.2.4 算法描述示例 8
习题1 12
2 C程序设计入门 13
2.1 C语言的发展简史与特点 13
2.2 C程序的基本结构 15
2.2.1 C程序的基本结构 15
2.2.2 C程序中的函数及其分类 17
2.3 C语言的基本数据类型 17
2.3.1 C语言数据类型概述 17
2.3.2 C语言的基本数据类型 20
2.4 基本运算符和表达式 25
2.4.1 运算符的分类、优先级别和结合规则 25
2.4.2 基本运算符和算术表达式 26
2.4.3 赋值运算符和赋值表达式 27
2.4.4 自反运算符和自增、自减运算符 28
2.4.5 逗号运算符和逗号表达式 30
2.4.6 sizeof运算符 31
2.5 不同类型数据混合运算及数据转换 32
2.5.1 混合运算的基本概念 32
2.5.2 不同数据类型隐式转换 33
2.5.3 不同数据类型显式转换 33
2.6 C程序设计初步 34
2.6.1 C语句概述 34
2.6.2 C程序设计7大步骤 36
2.6.3 运行一个C程序的基本过程 38
2.6.4 基本输入输出函数 38
2.7 简单程序设计举例 45
习题2 48
3 C程序的控制结构 52
3.1 C程序的控制结构概述 52
3.2 C语言中的关系运算和逻辑运算 53
3.2.1 关系运算符和关系表达式 53
3.2.2 逻辑运算符和逻辑表达式 54
3.3 分支结构及其应用 57
3.3.1 分支结构的基本概念 57
3.3.2 C语言的条件句与分支结构的实现 58
3.4 循环结构及其应用 73
3.4.1 循环结构概述 73
3.4.2 while型循环结构 74
3.4.3 do~while型循环结构 75
3.4.4 for型循环结构 77
3.4.5 3种循环语句的比较 80
3.4.6 循环的嵌套 81
3.4.7 循环语句的效率讨论 84
3.5 其他简单控制结构 85
3.5.1 goto语句和标号语句 85
3.5.2 break语句 86
3.5.3 continue语句 88
3.6 算法与控制结构应用程序举例 90
3.6.1 控制结构程序设计举例 90
3.6.2 简单算法程序设计举例 97
3.7 程序设计风格讨论 105
3.7.1 空行 105
3.7.2 代码行 106
3.7.3 代码行内的空格 107
3.7.4 对齐 108
3.7.5 长行拆分 109
3.7.6 修饰符的位置 109
3.7.7 注释 110
习题3 111
4 函数与程序结构 116
4.1 模块化程序设计基本概念 116
4.1.1 模块化的基本思想 116
4.1.2 C语言实现模块化程序设计 117
4.2 函数的定义、声明和调用 118
4.2.1 函数的定义 118
4.2.2 函数的声明 121
4.2.3 函数的调用 123
4.2.4 函数调用时的参数传递 126
4.3 函数的嵌套调用 128
4.4 函数的递归调用 133
4.5 编译预处理 137
4.5.1 宏定义 138
4.5.2 文件包含 140
4.5.3 条件编译 144
4.6 C应用程序结构及其处理方法 147
4.6.1 变量的作用域和生存期的概念 147
4.6.2 自动变量及其作用域 148
4.6.3 寄存器变量 149
4.6.4 静态变量及其作用域 150
4.6.5 外部变量及其作用域 151
4.6.6 内部函数和外部函数 156
习题4 157
5 指针与函数 161
5.1 指针的概念 161
5.1.1 指针变量的定义 161
5.1.2 指针变量的引用 163
5.2 指针变量作函数的参数 170
5.2.1 指针变量作为函数的参数 170
5.2.2 指针变量与指针指向的变量 172
5.3 函数的指针与函数调用 173
5.3.1 用指向函数的指针变量来调用函数 174
5.3.2 指向函数的指针变量作函数参数 176
5.4 返回指针值的函数 177
5.5 使用指针的一些问题 178
习题5 179
6 构造数据类型与指针 184
6.1 数组、指针及应用 184
6.1.1 数组的概念与定义 184
6.1.2 数组元素的引用和初始化 186
6.1.3 数组作为函数参数的使用 192
6.1.4 数组与指针 193
6.1.5 数组应用—排序数组 196
6.1.6 数组应用—查找数组 203
6.1.7 二维数组 207
6.1.8 二维数组与指针 215
6.2 字符串及应用 220
6.2.1 字符串的概念及定义 220
6.2.2 字符串的输入输出 221
6.2.3 字符串标准处理函数 223
6.2.4 指针数组和多级指针 230
6.2.5 命令行参数 233
6.3 结构体类型及应用 237
6.3.1 结构体类型定义 237
6.3.2 结构体变量的定义方法和成员引用 238
6.3.3 类型定义typedef 242
6.3.4 结构体数组 243
6.3.5 结构体与函数 245
6.3.6 结构体与指针 247
6.4 共用体类型及其应用 250
6.4.1 共用体类型定义 250
6.4.2 共用体变量定义及成员引用 251
6.5 枚举类型及应用 255
6.5.1 枚举类型定义 255
6.5.2 枚举变量的定义和操作 256
习题6 258
7 位运算 261
7.1 计算机中数据表示方法 261
7.1.1 位与字节 261
7.1.2 计算机中数的表示方法 262
7.2 位运算及应用 264
7.2.1 “按位与”运算及应用 264
7.2.2 “按位或”运算及应用 265
7.2.3 “异或”运算及应用 266
7.2.4 “取反”运算及应用 267
7.2.5 “左移”运算及应用 267
7.2.6 “右移”运算及应用 268
7.2.7 有关位操作的自反算符 269
7.3 位运算举例 269
7.4 位段及应用 273
7.4.1 位段的概念和定义方法 273
7.4.2 位段的引用方法 275
习题7 276
8 文件 278
8.1 文件概念与文件类型指针 278
8.1.1 文件的概念 278
8.1.2 文件的分类 278
8.1.3 文件类型指针 280
8.2 文件的打开与关闭 281
8.2.1 文件的打开 281
8.2.2 文件的关闭 283
8.3 文件的读写 283
8.3.1 文件中单个字符的读写操作 283
8.3.2 文件中字符串读写操作 290
8.3.3 文件中的格式化读写操作 292
8.3.4 文件中的数据块读写操作 293
8.4 文件的定位和随机读写 297
8.4.1 文件的内部记录指针和文件定位 297
8.4.2 文件的随机读写 299
8.5 文件操作的错误检测 300
8.5.1 文件读写错误检测函数ferror 300
8.5.2 清除文件错误标志函数clearerr 301
习题8 301
9 C语言应用 306
9.1 线性数据结构及其处理技术 306
9.1.1 C语言的自引用结构和存储分配 306
9.1.2 线性表的存储结构及基本运算 310
9.1.3 栈的基本概念和应用 323
9.1.4 队列的基本概念和应用 328
9.2 常用的排序技术 335
9.2.1 直接选择排序 335
9.2.2 直接插入排序 338
9.2.3 二分插入排序 340
9.2.4 冒泡排序 342
9.2.5 希尔排序 344
9.2.6 快速排序 346
9.3 常用查找技术 348
9.3.1 线性查找 348
9.3.2 二分查找 350
9.4 图形程序设计基础 352
9.4.1 C语言图形处理基本概念 352
9.4.2 C语言常用图形库函数的使用 353
9.4.3 C语言图形程序设计基本方法 364
习题9 368