第1章 程序设计概述 1
1.1 计算机语言与程序设计 2
1.1.1 计算机语言 2
1.1.2 程序与计算机程序设计 3
1.2 算法 4
1.2.1 算法的定义与特性 4
1.2.2 算法的表示 5
1.3 结构化程序设计方法 9
1.4 C语言的历史与特点 10
1.4.1 C语言的产生和发展 10
1.4.2 C语言的特点 10
1.5 C语言程序结构 11
1.6 C语言程序的执行步骤 12
习题 13
第2章 数据类型与表达式 15
2.1 字符集、关键字和标识符 16
2.1.1 字符集 16
2.1.2 关键字 16
2.1.3 标识符 16
2.2 C语言的数据类型及其存储形式 17
2.2.1 C语言的数据类型分类 17
2.2.2 整型数据 18
2.2.3 实型数据 19
2.2.4 字符型数据 21
2.3 常量与变量 21
2.3.1 常量 22
2.3.2 变量 24
2.4 运算符与表达式 25
2.4.1 C语言运算符与表达式概述 26
2.4.2 算术运算 26
2.4.3 赋值运算 28
2.4.4 关系运算 29
2.4.5 逻辑运算 30
2.4.6 逗号表达式 31
2.4.7 求字节数运算符 32
2.4.8 圆括号运算符 32
2.4.9 位运算 32
2.5 类型转换 34
2.5.1 自动类型转换 34
2.5.2 强制类型转换 36
习题 36
第3章 顺序结构程序设计 38
3.1 C语言基本语句 39
3.2 数据的输入/输出 40
3.2.1 数据输入/输出的概念 40
3.2.2 格式化的输入/输出 41
3.2.3 字符的输入/输出 51
3.3 顺序结构程序设计 52
3.3.1 顺序结构程序 52
3.3.2 良好的源程序书写风格 53
3.4 顺序结构程序设计实例 55
习题 57
第4章 选择结构程序设计 58
4.1 if语句及嵌套 59
4.1.1 if语句 59
4.1.2 if语句的嵌套 61
4.2 条件运算符和条件表达式 66
4.3 switch语句 68
4.4 选择结构程序设计实例 71
习题 75
第5章 循环结构程序设计 77
5.1 while语句 78
5.2 do…while语句 81
5.3 for语句 83
5.4 循环的嵌套 87
5.5 循环语句的特点 89
5.6 与循环有关的控制语句 89
5.6.1 break语句 89
5.6.2 continue语句 91
5.7 循环结构程序设计实例 92
习题 98
第6章 数组 100
6.1 数组的基本概念 101
6.2 一维数组 102
6.2.1 一维数组的定义 102
6.2.2 一维数组元素的引用 103
6.2.3 一维数组的初始化 104
6.2.4 一维数组程序举例 105
6.3 二维数组 111
6.3.1 二维数组的定义 111
6.3.2 二维数组元素的引用 112
6.3.3 二维数组的初始化 112
6.3.4 二维数组程序举例 113
6.4 字符数组 115
6.4.1 一维字符数组的定义与初始化 115
6.4.2 一维字符数组的输入/输出 116
6.4.3 二维字符数组 119
6.4.4 字符串处理函数 120
6.4.5 字符数组程序举例 123
6.5 数组程序设计实例 124
习题 128
第7章 函数与编译预处理 129
7.1 程序与函数 130
7.2 函数的定义及调用 131
7.2.1 定义无参函数 131
7.2.2 定义有参函数 131
7.2.3 函数的调用 132
7.3 函数参数及其传递方式 137
7.3.1 变量做函数参数 137
7.3.2 数组做函数参数 139
7.4 函数的嵌套调用 142
7.5 函数的递归调用 143
7.6 变量的作用域及存储类型 146
7.6.1 局部变量 146
7.6.2 全局变量 147
7.6.3 变量的存储方式和生存期 149
7.6.4 小结 152
7.7 函数程序设计实例 153
7.8 编译预处理 158
7.8.1 宏定义 158
7.8.2 文件包含 162
7.8.3 条件编译 163
习题 165
第8章 指针 166
8.1 地址与指针 167
8.1.1 地址的概念 167
8.1.2 指针的概念 168
8.2 指针变量 168
8.2.1 指针变量的定义 168
8.2.2 指针的基本运算 169
8.2.3 指针的初始化及赋值 170
8.2.4 零指针与void*类型指针 173
8.3 指针与数组 173
8.3.1 指针与一维数组 174
8.3.2 指针的运算 176
8.3.3 指针与二维数组 179
8.4 指针与字符串 182
8.5 指针数组与指向指针的指针 186
8.5.1 指针数组 186
8.5.2 指向指针的指针 188
8.6 指针与动态内存管理 190
8.6.1 动态内存管理函数 190
8.6.2 动态内存管理的应用 191
8.7 指针程序设计实例 192
习题 195
第9章 指针与函数 196
9.1 指针作为函数的参数 197
9.1.1 指针变量作为函数的参数 197
9.1.2 数组作为函数的参数 199
9.1.3 字符指针变量作为函数的参数 201
9.1.4 指向数组的指针变量作为函数的参数 202
9.1.5 指针数组或二级指针变量作为函数的参数 204
9.2 函数返回指针值 205
9.3 指向函数的指针 206
9.4 带参main()函数 209
9.5 指针小结 211
9.5.1 关于指针的数据类型小结 211
9.5.2 指针运算小结 212
9.6 指针与函数程序设计实例 213
习题 218
第10章 构造数据类型 219
10.1 结构体类型 220
10.2 结构体变量 221
10.2.1 结构体变量的定义 221
10.2.2 结构体变量的初始化 223
10.2.3 访问结构体变量成员 224
10.2.4 结构体的嵌套 225
10.2.5 结构体变量与函数 226
10.3 结构体数组 227
10.3.1 结构体数组的定义 227
10.3.2 结构体数组的初始化与引用 227
10.3.3 结构体数组作为函数参数 229
10.4 结构体类型的指针 231
10.4.1 指向结构体变量的指针 231
10.4.2 指向结构体数组的指针 233
10.4.3 结构体类型的指针作为函数参数 234
10.5 链表 236
10.5.1 单链表概述 236
10.5.2 链表的基本操作 237
10.6 共用体 244
10.6.1 共用体类型 244
10.6.2 共用体变量 245
10.6.3 访问共用体变量成员 246
10.7 枚举 247
10.7.1 枚举类型 247
10.7.2 枚举变量 248
10.8 用typedef定义类型名 249
10.9 程序设计实例 250
习题 254
第11章 文件 256
11.1 文件概述 257
11.1.1 文件的概念 257
11.1.2 缓冲文件系统 258
11.1.3 文件类型指针 258
11.2 文件的打开与关闭 259
11.2.1 文件的打开 259
11.2.2 文件的关闭 260
11.3 文件的顺序读/写操作 260
11.3.1 读/写字符函数 261
11.3.2 读/写字符串函数 263
11.3.3 格式化读/写数据函数 264
11.3.4 读/写数据块函数 266
11.4 文件的随机读/写操作 267
11.4.1 文件指针复位函数 268
11.4.2 文件指针随机移动函数 268
11.4.3 取文件指针当前位置函数 270
11.5 文件出错检测函数 271
11.5.1 ferror()函数 271
11.5.2 clearerr()函数 271
11.6 文件程序设计实例 271
习题 273
第12章 综合实例 274
12.1 应用程序开发流程 274
12.2 学生成绩管理系统开发实例 275
12.2.1 功能描述 275
12.2.2 系统设计 275
附录A 常用字符及其ASCII代码 289
附录B C语言的运算符及其结合性 292
附录C C语言库函数 294
参考文献 300