第1章 C语言程序设计概述 1
1.1 程序设计基础 1
1.1.1 计算机语言和程序 1
1.1.2 算法 2
1.1.3 结构化程序设计 4
1.2 C语言程序简介 5
1.2.1 C语言概况 5
1.2.2 简单的C程序举例 5
1.2.3 C语言程序的基本特点 7
1.3 C语言的编程环境简介 8
1.3.1 Visual C++6.0概述 8
1.3.2 使用Visual C++6.0建立C语言应用程序 8
1.4 编码规范及编程习惯 17
1.4.1 编程错误和调试 17
1.4.2 注意养成良好的编程风格 17
总结与提高 18
习题 18
参考文献 19
第2章 基本数据类型、运算符和表达式 20
2.1 变量和常量 20
2.1.1 变量 20
2.1.2 常量 21
2.2 基本数据类型 22
2.3 整型 23
2.3.1 整型常量 23
2.3.2 整型变量 25
2.4 实型 28
2.4.1 实型常量 28
2.4.2 实型变量 28
2.5 字符型 30
2.5.1 字符常量 30
2.5.2 字符变量 31
2.5.3 字符串常量 33
2.6 运算符和表达式 34
2.6.1 运算符简介 34
2.6.2 算术运算符和算术表达式 35
2.6.3 赋值运算符和赋值表达式 39
2.6.4 关系运算符和关系表达式 41
2.6.5 逻辑运算符和逻辑表达式 41
2.6.6 逗号运算符和逗号表达式 41
2.6.7 条件运算符和条件表达式 42
2.7 基本的输入输出函数 43
2.7.1 printf函数 43
2.7.2 scanf函数 48
2.7.3 putchar函数(字符输出函数) 49
2.7.4 getchar函数(字符输入函数) 50
总结与提高 51
习题 55
参考文献 58
第3章 程序的控制结构 59
3.1 算法 59
3.1.1 算法的特性 59
3.1.2 算法的表示 60
3.2 C语句概述 63
3.3 顺序结构 65
3.4 选择结构 66
3.4.1 条件语句(if语句) 66
3.4.2 switch语句 72
3.4.3 程序设计举例 74
3.5 循环结构 78
3.5.1 while语句 78
3.5.2 do-while语句 82
3.5.3 for语句 85
3.5.4 循环的嵌套 89
3.5.5 三种循环的比较 91
3.5.6 流程控制语句 91
3.5.7 穷举与迭代——两类具有代表性的循环算法 97
3.6 综合例子 99
总结与提高 101
习题 102
参考文献 104
第4章 数组 105
4.1 一维数组的定义、初始化和引用 105
4.1.1 一维数组的定义方式 105
4.1.2 一维数组的初始化 106
4.1.3 一维数组元素的引用 107
4.1.4 一维数组程序举例 109
4.2 二维数组的定义、初始化和引用 112
4.2.1 二维数组的定义 113
4.2.2 二维数组的初始化 114
4.2.3 二维数组元素的引用 115
4.2.4 二维数组程序举例 115
4.3 字符数组与字符串 119
4.3.1 字符数组与字符串的关系 119
4.3.2 字符数组的定义 119
4.3.3 字符数组的初始化 120
4.3.4 字符数组的引用 121
4.3.5 字符数组的输入输出 122
4.3.6 字符串处理函数 124
4.3.7 字符串的输入输出 128
4.3.8 程序举例 129
总结与提高 133
习题 133
参考文献 134
第5章 函数 136
5.1 概述 136
5.1.1 什么是模块化 136
5.1.2 什么是函数 137
5.2 函数的定义 138
5.2.1 函数的分类 138
5.2.2 函数的定义 138
5.2.3 函数的参数和返回值 139
5.3 函数的调用 143
5.3.1 函数调用的一般形式 143
5.3.2 函数调用的方式 144
5.3.3 对被调用函数的声明和函数原型 144
5.3.4 嵌套调用 146
5.3.5 递归调用 147
5.3.6 程序设计举例 148
5.4 常见的库函数 152
5.4.1 库函数概述 152
5.4.2 字符与字符串函数 153
5.4.3 简单数学函数 153
5.5 变量的性质 154
5.5.1 变量的作用域(可见性)概述 154
5.5.2 变量的生命期(存在性)概述 155
5.6 变量的作用域(结合变量的性质) 155
5.6.1 局部变量 155
5.6.2 全局变量 156
5.6.3 全局变量作用域的扩展和限制 158
5.6.4 总结 161
5.7 变量的生命期(结合变量的性质) 161
5.7.1 动态局部变量 162
5.7.2 静态局部变量 163
5.8 内部函数和外部函数 165
5.8.1 外部函数 165
5.8.2 内部函数 165
5.9 多文件程序——项目 166
5.10 程序设计举例 166
总结与提高 169
习题 170
参考文献 171
第6章 指针 172
6.1 指针的基本概念 172
6.1.1 预备知识 172
6.1.2 指针 174
6.1.3 指针其名 174
6.1.4 变量的指针与指针变量 174
6.2 指针变量的定义和赋值 176
6.2.1 指针变量的定义 176
6.2.2 指针变量的赋值 177
6.2.3 void指针 179
6.3 指针变量的使用 179
6.3.1 与指针相关的运算符 179
6.3.2 变量的存取方式 180
6.3.3 停下来思考一下 180
6.3.4 指针变量作为函数参数 181
6.4 指针与数组 182
6.4.1 数组和数组元素的指针 182
6.4.2 指向数组和数组元素的指针变量 183
6.4.3 数组元素的引用 185
6.4.4 数组名作为函数参数 186
6.4.5 字符串的指针和指向字符串的指针变量 188
6.4.6 指针数组 191
6.4.7 指针与二维数组 193
6.5 指向指针的指针 195
6.5.1 指向指针的指针 195
6.5.2 定义指向指针变量的指针变量 196
6.5.3 指向指针的指针变量的应用 196
6.6 指针与函数 198
6.6.1 返回指针类型的函数 199
6.6.2 函数的指针和指向函数的指针变量 199
总结与提高 200
习题 204
参考文献 205
第7章 结构体和共用体 206
7.1 结构体类型与结构体变量 206
7.1.1 结构体类型的定义 206
7.1.2 结构体变量的定义 207
7.1.3 结构体变量的初始化 209
7.1.4 结构体变量的引用 210
7.2 结构体数组 211
7.2.1 结构体数组的定义 211
7.2.2 结构体数组的初始化 213
7.3 结构体变量与函数 214
7.3.1 结构体变量作为函数参数 214
7.3.2 返回结构体类型值的函数 216
7.4 结构体变量及其指针 217
7.4.1 指向结构体变量的指针 217
7.4.2 指向结构体数组的指针 219
7.4.3 结构体变量和指向结构体的指针作函数参数 220
7.5 共用体 222
7.5.1 共用体类型的定义 222
7.5.2 共用体变量的定义和引用 222
7.6 枚举类型 224
7.6.1 枚举类型的定义 225
7.6.2 枚举变量与枚举元素 225
7.7 用户自定义类型 226
7.8 程序设计举例 227
总结与提高 229
习题 230
参考文献 230
第8章 指针的应用——链表 231
8.1 链表概述 231
8.2 简单静态链表 232
8.3 动态链表和动态内存分配函数 233
8.3.1 动态链表 233
8.3.2 动态内存分配函数 234
8.3.3 利用指针和动态内存分配函数实现不定长数组 234
8.4 建立动态链表 235
8.5 对链表的插入与删除操作 238
8.5.1 对链表的插入操作 238
8.5.2 对链表的删除操作 240
8.6 链表综合应用 241
总结与提高 246
习题 247
参考文献 247
第9章 位运算 248
9.1 位运算的类型 248
9.1.1 按位“与” 248
9.1.2 按位“或” 249
9.1.3 按位“异或” 250
9.1.4 取反 250
9.1.5 左移 250
9.1.6 右移 250
9.2 位运算举例 251
9.3 位段 252
总结与提高 254
习题 254
第10章 文件 255
10.1 C文件概述 255
10.1.1 二进制文件和文本文件 255
10.1.2 二进制文件和文本文件的比较 256
10.2 文件的打开与关闭 257
10.2.1 文件的打开(fopen函数) 258
10.2.2 文件的关闭(fclose函数) 260
10.3 文件的读写 260
10.3.1 fscanf函数和fprintf函数 261
10.3.2 fread函数和fwrite函数 262
10.3.3 fgetc函数和fputc函数 264
10.3.4 其他读写函数 266
10.4 文件的定位 268
10.4.1 rewind函数 268
10.4.2 fseek函数 269
10.4.3 ftell函数 271
10.5 文件的状态 271
10.5.1 feof函数 271
10.5.2 ferror函数 271
10.5.3 clearerr函数 271
10.6 文件综合应用:个人小金库的管理 272
10.6.1 顺序文件和随机文件 272
10.6.2 需求及功能分析 273
10.6.3 源程序 273
总结与提高 277
习题 278
参考文献 278
第11章 编译预处理 279
11.1 宏定义 279
11.1.1 无参宏定义 279
11.1.2 带参数的宏定义 281
11.2 文件包含 284
11.3 条件编译 284
总结与提高 287
习题 287
第12章 综合实例 288
12.1 函数简介 288
12.2 编程算法思路 289
12.2.1 建库 289
12.2.2 修改 289
12.2.3 删除 289
12.2.4 查询 289
12.2.5 输出 289
12.3 设计小结 290
12.4 源程序代码 291
习题 308
附录1 ASCII码表及其中控制字符的含义 309
附录2 C语言中的关键字 310
附录3 C语言运算符的优先级与结合性 311
附录4 常用库函数 312