第一部分 C程序设计入门 3
第1章 C语言程序设计简介 3
1.1 程序设计语言的发展 3
1.2 C语言的发展及其特点 4
1.3 几个简单的C语言程序 6
1.4 C语言程序的结构 9
1.5 C语言程序的运行步骤 11
1.6 C语言程序的任务 13
1.7 如何学习C语言 13
1.8 本章小结 14
1.9 习题 15
第2章 数据存储和C语言基本语句 16
2.1 数据在计算机中的存储 16
2.1.1 数据在计算机中以二进制存储 16
2.1.2 不同类型数据的存储方式 17
2.2 基本数据类型及其取值范围 19
2.3 常量和变量 21
2.3.1 常量 21
2.3.2 变量 26
2.4 算术运算符和算术表达式 26
2.4.1 算术运算符 27
2.4.2 算术表达式和算术运算符的优先级及结合性 28
2.4.3 数据类型的转换 29
2.5 C语言基本语句 30
2.5.1 C语句的作用和分类 30
2.5.2 最基本的C语言语句——赋值语句 31
2.6 数据的输入输出 36
2.6.1 C输入输出函数简介 36
2.6.2 格式化输出函数printf 37
2.6.3 格式化输入函数scanf 41
2.6.4 字符数据输出函数putchar 45
2.6.5 字符数据输入函数getchar 46
2.7 本章小结 47
2.8 习题 48
2.8.1 填空题 48
2.8.2 选择题 48
2.8.3 编程题 52
第3章 简单的程序设计与算法 53
3.1 算法——程序的灵魂 53
3.2 简单的算法举例 53
3.3 算法的结构与特性 55
3.3.1 算法的结构 55
3.3.2 算法的特性 55
3.4 算法的描述方法 56
3.4.1 用自然语言描述算法 56
3.4.2 用流程图描述算法 57
3.4.3 用伪代码描述算法 60
3.5 顺序结构程序设计举例 62
3.6 本章小结 63
3.7 习题 63
3.7.1 简答题 63
3.7.2 请用自然语言、流程图和伪代码设计下列问题的算法 64
3.7.3 编程题 64
第二部分 C程序设计的基本结构 67
第4章 选择结构程序设计 67
4.1 关系运算符与关系表达式 67
4.1.1 关系运算符及其优先级 67
4.1.2 关系表达式 68
4.2 逻辑运算符与逻辑表达式 68
4.2.1 逻辑运算符及其优先级 69
4.2.2 逻辑表达式 69
4.3 if语句实现选择结构 70
4.3.1 if语句的一般形式 70
4.3.2 if语句实现选择结构举例 72
4.3.3 if语句的说明 73
4.4 条件运算符与条件表达式 76
4.5 switch语句实现多分支选择结构 79
4.5.1 switch语句的一般形式 79
4.5.2 break语句 80
4.5.3 switch语句的说明 82
4.6 选择结构举例 84
4.7 本章小结 90
4.8 习题 90
4.8.1 填空题 90
4.8.2 选择题 94
4.8.3 编程题 97
第5章 循环结构程序设计 98
5.1 while语句实现循环 98
5.1.1 while语句的一般形式 98
5.1.2 while语句实现循环结构举例 99
5.2 do&while语句实现循环 100
5.2.1 do&while语句的一般形式 100
5.2.2 while语句实现循环结构举例 100
5.3 for语句实现循环 102
5.3.1 for语句的一般形式 102
5.3.2 for语句实现循环结构举例 103
5.3.3 for语句的几点说明 103
5.4 循环嵌套 105
5.5 提前结束循环 107
5.5.1 用break语句提前退出循环 107
5.5.2 用continue语句提前结束本次循环 108
5.6 几种循环比较 109
5.7 循环结构程序设计举例 109
5.8 本章小结 116
5.9 习题 117
5.9.1 填空题 117
5.9.2 选择题 120
5.9.3 编程题 124
第三部分 C程序设计的思想和方法 127
第6章 用数组处理批量数据 127
6.1 为什么要用数组 127
6.2 一维数组的定义与引用 128
6.2.1 一维数组的定义 128
6.2.2 一维数组的引用 129
6.2.3 一维数组的初始化 130
6.2.4 一维数组应用举例 131
6.3 二维数组的定义与引用 134
6.3.1 二维数组的定义 134
6.3.2 二维数组的引用 135
6.3.3 二维数组的初始化 135
6.3.4 多维数组 137
6.3.5 二维数组应用举例 138
6.4 字符数组 142
6.4.1 字符数组的定义 142
6.4.2 字符数组的初始化与引用 142
6.4.3 字符数组的输入输出 145
6.4.4 字符串处理函数 146
6.4.5 字符数组应用举例 151
6.5 本章小结 153
6.6 习题 154
6.6.1 填空题 154
6.6.2 选择题 156
6.6.3 编程题 159
第7章 用函数实现模块化程序设计 161
7.1 为什么要用函数 161
7.2 函数的定义与声明 162
7.2.1 函数的定义 162
7.2.2 函数的声明 164
7.3 函数的调用 165
7.3.1 函数调用的一般形式 165
7.3.2 函数调用时的数据传递 165
7.3.3 函数调用过程 168
7.4 函数的嵌套调用 169
7.4.1 函数嵌套调用的概念 169
7.4.2 函数嵌套调用实例 170
7.5 函数的递归调用 171
7.5.1 函数递归调用的概念 171
7.5.2 函数递归调用的实例 172
7.6 数组作函数参数 177
7.6.1 数组元素作函数实参 177
7.6.2 数组名作函数参数 178
7.6.3 多维数组名作函数参数 180
7.7 变量的作用域 181
7.7.1 局部变量 182
7.7.2 全局变量 183
7.8 变量的存储类型和生存期 185
7.8.1 变量的存储方式 185
7.8.2 局部变量的存储类型 186
7.8.3 全局变量的存储类型 189
7.9 内部函数和外部函数 192
7.9.1 内部函数 192
7.9.2 外部函数 192
7.10 本章小结 194
7.11 习题 194
7.11.1 填空题 194
7.11.2 选择题 197
7.11.3 编程题 200
第8章 指针 201
8.1 地址与指针的概念 201
8.2 指针变量 202
8.2.1 指针变量的定义 202
8.2.2 指针变量的引用 204
8.2.3 指针变量作函数参数 205
8.3 一维数组与指针 210
8.3.1 指向一维数组元素的指针及其运算 210
8.3.2 用指针引用一维数组元素 213
8.3.3 一维数组名与指针变量作函数参数 215
8.4 用指针引用二维数组 219
8.4.1 二维数组的存储及二维数组元素的地址 219
8.4.2 指向二维数组元素的指针 222
8.4.3 指向数组的指针作函数参数 224
8.5 用指针引用字符串 226
8.5.1 用指针引用字符串 226
8.5.2 字符指针作函数参数 227
8.5.3 字符指针变量与字符数组的区别 228
8.6 函数的返回值为指针 230
8.7 指向函数的指针 232
8.7.1 函数指针的概念 232
8.7.2 指向函数的指针变量 232
8.7.3 指向函数的指针变量作函数参数 234
8.8 指针数组和指向指针的指针 236
8.8.1 指针数组 236
8.8.2 指针数组作main函数的参数 238
8.8.3 指向指针的指针 239
8.9 本章小结 241
8.10 习题 242
8.10.1 填空题 242
8.10.2 选择题 244
8.10.3 编程题(要求用指针方法实现) 247
第9章 用户构建数据类型 248
9.1 结构体变量的定义和使用 248
9.1.1 结构体类型的定义 248
9.1.2 结构体类型变量的定义 250
9.1.3 结构体变量的初始化与引用 251
9.1.4 结构体变量的输入和输 253
9.2 结构体数组 255
9.2.1 结构体数组的定义和初始化 255
9.2.2 结构体数组的引用及应用举例 256
9.3 结构体指针 257
9.3.1 指向结构体变量的指针 257
9.3.2 指向结构体数组的指针 258
9.3.3 结构体变量和结构体指针作函数参数 260
9.4 链表 264
9.4.1 链表的概念 264
9.4.2 动态存储分配 264
9.4.3 链表的基本操作 266
9.5 共用体数据类型 272
9.5.1 共用体类型与共用体变量 272
9.5.2 共用体变量的引用和初始化 273
9.5.3 共用体类型的应用举例 275
9.6 枚举类型 276
9.6.1 枚举类型变量 276
9.6.2 枚举类型应用实例 277
9.7 用typedef定义新类型名 278
9.8 程序范例 280
9.9 本章小结 282
9.10 习题 283
9.10.1 填空题 283
9.10.2 选择题 284
9.10.3 编程题 285
第10章 位运算 286
10.1 按位与运算 286
10.2 按位或运算 287
10.3 按位异或运算 288
10.4 按位左移 289
10.5 按位右移 290
10.6 按位取反 290
10.7 复合位运算符 291
10.8 应用举例 291
10.9 本章小结 293
10.10 习题 293
10.10.1 填空题 293
10.10.2 选择题 294
10.10.3 编程题 295
第11章 文件操作 296
11.1 文件的相关概念 296
11.2 文件的打开与关闭 297
11.2.1 打开文件 297
11.2.2 关闭文件 298
11.3 文件的顺序读写 299
11.3.1 读写单个字符 299
11.3.2 读写字符串 303
11.3.3 以二进制方式读写数据块 305
11.3.4 以格式化方式读写文件 307
11.4 文件的随机读写 308
11.4.1 文件位置标记及其定位 308
11.4.2 随机读写 309
11.5 文件操作的检测 312
11.5.1 文件结束检测函数feof 312
11.5.2 文件读写出错检测函数ferror 312
11.6 本章小结 313
11.7 习题 313
11.7.1 填空题 313
11.7.2 选择题 313
11.7.3 编程题 315
附录A Visual C++6.0开发平台及常见错误分析 316
附录B 常用字符及其ASCII代码对照表 325
附录C 运算符及其优先级和结合性 327
参考文献 328