第1章 程序设计基本概念 1
1.1 计算机的过去与现在 2
1.2 计算机硬件结构 3
1.3 计算机软件 5
1.3.1 操作系统 5
1.3.2 应用软件 6
1.3.3 程序语言 6
1.4 程序设计方法 7
第2章 流程图 11
2.1 简介 12
2.2 范例 15
问题练习 29
第3章 C++程序语言初步 31
3.2 C++的程序结构 32
3.1 前言 32
3.3 变量与常量 38
3.4 数据类型(Data Type) 39
3.4.1 整数(Integer) 40
3.4.2 浮点数(Floating Point) 41
3.4.3 字符(Character)与字符串(String) 45
3.4.4 布尔型 47
3.4.5 枚举型 49
3.4.6 数据类型转换 51
3.5 操作数与运算符 53
3.5.1 算术运算符 54
3.5.2 递增(++)、递减(--)运算符 54
3.5.3 赋值(=)与复合赋值(op=)运算符 56
3.6 结论 58
问题练习 59
第4章 选择语句与重复语句 63
4.1 前言 64
4.2 关系运算符、逻辑运算符 64
4.2.1 关系运算符 64
4.2.2 逻辑运算符 66
4.2.3 运算符的优先级 66
4.3 if语句 66
4.4 switch语句 73
4.5 while语句 80
4.6 do while语句 83
4.7 for语句 85
4.8 break语句 89
4.10 goto label 90
4.9 continue语句 90
4.11 选择语句与重复语句的应用 92
4.11.1 十进制转换成二进制 92
4.11.2 求不大于整数n的质数 95
4.12 结论 97
问题练习 98
第5章 数组与结构 101
5.1 前言 102
5.2 数组(Array) 102
5.2.1 数组的定义与初始值设定 102
5.2.2 数组数据的访问 109
5.2.3 字符数组 111
5.3 结构(Structure) 115
5.3.1 结构的声明与初始值设定 115
5.3.2 结构中的结构 118
5.3.3 结构数据成员的访问 119
5.3.5 结构与类的差异 122
5.4 数组与结构的应用 122
5.4.1 转置矩阵 122
5.3.4 结构指针 122
5.4.2 反射矩阵 125
5.4.3 选择排序法 127
5.4.4 插入排序法 130
5.4.5 二元搜寻法 133
5.4.6 堆栈(Stack) 137
5.4.7 队列(Queue) 138
5.5 结论 139
问题练习 140
第6章 指针 143
6.2 指针(Pointer) 144
6.1 前言 144
6.3 字符指针 148
6.4 字符串指针 150
6.5 数组指针 151
6.6 结构指针 153
6.7 动态内存配置 155
6.8 结论 158
问题练习 159
第7章 输入与输出 161
7.1 前言 162
7.2 格式化的输出 162
7.2.1 设定输出宽度 162
7.2.2 设定对齐方式 163
7.2.4 设定以小数点或科学记号方式输出 165
7.2.3 设定输出的小数点位数 165
7.2.5 格式化标志 166
7.3 字符、字符串的输入与输出 167
7.3.1 字符的输入与输出 167
7.3.2 字符串的输入与输出 169
7.4 文本数据的存取 172
7.4.1 文本文件的存取 173
7.4.2 文件的打开模式 179
7.4.3 二进制文件的存取 183
7.5 结论 187
问题练习 188
第8章 进一步讨论字符 191
8.2 字符的应用 192
8.2.1 字符的定义与赋值 192
8.1 前言 192
8.2.2 字符的运算 194
8.2.3 控制符 195
8.2.4 测试字符 196
8.2.5 字符数组 198
8.3 字符串的应用 200
8.3.1 字符串的定义与赋值 200
8.3.2 字符串的链接 202
8.3.3 字符串的长度 205
8.3.4 子字符串 206
8.3.5 比较字符串大小 207
8.3.6 寻找某字符串 211
8.3.7 寻找特定字符 214
8.3.8 插入字符串 216
8.3.9 替换字符串内容 218
8.3.10 删除子字符串 219
8.4 结论 221
问题练习 223
第9章 函数 225
9.1 前言 226
9.2 函数的定义与声明 226
9.2.1 函数的定义 226
9.2.2 函数的声明——函数原型 227
9.2.3 调用函数 227
9.3 C++的程序结构 230
9.4 标识符的作用域 231
9.5 参数的传递 236
9.5.1 传值调用(Call By Value) 236
9.5.2 传址调用(Call By Address) 238
9.5.3 引用调用(Call By Reference) 243
9.6 内联(inline)函数 244
9.7 递归函数(Recursive Function) 247
9.8 主程序的实参 252
9.9 函数的应用 254
9.9.1 系统函数:随机数发生器rand()与random(n) 254
9.9.2 系统函数:日期与时间getdate()与gettime() 257
9.9.3 系统函数:ceil(x)与floor(x) 259
9.9.4 系统函数:平方根sqrt(x) 260
9.9.5 系统函数:次方pow(x,y) 261
9.9.6 输出空格与空行 262
9.9.7 布尔函数 264
9.9.8 冒泡排序法 265
9.9.9 堆栈的实作(使用数组) 269
9.9.10 堆栈的制作(使用链接串行结构) 271
问题练习 275
9.10 结论 275
第10章 预处理指令、程序文件的分割与异常处理 279
10.1 前言 280
10.2 预处理指令 280
10.2.1 #include 280
10.2.2 #define与#undef 281
10.2.3 #if、#ifdef与#ifndef 283
10.3 程序文件的分割 284
10.3.1 变量的范围法则与外部变量 285
10.3.2 名空间(Namespace) 290
10.4 异常处理 296
10.5 结论 302
问题练习 303
第11章 面向对象的基本概念 305
11.1 软件危机 306
11.2 回归自然 307
11.3 面向对象的问题分析 313
11.4 面向对象的程序语言 314
问题练习 315
第12章 类的定义 317
12.1 前言 318
12.2 类的声明 318
12.2.1 结构的定义 318
12.2.2 声明 321
12.3 成员函数的定义与内联函数 323
12.4 构造函数与析构函数 327
12.5 合成使用类 332
12.6 静态的类成员 336
12.7 结论 339
问题练习 340
第13章 运算符的重载 343
13.1 前言 344
13.2 友元函数与this指针 344
13.2.1 友元函数 344
13.2.2 this指针 346
13.3 重载的基本概念 348
13.3.1 运算符 348
13.3.2 定义运算符重载 350
13.4 流运算符重载 350
13.5 一元运算符重载 354
13.5.1 取址运算符 354
13.5.2 !运算符 355
13.5.3 ++与--运算符 357
13.6.1 下标运算符[] 361
13.6 二元运算符重载 361
13.6.2 赋值运算符 363
13.6.3 其他的二元运算符 364
13.7 实用性的Date类 365
13.8 结论 377
问题练习 378
第14章 继承 381
14.1 前言 382
14.2 继承的声明 383
14.2.1 基类与派生类 383
14.2.2 派生类的定义 384
14.3 构造函数与析构函数的使用 387
14.4 类的赋值问题 390
14.5 多重继承 392
问题练习 396
14.6 结论 396
第15章 虚函数与多态性 399
15.1 前言 400
15.2 虚函数的声明 401
15.3 抽象类 407
15.4 虚析构函数 409
15.5 结论 417
问题练习 417
第16章 软件工程简介 419
16.1 前言 420
16.2 何谓成功的信息系统开发项目 421
16.3 软件开发程序 421
16.4 软件开发方法 425
16.4.1 结构化方法 425
16.4.2 面向对象方法 433
16.5 软件开发工具 436
16.6 软件开发文件 437
16.6.1 为什么需要软件开发文件 437
16.6.2 软件分类原则 437
16.6.3 软件开发过程的文件 438
16.7 软件开发管理 439
16.7.1 项目管理 439
16.7.2 建构管理 439
16.8 结论 440
附录 441
附录A 流程图范例程序 442
附录B C++保留字 459
附录C ASCII码表 460
附录D 运算符的优先级 461
参考文献 463