第1章 程序设计概述 1
1.1 程序设计基础知识 1
1.1.1 程序与程序设计 1
1.1.2 算法及其描述 2
1.1.3 程序设计方法 9
1.2 C语言的发展与特点 12
1.2.1 C语言的发展历史 12
1.2.2 C语言的特点 13
1.3 C语言程序的基本结构 14
1.3.1 初识C语言程序 14
1.3.2 C语言程序的结构特点与书写规则 16
1.4 C语言程序的运行 17
1.4.1 C语言程序的运行步骤与调试 17
1.4.2 C语言程序的集成开发环境 19
本章小结 20
习题 21
第2章 程序的数据描述 23
2.1 C语言的数据类型 23
2.2 常量与变量 24
2.2.1 常量 24
2.2.2 变量 24
2.3 基本数据类型 27
2.3.1 整型数据 27
2.3.2 实型数据 28
2.3.3 字符型数据 30
2.4 常用数学库函数 32
2.5 基本运算与表达式 34
2.5.1 C的运算与表达式简介 34
2.5.2 算术运算 35
2.5.3 逗号运算 37
2.6 混合运算时数据类型的转换 37
2.6.1 算术运算的隐式类型转换 37
2.6.2 显式类型转换 38
本章小结 39
习题 41
第3章 顺序结构程序设计 43
3.1 C的语句 43
3.1.1 简单语句 43
3.1.2 复合语句 44
3.1.3 流程控制语句 45
3.2 赋值运算与赋值语句 45
3.2.1 赋值运算 45
3.2.2 赋值语句 47
3.2.3 赋值时的数据类型转换 48
3.3 数据输入输出 49
3.3.1 格式输入输出 49
3.3.2 字符输入输出 56
3.4 顺序结构程序举例 57
本章小结 60
习题 61
第4章 选择结构程序设计 65
4.1 条件的描述 65
4.1.1 关系运算 65
4.1.2 逻辑运算 66
4.2 if选择结构 68
4.2.1 单分支if选择结构 68
4.2.2 双分支if选择结构 69
4.2.3 多分支if选择结构 72
4.2.4 if选择结构的嵌套 73
4.2.5 容易混淆的等于运算符和赋值运算符 75
4.3 条件运算 76
4.4 switch多分支选择结构 77
4.5 选择结构程序举例 79
本章小结 83
习题 85
第5章 循环结构程序设计 89
5.1 while循环结构 89
5.1.1 while语句的格式 89
5.1.2 while循环的应用 90
5.2 do-while循环结构 92
5.2.1 do-while语句的格式 92
5.2.2 do-while循环的应用 93
5.3 for循环结构 94
5.3.1 for语句的格式 94
5.3.2 for循环的应用 95
5.3.3 for语句的各种变形 96
5.4 与循环有关的控制语句 98
5.4.1 break语句 98
5.4.2 continue语句 99
5.4.3 goto语句 100
5.5 3种循环语句的比较 101
5.6 循环的嵌套 103
5.7 循环结构程序举例 105
本章小结 109
习题 111
第6章 函数与编译预处理 115
6.1 C程序的模块结构 115
6.2 函数的定义与调用 117
6.2.1 函数的定义 117
6.2.2 函数的调用 118
6.2.3 对被调用函数的声明和函数原型 119
6.3 函数的参数传递 121
6.4 函数的嵌套调用与递归调用 122
6.4.1 函数的嵌套调用 122
6.4.2 函数的递归调用 124
6.5 变量的作用域与存储类别 128
6.5.1 变量的作用域 128
6.5.2 变量的存储类别 131
6.6 内部函数和外部函数 134
6.6.1 内部函数 134
6.6.2 外部函数 134
6.7 函数应用举例 135
6.8 编译预处理 139
6.8.1 宏定义 139
6.8.2 文件包含 141
6.8.3 条件编译 142
本章小结 144
习题 146
第7章 数组 150
7.1 数组的概念 150
7.2 数组的定义 151
7.2.1 一维数组 151
7.2.2 二维数组 152
7.2.3 数组的存储结构 153
7.3 数组的赋值与输入输出 154
7.3.1 数组的赋值 154
7.3.2 数组的输入输出 154
7.4 数组的应用 155
7.4.1 一维数组应用举例 155
7.4.2 二维数组应用举例 164
7.5 字符数组与字符串 167
7.5.1 字符数组的定义和初始化 167
7.5.2 字符数组的输入输出 170
7.5.3 字符串处理函数 172
7.5.4 字符数组应用举例 174
7.6 数组作为函数的参数 177
7.6.1 数组元素作函数的参数 177
7.6.2 数组名作函数的参数 178
本章小结 182
习题 183
第8章 指针 187
8.1 指针的概念 187
8.2 指针变量的定义与运算 188
8.2.1 指针变量的定义 188
8.2.2 指针变量的运算 189
8.3 指针与数组 191
8.3.1 指针与一维数组 191
8.3.2 指针与二维数组 195
8.4 指针与字符串 198
8.5 指针与函数 201
8.5.1 指针变量作函数参数 201
8.5.2 指向函数的指针变量 203
8.5.3 返回指针的函数 206
8.6 指针数组与指向指针的指针 208
8.6.1 指针数组 208
8.6.2 指向指针的指针 209
8.6.3 main函数的参数 210
8.7 指针与动态内存管理 211
8.7.1 动态内存管理函数 211
8.7.2 动态内存管理的应用 213
8.8 指针应用举例 214
本章小结 217
习题 219
第9章 结构体 224
9.1 结构体类型的定义 224
9.2 结构体变量 225
9.2.1 结构体变量的定义 225
9.2.2 结构体变量的使用 227
9.2.3 结构体变量的初始化 228
9.2.4 结构体变量的输入和输出 229
9.3 结构体数组 230
9.3.1 结构体数组的定义 230
9.3.2 结构体数组的初始化 230
9.3.3 结构体数组的使用 231
9.4 结构体类型的指针 232
9.4.1 指向结构体变量的指针 233
9.4.2 指向结构体数组元素的指针 234
9.5 结构体与函数 235
9.5.1 结构体变量作为函数参数 235
9.5.2 指向结构体变量的指针作为函数参数 236
9.5.3 返回结构体类型值的函数 237
9.6 链表 237
9.6.1 链表概述 238
9.6.2 链表的基本操作 239
9.7 结构体应用举例 246
本章小结 252
习题 253
第10章 共用体与枚举 258
10.1 共用体 258
10.1.1 共用体变量的定义 258
10.1.2 共用体变量的引用 259
10.1.3 共用体变量的应用 261
10.2 枚举 262
10.3 位运算与位段结构 264
10.3.1 位运算 264
10.3.2 位段结构 265
10.4 用typedef定义类型名 267
本章小结 268
习题 269
第11章 文件操作 272
11.1 文件概述 272
11.1.1 文件的概念 272
11.1.2 C语言的文件系统 273
11.1.3 文件类型指针 274
11.2 文件的打开与关闭 275
11.2.1 打开文件 275
11.2.2 关闭文件 276
11.3 文件的顺序读写操作 276
11.3.1 文件的字符输入/输出函数 277
11.3.2 文件的字符串输入/输出函数 279
11.3.3 文件的格式化输入/输出函数 281
11.3.4 文件的数据块输入/输出函数 282
11.4 文件的随机读写操作 284
11.4.1 文件的定位 284
11.4.2 二进制随机文件 285
11.5 文件操作时的出错检测 287
11.6 文件应用举例 288
本章小结 292
习题 293
附录A ASCII字符编码表 298
附录B C运算符的优先级与结合方向 299
附录C C语言常用的库函数 301
参考文献 307