1 C语言概述 1
1.1 C语言出现的历史背景 1
1.2 C语言的特点 2
1.3 简单的C程序介绍 4
1.4 C程序的上机步骤 7
习题 12
2 程序的灵魂--算法 13
2.1 算法的概念 13
2.2 简单算法举例 14
2.3 算法的特性 18
2.4 怎样表示一个算法 19
2.4.1 用自然语言表示算法 19
2.4.2 用流程图表示算法 19
2.4.3 三种基本结构和改进的流程图 21
2.4.4 用N-S流程图表示算法 25
2.4.5 用伪代码表示算法 28
2.4.6 用计算机语言表示算法 31
2.5 结构化程序设计方法 32
习题 37
3 数据类型、运算符与表达式 38
3.1 C的数据类型 38
3.2 常量与变量 38
3.2.1 常量和符号常量 38
3.2.2 变量 39
3.3 整型数据 41
3.3.1 整型常量的表示方法 41
3.3.2 整型变量 41
3.3.3 整型常量的类型 45
3.4 实型数据 45
3.4.1 实型常量的表示方法 45
3.4.2 实型变量 46
3.4.3 实型常量的类型 47
3.5 字符型数据 48
3.5.1 字符常量 48
3.5.2 字符变量 49
3.5.3 字符数据在内存中的存储形式及其使用方法 50
3.5.4 字符串常量 52
3.6 变量赋初值 53
3.7 各类数值型数据间的混合运算 54
3.8 算术运算符和算术表达式 54
3.8.1 C运算符简介 54
3.8.2 算术运算符和算术表达式 55
3.9 赋值运算符和赋值表达式 59
3.10 逗号运算符和逗号表达式 63
习题 65
4 最简单的C程序设计--顺序程序设计 67
4.1 C语句概述 67
4.2 赋值语句 69
4.3 数据输入输出的概念及在C语言中的实现 70
4.4 字符数据的输入输出 71
4.4.1 putchar函数(字符输出函数) 71
4.4.2 getchar函数(字符输入函数) 71
4.5 格式输入与输出 72
4.5.1 printf函数(格式输出函数) 72
4.5.2 scanf函数(格式输入函数) 79
4.6 顺序结构程序设计举例 82
习题 84
5 选择结构程序设计 87
5.1 关系运算符和关系表达式 87
5.1.1 关系运算符及其优先次序 87
5.1.2 关系表达式 88
5.2 逻辑运算符和逻辑表达式 88
5.2.1 逻辑运算符及其优先次序 88
5.2.2 逻辑表达式 89
5.3 if语句 91
5.3.1 if语句的三种形式 91
5.3.2 if语句的嵌套 94
5.3.3 条件运算符 96
5.4 switch语句 98
5.5 程序举例 100
习题 104
6 循环控制 106
6.1 概述 106
6.2 goto语句以及用goto语句构成循环 106
6.3 while语句 107
6.4 do-while语句 108
6.5 for语句 110
6.6 循环的嵌套 113
6.7 几种循环的比较 114
6.8 break语句和continue语句 114
6.8.1 break语句 114
6.8.2 continue语句 114
6.9 程序举例 116
习题 120
7 数组 122
7.1 一维数组的定义和引用 122
7.1.1 一维数组的定义 122
7.1.2 一维数组元素的引用 122
7.1.3 一维数组的初始化 123
7.1.4 一维数组程序举例 124
7.2 二维数组的定义和引用 125
7.2.1 二维数组的定义 125
7.2.2 二维数组的引用 126
7.2.3 二维数组的初始化 127
7.2.4 二维数组程序举例 128
7.3 字符数组 130
7.3.1 字符数组的定义 130
7.3.2 字符数组的初始化 130
7.3.3 字符数组的引用 131
7.3.4 字符串和字符串结束标志 131
7.3.5 字符数组的输入输出 133
7.3.6 字符串处理函数 135
7.3.7 字符数组应用举例 138
习题 141
8 函数 143
8.1 概述 143
8.2 函数定义的一般形式 144
8.3 函数参数和函数的值 146
8.3.1 形式参数和实际参数 146
8.3.2 函数的返回值 147
8.4 函数的调用 150
8.4.1 函数调用的一般形式 150
8.4.2 函数调用的方式 151
8.4.3 对被调用函数的声明和函数原型 151
8.5 函数的嵌套调用 155
8.6 函数的递归调用 158
8.7 数组作为函数参数 164
8.8 局部变量和全局变量 168
8.8.1 局部变量 168
8.8.2 全局变量 169
8.9 变量的存储类别 172
8.9.1 动态存储方式与静态存储方式 172
8.9.2 auto变量 173
8.9.3 用static声明局部变量 173
8.9.4 register变量 175
8.9.5 用extern声明外部变量 176
8.9.6 用static声明外部变量 178
8.9.7 关于变量的声明和定义 179
8.9.8 存储类别小结 180
8.10 内部函数和外部函数 182
8.10.1 内部函数 182
8.10.2 外部淡 182
8.11 如何运行一个多文件的程序 184
习题 186
9 预处理命令 187
9.1 宏定义 187
9.1.1 不带参数的宏定义 187
9.1.2 带参数的宏定义 190
9.2 “文件包含”处理 194
9.3 条件编译 196
习题 199
10 指针 201
10.1 地址和指针的概念 201
10.2 变量的指针和指向变量的指针变量 202
10.2.1 定义一个指针变量 203
10.2.2 指针变量的引用 204
10.2.3 指针变量作为函数参数 207
10.3 数组的指针和指向数组的指针变量 210
10.3.1 指向数组元素的指针 211
10.3.2 通过指针引用数组元素 211
10.3.3 数组名作函数参数 216
10.3.4 指向多维数组的指针和指针变量 224
10.4 字符串的指针和指向字符串的指针变量 232
10.4.1 字符串的表示形式 232
10.4.2 字符串指针作函数参数 235
10.4.3 对使用字符指针变量和字符数组的讨论 238
10.5 函数的指针和指向函数的指针变量 241
10.5.1 用函数指针变量调用函数 241
10.5.2 用指向函数的指针作函数参数 243
10.6 返回指针值的函数 245
10.7 指针数组和指向指针的指针 248
10.7.1 指针数组的概念 248
10.7.2 指向指针的指针 251
10.7.3 指针数组作main函数的形参 253
10.8 有关指针的数据类型和指针运算的小结 255
10.8.1 有关指针的数据类型的小结 255
10.8.2 指针运算小结 256
10.8.3 void指针类型 257
习题 258
11 结构体与共用体 260
11.1 概述 260
11.2 定义结构体类型变量的方法 261
11.3 结构体变量的引用 263
11.4 结构体变量的初始化 264
11.5 结构体数组 265
11.5.1 定义结构体数组 265
11.5.2 结构体数组的初始化 266
11.5.3 结构体数组应用举例 266
11.6 指向结构体类型数据的指针 268
11.6.1 指向结构体变量的指针 268
11.6.2 指向结构体数组的指针 269
11.6.3 用结构体变量和指向结构体的指针作函数参数 270
11.7 用指针处理链表 273
11.7.1 链表概述 273
11.7.2 简单链表 274
11.7.3 处理动态链表所需的函数 275
11.7.4 建立动态键表 275
11.7.5 输出链表 278
11.7.6 对链表的删除操作 279
11.7.7 对链表的插入操作 281
11.7.8 对链表的综合操作 284
11.8 共用体 287
11.8.1 共用体的概念 287
11.8.2 共用体变量的引用方式 288
11.8.3 共用体类型数据的特点 289
11.9 枚举类型 291
11.10 用typedef定义类型 294
习题 296
12 位运算 298
12.1 位运算符和位运算 298
12.1.1 “按位与”运算符(?) 298
12.1.2 按位或运算符(|) 299
12.1.3 “异或”运算符(∧) 300
12.1.4 “取反”运算符(~) 301
12.1.5 左移运算符(<<) 302
12.1.6 右移运算符(>>) 302
12.1.7 位运算赋值运算符 303
12.1.8 不同长度的数据进行位运算 303
12.2 位运算举例 303
12.3 位段 305
习题 308
13 文件 309
13.1 C文件概述 309
13.2 文件类型指针 310
13.3 文件的打开与关闭 311
13.3.1 文件的打开(fopen函数) 311
13.3.2 文件的关闭(fclose函数) 313
13.4 文件的读写 313
13.4.1 fputc函数和fgetc函数(putc函数和getc函数) 314
13.4.2 fread函数和fwrite函数 317
13.4.3 fprintf函数和fscanf函数 321
13.4.4 其他读写函数 322
13.5 文件的定位 323
13.5.1 rewind函数 323
13.5.2 fseek函数和随机读写 324
13.5.3 ftell函数 325
13.6 出错的检测 325
13.6.1 ferror函数 325
13.6.2 clearerr函数 326
13.7 文件输入输出小结 326
习题 327
14 C++对C的扩充 328
14.1 C++的特点 328
14.2 最简单的C++程序 329
14.3 C++的输入输出 329
14.3.1 用cout进行输出 330
14.3.2 用cin进行输入 331
14.4 函数的重载 332
14.5 带缺省参数的函数 334
14.6 变量的引用类型 335
14.6.1 引用的概念 335
14.6.2 引用的简单使用 335
14.6.3 引用作为函数参数 336
14.7 内置函数 338
14.8 作用域运算符 339
14.9 动态分配/撤销内存的运算符new和delete 339
14.10 小结 341
15 C++的面向对象基础 342
15.1 概述 342
15.2 类和对象 343
15.3 构造函数和析构函数 346
15.3.1 构造函数 346
15.3.2 析构函数 348
15.4 继承与派生 350
15.4.1 继承与派生的概念 350
15.4.2 建立派生类的方法 352
15.4.3 公用派生类 353
15.4.4 私有派生类 354
15.4.5 保护成员 355
15.4.6 派生类的构造函数 356
15.4.7 继承在软件开发中的重要意义 358
16 常见错误和程序调试 359
16.1 常见错误分析 359
16.2 程序调试 372
附录Ⅰ 常用字符与ASCII代码对照表 374
附录Ⅱ C语言中的关键字 375
附录Ⅲ 运算符和结合性 375
附录Ⅳ C语言常用语法提要 377
附录Ⅴ C库函数 381
参考文献 388