上篇 3
第1章 绪论 3
1.1 程序设计概述 3
1.2 程序设计语言 9
1.3 简单的C语言程序 11
1.4 C语言程序的上机步骤 14
练习1 15
第2章 C语言基本数据类型 17
2.1 数据在计算机中的表示 17
2.1.1 计算机记数制 17
2.1.2 计算机中数的表示 24
2.2 常量与变量 31
2.3 基本数据类型常量 32
2.3.1 整型常量 32
2.3.2 实型(浮点型)常量 34
2.3.3 字符型常量 36
2.4 基本数据类型变量的定义 36
2.4.1 整型变量的定义 36
2.4.2 实型变量的定义 40
2.4.3 字符型变量的定义 41
练习2 43
第3章 数据的输入与输出 44
3.1 格式输出函数 44
3.1.1 基本的格式输出语句 44
3.1.2 printf()函数中常用的格式说明 49
3.1.3 使用printf()函数时的注意事项 52
3.2 格式输入函数 53
3.2.1 基本的格式输入语句 53
3.2.2 scanf函数中常用的格式说明 56
3.2.3 通过scanf函数从键盘输入数据 57
3.3 字符输出函数 59
3.4 字符输入函数 60
练习3 61
第4章 C语言表达式与宏定义 63
4.1 赋值运算及其表达式 63
4.2 算术运算及其表达式 64
4.3 关系运算及其表达式 65
4.4 逻辑运算及其表达式 68
4.5 其他运算符 71
4.5.1 增1与减1运算符 71
4.5.2 sizeof运算符 72
4.5.3 逗号运算符 74
4.6 标准函数 75
4.7 宏定义 75
4.7.1 符号常量定义 75
4.7.2 带参数的宏定义 77
4.7.3 带#的宏定义 80
练习4 81
第5章 选择结构 86
5.1 语句与复合语句 86
5.2 if语句 89
5.3 if…else结构 94
5.4 条件运算符 99
5.5 switch结构 102
5.6 程序举例 110
练习5 112
第6章 编 译预处理 116
6.1 文件包含命令 116
6.2 条件编译命令 118
6.3 #pragma命令 123
6.4 #line命令 124
第7章 循环结构 126
7.1 当型循环与直到型循环 126
7.2 while语句 127
7.3 do…while语句 129
7.4 对键盘输入的讨论 133
7.5 for语句 137
7.6 循环的嵌套与其他有关语句 139
7.6.1 循环的嵌套 139
7.6.2 break语句 142
7.6.3 continue语句 143
7.7 程序举例 146
练习7 158
第8章 模块(函数)设计 161
8.1 模块化程序设计与C函数 161
8.1.1 模块化程序设计的基本概念 161
8.1.2 函数的定义 162
8.1.3 函数的调用 165
8.2 模块间的参数传递 169
8.2.1 形参与实参的结合方式 169
8.2.2 局部变量与全局变量 172
8.2.3 动态存储变量与静态存储变量 174
8.2.4 内部函数与外部函数 179
8.3 模块的递归调用 181
8.4 程序举例 187
练习8 191
第9章 数组 194
9.1 数组的基本概念 194
9.2 数组的定义与引用 196
9.2.1 一维数组 196
9.2.2 二维数组 197
9.2.3 数组的初始化 198
9.3 字符数组与字符串 202
9.3.1 字符数组的定义与初始化 202
9.3.2 字符串 203
9.3.3 字符数组与字符串的输入与输出 204
9.3.4 字符串处理函数 207
9.4 数组作为函数参数 210
9.4.1 形参数组与实参数组的结合 210
9.4.2 二维数组作为函数参数 213
9.5 程序举例 216
练习9 223
第10章 指针 227
10.1 指针变量 227
10.1.1 指针的基本概念 227
10.1.2 指针变量的定义与引用 228
10.1.3 指针变量作为函数参数 232
10.1.4 指向指针的指针 235
10.2 指针数组 237
10.3 数组与指针 238
10.3.1 一维数组与指针 238
10.3.2 二维数组与指针 241
10.3.3 数组指针作为函数参数 244
10.4 动态内存的申请与释放 249
10.4.1 malloc()函数 249
10.4.2 calloc()函数 253
10.4.3 realloc()函数 253
10.4.4 free()函数 254
10.5 字符串与指针 255
10.5.1 字符串指针 255
10.5.2 字符串指针作为函数参数 260
10.5.3 strstr函数 263
10.6 函数与指针 263
10.6.1 用函数指针变量调用函数 263
10.6.2 函数指针数组 266
10.6.3 函数指针变量作为函数参数 266
10.6.4 返回指针值的函数 268
10.7 main函数的形参 269
10.8 程序举例 271
练习10 272
第11章 结构体与联合体 276
11.1 结构体类型变量 276
11.1.1 结构体类型变量的定义与引用 276
11.1.2 结构体的嵌套 279
11.1.3 结构体类型变量的初始化 280
11.1.4 结构体与函数 282
11.2 结构体数组 284
11.2.1 结构体类型数组的定义与引用 284
11.2.2 结构体类型数组作为函数参数 287
11.3 结构体与指针 289
11.3.1 结构体类型指针变量的定义与引用 289
11.3.2 结构体类型指针作为函数参数 290
11.3.3 结构体的大小与#pragma中pack的关系 294
11.4 链表 297
11.4.1 链表的基本概念 297
11.4.2 链表的基本运算 300
11.4.3 多项式的表示与运算 304
11.5 联合体 309
11.6 枚举类型与自定义类型名 311
11.6.1 枚举类型 311
11.6.2 自定义类型名 313
练习11 315
第12章 文件 318
12.1 文件的基本概念 318
12.1.1 文本文件与二进制文件 318
12.1.2 缓冲文件系统 319
12.1.3 文件类型指针 320
12.2 文件的基本操作 321
12.2.1 文件的打开与关闭 321
12.2.2 文件的读写 322
12.2.3 文件的定位 330
12.2.4 文件缓冲区的清除 333
12.2.5 文件指针错误状态的清除 337
12.3 程序举例 339
练习12 343
第13章 位运算 346
13.1 二进制位运算 346
13.2 位段 351
13.3 程序举例 354
练习13 356
下篇 361
第14章 C++类与对象 361
14.1 从C语言到C++语言 361
14.2 面向对象的程序设计方法 361
14.3 类与对象 365
14.3.1 类和对象的概念 365
14.3.2 类的声明方法 366
14.3.3 对象的定义 367
14.3.4 对象的引用 368
14.4 类的成员函数 369
14.4.1 成员函数的声明与定义 370
14.4.2 inline成员函数 371
14.4.3 成员函数的存储方式和this指针 373
14.5 类的构造函数和析构函数 374
14.5.1 对象的初始化与构造函数 374
14.5.2 构造函数类型 375
14.5.3 构造函数的重载 377
14.5.4 使用默认参数的构造函数 379
14.5.5 类的析构函数 380
14.6 对象数组和对象指针 385
14.6.1 对象数组 385
14.6.2 对象指针 386
14.7 共用数据的保护 388
14.7.1 常对象及常成员函数 389
14.7.2 对象的常数据成员 390
14.7.3 指向对象的常指针和指向常对象的指针变量 390
14.7.4 对象的常引用 392
14.7.5 const型数据的小结 393
14.8 同类对象间的数据共享及类的静态成员 394
14.8.1 类的静态数据成员 394
14.8.2 类的静态成员函数 396
14.9 对象的动态构建和释放 398
14.10 对象的赋值和复制 399
14.11 友元和友元类 404
14.11.1 友元函数 404
14.11.2 友元类 406
14.12 应用程序举例——公司人事管理系统 407
本章小结 411
练习14 411
第15章 运算符重载 414
15.1 运算符重载的一般方法 414
15.2 运算符重载函数作为类的成员函数或友元函数 417
15.2.1 双目运算符的重载应用举例 419
15.2.2 单目运算符的重载举例 421
15.2.3 流插入运算符和流提取运算符的重载 426
15.3 类对象与标准类型数据之间的转换方法 429
15.3.1 转换构造函数 429
15.3.2 基于运算符重载机制的类型转换函数 430
15.3.3 综合程序举例 432
15.4 综合程序应用——某公司人事管理系统 446
本章小结 450
练习15 450
第16章 继承与派生 452
16.1 继承与派生的概念 452
16.2 派生类的声明方式及其组成 453
16.2.1 派生类的声明方式 453
16.2.2 派生类的组成 454
16.3 派生类成员的访问属性与继承方式 454
16.3.1 公用继承方式 455
16.3.2 私有继承方式 457
16.3.3 保护成员和保护继承 459
16.3.4 使用using声明来改变基类成员在派生类中的访问属性 461
16.4 派生类的构造函数和析构函数 462
16.4.1 单继承的派生类构造函数 462
16.4.2 内嵌子对象的派生类的构造函数 464
16.4.3 多级派生类的构造函数 466
16.4.4 派生类构造函数的定义规则总结 467
16.4.5 派生类的析构函数 468
16.5 多重继承与虚基类 468
16.5.1 多重派生类构造函数的定义方法 468
16.5.2 多重继承中同名数据引起的二义性问题 471
16.5.3 虚基类 472
16.6 继承与组合 478
16.7 综合程序应用——公司人事管理系统 483
本章小结 509
练习16 509
第17章 多态性与虚函数 513
17.1 基类与派生类的对象兼容关系 513
17.2 多态性与虚函数 516
17.2.1 多态性概念及类型 516
17.2.2 虚函数 517
17.2.3 虚析构函数 521
17.2.4 多重继承中的虚函数 524
17.3 纯虚函数与抽象类 526
17.3.1 纯虚函数的概念 526
17.3.2 抽象类 527
17.3.3 应用实例 528
17.4 综合程序举例 531
本章小结 532
练习17 532
第18章 输入输出流 535
18.1 C++的输入和输出流类 535
18.1.1 C++输入输出的类别和特点 535
18.1.2 C++输入输出流和流类 535
18.2 标准的输出流输入流 537
18.2.1 标准输出流 537
18.2.2 标准输入流 543
18.3 文件I/O操作与文件流 548
18.3.1 文件类型和文件流 548
18.3.2 文件流类与文件流对象 548
18.3.3 ASCII文件的读写操作 550
18.3.4 二进制文件的读写操作 552
18.4 字符串流的输入和输出 555
18.5 综合程序应用——公司人事管理系统 558
本章小结 558
练习18 559
第19章 C++语言工具 560
19.1 函数模板和类模板 560
19.1.1 函数模板 560
19.1.2 类模板 563
19.2 异常处理 569
19.2.1 异常处理的概念 569
19.2.2 异常处理的方法 570
19.2.3 函数声明中的异常情况指定 575
19.3 命名空间 576
19.3.1 命名空间的概念和作用 576
19.3.2 同名冲突解决方法与命名空间 578
19.4 C++语言的函数库 583
19.5 C++标准模板库 585
19.5.1 STL的组件以及关系 586
19.5.2 容器 586
19.5.3 迭代器 589
19.5.4 算法与函数对象 592
19.6 综合程序应用——某公司人事管理系统 596
本章小结 675
练习19 675
附录A 基本ASCII码表 677
附录B C语言常用库函数 680