第1章 C语言及程序设计初步 1
1.1 C/C++历史及特点 1
1.1.1 C语言的历史 1
1.1.2 C语言的特点 1
前言 1
1.2 程序与程序设计 2
1.2.1 程序 2
1.2.2 程序设计语言 3
1.2.3 程序设计 3
1.3 算法与算法的表示方法 5
1.3.1 算法的概念 5
1.3.2 算法的特性 6
1.3.3 算法的常用表示方法 6
1.4 C语言程序的基本结构 8
1.4.1 程序的组成 8
1.4.3 程序功能及注释 9
1.4.4 C源程序的结构特点 9
1.4.2 程序中的数据描述 9
1.5 C程序的调试 10
1.5.1 调试步骤 10
1.5.2 Turbo C集成开发环境 11
1.6 习题 15
第2章 数据类型、运算符和表达式 16
2.1 基本符号和标识符 16
2.1.1 基本符号 16
2.1.2 标识符 16
2.2.1 C语言数据类型 17
2.2 数据类型 17
2.2.2 基本数据类型 18
2.3 常量与变量 18
2.3.1 常量 18
2.3.2 变量 20
2.4 数据的输出 21
2.4.1 用printf输出数据 21
2.4.2 用scanf输入数据 22
2.4.4 用getchar输入字符 23
2.4.3 用putchar输出字符 23
2.5 运算符 24
2.5.1 赋值运算符 24
2.5.2 算术运算符 26
2.5.3 关系运算符 27
2.5.4 逻辑运算符 28
2.5.5 条件运算符 29
2.5.6 自增/自减运算符 30
2.5.7 其他运算符 31
2.6 表达式 34
2.6.1 表达式的分类 35
2.6.2 表达式的类型转换 35
2.7 习题 38
第3章 程序设计基础 40
3.1 结构化程序设计概述 40
3.1.1 结构化程序设计的原则 40
3.1.2 结构化程序的基本结构与特点 41
3.2.1 表达式语句 42
3.2 C的基本语句 42
3.1.4 C语言程序的结构 42
3.1.3 结构化程序设计的方法 42
3.2.2 空语句 43
3.2.3 函数调用语句 43
3.2.4 控制语句 43
3.2.5 复合语句 44
3.3 顺序结构 44
3.4 分支结构 45
3.4.1 if形式 45
3.4.2 if else形式 47
3.4.3 else if形式 49
3.4.4 if语句的嵌套 50
3.4.5 switch语句 52
3.5 循环结构 53
3.5.1 while循环语句 54
3.5.2 do-while循环语句 55
3.5.3 for语句 58
3.5.4 跳出循环体 61
3.5.5 循环嵌套 62
3.5.6 综合程序应用举例 65
3.6 习题 68
第4章 数组 69
4.1 数组的概念 69
4.2 一维数组 69
4.2.1 一维数组的定义 69
4.2.2 一维数组的初始化 71
4.2.3 一维数组的引用 72
4.2.4 一维数组应用举例 73
4.3 二维数组和多维数组 76
4.3.1 二维数组的定义 76
4.3.2 二维数组的初始化 77
4.3.3 二维数组的引用 78
4.3.4 二维数组应用举例 79
4.3.5 多维数组 81
4.4.1 字符数组的定义 82
4.4 字符数组与字符串 82
4.4.2 字符数组的初始化 83
4.4.3 字符数组的引用 84
4.4.4 字符数组的输入输出 84
4.4.5 字符串处理函数 86
4.4.6 字符数组应用举例 89
4.5 数组应用综合举例 91
4.6 习题 95
5.1 函数的概念 96
第5章 函数 96
5.2 函数的定义 98
5.2.1 函数的定义形式 98
5.2.2 函数的返回值 99
5.3 函数的调用 100
5.3.1 函数的声明 100
5.3.2 函数调用的形式 101
5.3.3 函数的参数传递 103
5.3.4 函数的嵌套调用 104
5.3.5 函数的递归调用 105
5.4 函数与数组 109
5.4.1 数组元素作实参 109
5.4.2 数组名作实参 110
5.4.3 字符数组作函数的参数 112
5.5 局部变量和全局变量 112
5.5.1 局部变量 113
5.5.2 全局变量 114
5.6.1 自动变量 116
5.6 变量的存储类别 116
5.6.2 静态变量 119
5.6.3 外部变量 120
5.6.4 寄存器变量 122
5.7 内部函数和外部函数 123
5.7.1 内部函数 123
5.7.2 外部函数 124
5.8 函数综合举例 124
5.9 习题 127
6.1.1 指针与地址 128
第6章 指针 128
6.1 指针的概念 128
6.1.2 指针变量的定义与初始化 129
6.1.3 指针有关的运算符 131
6.1.4 指针的运算 132
6.2 指针与数组 135
6.2.1 指针与一维数组 135
6.2.2 指针与二维数组 136
6.2.3 指针数组 139
6.3 指针与字符串 140
6.4 指针与函数 142
6.4.1 指针作为函数参数 142
6.4.2 数组指针作为函数参数 143
6.4.3 字符串指针作为函数参数 144
6.4.4 指向函数的指针 145
6.4.5 返回指针值的函数 148
6.4.6 main()函数中的参数 149
6.5 指向指针的指针 151
6.6 习题 152
第7章 结构体与共用体 155
7.1 结构体类型的定义 155
7.2 结构体变量的定义与初始化 156
7.2.1 结构体变量的定义 156
7.2.2 结构体变量的初始化 158
7.3 结构体变量的引用 159
7.3.1 引用结构体变量的成员 159
7.3.2 两个相同类型的结构体变量之间相互赋值 159
7.3.3 结构体变量在函数间的传递 160
7.4 结构体数组 161
7.4.1 结构体数组的定义 161
7.4.2 结构体数组的初始化 162
7.4.3 结构体数组的引用 162
7.5 结构体指针 163
7.5.1 结构体指针变量的定义 163
7.5.2 结构体指针变量的引用 164
7.5.3 指向结构体数组的指针 164
7.5.4 结构体指针作函数参数 165
7.6 链表 166
7.6.1 链表的定义 167
7.6.2 实现动态内存分配的函数 168
7.6.3 链表的操作 169
7.7 共用体 174
7.7.1 共用体数据类型及变量的定义 174
7.7.2 共用体变量的引用 175
7.7.3 共用体的应用 176
7.8 枚举类型 177
7.9 用typedef定义类型 179
7.10 习题 179
第8章 位运算 182
8.1 位运算概述 182
8.2 位运算符的使用方法 182
8.2.1 按位“与”运算符(&) 182
8.2.2 按位“或”运算符(|) 183
8.2.4 按位“异或”运算符(∧) 184
8.2.3 按位“取反”运算符(~) 184
8.2.5 “左移”运算符(<<) 185
8.2.6 “右移”运算符(>>) 185
8.3 位段 186
8.3.1 位段的定义 186
8.3.2 位段的引用方式 187
8.4 位运算应用举例 188
8.5 习题 190
第9章 文件 193
9.1 文件概述 193
9.1.1 文件的基本概念 193
9.1.2 缓冲文件系统和非缓冲文件系统 193
9.1.3 文件类型指针 194
9.2 文件的打开与关闭 194
9.2.1 文件的打开 195
9.2.2 文件的关闭 195
9.3.1 输入和输出一个字符 196
9.3 文件的顺序读写 196
9.3.2 输入和输出一个字符串 198
9.3.3 格式化的输入和输出 199
9.3.4 按数据块的形式输入和输出 200
9.4 文件的定位与随机读写 201
9.4.1 文件的定位 202
9.4.2 文件的随机读写 202
9.6 习题 204
9.5 文件操作的出错检测 204
第10章 面向对象程序设计及C++基础 207
10.1 面向对象程序设计概述 207
10.1.1 面向过程程序设计 207
10.1.2 面向对象程序设计 207
10.1.3 对象与类 208
10.1.4 数据的封装性 208
10.1.5 继承性 209
10.1.6 多态性 209
10.2.2 C++的注释语句 210
10.2.3 用const定义常量 210
10.2.1 变量的定义 210
10.2 C++对C的扩充 210
10.2.4 新的I/O操作 211
10.2.5 作用域运算符 212
10.2.6 带缺省参数的函数 212
10.2.7 函数重载 213
10.2.8 内联函数 214
10.2.9 引用 215
10.2.10 动态内存分配 216
10.3 C++中的类与对象 217
10.3.1 类的声明 217
10.3.2 类成员函数的定义 218
10.3.3 对象的定义与访问 219
10.3.4 this指针 222
10.4 构造函数与析构函数 222
10.4.1 构造函数 223
10.4.2 缺省参数的构造函数 224
10.4.3 析构函数 225
10.5.1 静态数据成员 226
10.5 静态成员 226
10.5.2 静态成员函数 228
10.6 友元 229
10.6.1 友元函数 229
10.6.2 友元成员函数 230
10.6.3 友元类 231
10.7 习题 231
11.1.1 类的层次结构 232
11.1.2 派生类对象结构 232
第11章 类的继承与多态 232
11.1 继承与派生 232
11.1.3 继承基类成员 233
11.2 继承的访问控制 234
11.2.1 类内的访问控制 234
11.2.2 继承访问控制 236
11.3 派生类的构造函数与析构函数 237
11.3.1 派生类构造函数与析构函数的执行顺序 237
11.3.2 派生类构造函数构造规则 238
11.4 多重继承 241
11.4.1 多重继承的声明 241
11.4.2 多重继承的构造函数 241
11.4.3 二义性问题 243
11.4.4 虚基类 245
11.5 多态性概述 246
11.6 编译时的多态性与运行时的多态性 246
11.7 运算符重载 246
11.7.1 用成员函数重载运算符 247
11.7.2 用友元函数重载运算符 248
11.8 虚函数 249
11.9 纯虚函数和抽象类 250
11.10 习题 252
第12章 C++的输入输出流 253
12.1 C++的IO系统概述 253
12.2 输入输出的格式控制 254
12.2.1 使用控制符控制输出格式 254
12.2.2 用ios类的成员函数实现格式化IO 256
12.3.1 重载插入运算符“<<” 257
12.3 用户自定义类型的输入输出 257
12.3.2 重载提取运算符“>>” 259
12.4 文件的输入输出 260
12.4.1 打开与关闭文件 260
12.4.2 读写文件 262
12.4.3 二进制文件的读写 264
12.5 习题 267
附录A ASCII码表 268
B.1 宏定义 271
附录B 编译预处理 271
B.2 文件包含 276
B.3 条件编译 277
附录C 运算符与结合性 280
附录D C语言库函数 281
附录E Visual C++使用方法简介 288
E.1 Visual C++开发环境 288
E.2 C++程序开发过程 289
参考文献 292