第1章 全C编程 1
1.1 什么是全C编程 1
1.2 C和C++的历史 1
1.3 为什么要学习全C编程 2
1.4 一个全C编程的例子 3
1.5 全C编程的步骤 4
1.6 程序设计的一个实例 8
1.7 设计你的第一个程序 16
边做边学练习 17
复习题 18
编程课题 19
第2章 数据和数据类型 20
2.1 变量与常量 20
2.2 整型数据int 24
2.3 浮点型数据float和double 28
2.4 字符型数据char 32
2.5 其他类型的数据 36
边做过学练习 37
复习题 38
编程课题 39
第3章 格式化的输入与输出 40
3.1 输入与输出(cin与cout) 40
3.2 输入流与输出流的探讨 42
3.3 格式化的输出 44
3.3.1 数制转换操作符cot,dec和hex 44
3.3.2 设置输出空格宽度操作setw() 45
3.3.3 设置填充字符操作setfill() 46
3.3.4 浮点精度控制操作setprecision() 48
3.5.5 输入/输出流标记控制setiosflags() 50
3.4 缓冲式输入/输出与非缓冲式输入/输出初探 54
3.4.1 缓冲区的概念 54
3.4.2 缓冲式输入--cin剖析 54
3.4.3 非缓冲式输入 56
3.4.4 缓冲式输出 57
3.4.5 非缓冲式输出 58
3.5 单字符的输入与输出 59
3.4.6 为什么需要缓冲式输入与输出 59
3.5.1 单字符输入 60
3.5.2 单字符输出 73
3.6 更好地设计程序中的输入与输出 78
边做边学练习 81
复习题 85
编程课题 86
4.1 语法错误与运行错误 87
第4章 用程序排错工具调试器来学习语言 87
4.2 基本调试器功能 88
4.2.1 程序运行的跟踪 88
4.2.2 设置程序运行的断点 96
4.2.3 观察变量赋值 97
4.2.4 检测表达式的计算结果 101
4.2.5 停止对程序运行的控制 103
4.2.6 观察程序的输出 104
4.2.7 检测变量或表达式的背景信息 104
4.3.1 通过分步运行程序和观察变量来了解缓冲区 105
4.3 应用调试器的综合例子 105
4.3.2 利用调试器来学习新的语言结构 108
4.3.3 利用调试器排除程序中的运行错误 112
边做边学练习 116
复习题 117
编程课题 117
第5章 运算、运算符和表达式 119
5.1 表达式和语句 119
5.2 赋值运算(=)和赋值表达式 120
5.3.1 基本算术运算 124
5.3 算术运算 124
5.3.2 求余运算 126
5.4 算术表达式和运算优先级 127
5.5 复合赋位运算 129
5.6 关系运算 131
5.6.1 基本关系运算 131
5.6.2 关系运算表达式和运算优先级 132
5.7 逻辑运算 135
5.7.1 逻辑运算及其运算符 135
5.7.2 复合表达式以及运算优先级 136
5.8 增值运算和减值运算 139
5.8.1 基本前缀增值、减值和后缀增值、减值运算 140
5.8.2 增值和减值运算在其他表达式中的应用 142
5.9 数据类型转换 146
5.9.1 自动数据类型转换 146
5.9.2 数据类型转换--造型(cast) 148
5.10 字书长度运算 149
5.11 逗号运算 151
边做进学练习 152
复习题 154
编程课题 154
第6章 循环语句 156
6.1 什么是循环 156
6.2 for循环语句 156
6.2.1 for循环语句的其它表达形式 161
6.3 while循环语句 163
6.3.1 while循环语句的其他表达形式 166
6.4 do-while循环语句 169
6.4.1 do-while循环语句的其他表达形式 172
6.5 嵌套循环 174
6.6 循环应用举例 177
6.7 其他控制语句 182
6.7.1 break语句 183
6.7.2 continue语句 183
边做过学练习 185
编程课题 187
复习题 187
第7章 分支与转移 189
7.1 简单条件语句if 190
7.2 双分支语句if-else 191
7.3 多分支语句(嵌套if-else语句) 193
7.4 条件运算符? 196
7.5 中断语句break 197
7.6 继续语句continue 199
7.7 exit() 200
7.8 开关语句switch 201
7.9 使用分支解决问题的实例 206
过做边学练习 214
复习题 215
编程课题 216
第8章 输入与输出的转向 218
8.1 什么是输入与输出的转向 219
8.2 输入与输出设备表以及I/O转向操作符 219
8.2.1 输出转向符以及输出转向操作 220
8.2.3 输入与输出的综合转向 221
8.2.2 输入转向符以及输入转向操作 221
8.3 文件结束符 222
8.3.1 利用文件结束符来控制输入 223
8.3.2 利用文件结束符控制输入的执行 223
8.3.3 利用文件结束符进行字符的输入与输出 225
8.4 输入与输出转向的实例 226
边做边学练习 231
复习题 233
编程课题 234
9.1 子程序的特性 235
第9章 子程序 235
9.2 简单子程序 237
9.3 带有返回值的子程序 239
9.4 参数以及带有参数的子程序 243
9.4.1 参数 243
9.4.2 带有参数的子程序举例 245
9.5 带有返回值和参数的子程序 248
9.6 系统库子程序 251
9.7 指针变量以及带有指针参数的子程序 253
9.8 子程序重载 257
9.9 利用子程序解决问题的实例 266
边做边学练习 271
练习题 272
编程课题 272
第10章 数组 274
10.1 数组的特点 274
10.2 数组的类型、分类和定义 276
10.2.1 数组的定义以及初始化 276
10.2.2 数组与内存字节 281
10.3.1 数组的赋值操作 282
10.3 数组的运算及操作 282
10.3.2 数组的输入与输出 284
10.3.3 数组运算 285
10.4 数组与子程序 291
10.5 多维数组 299
10.6 利用数组解决问题的实例 302
10.6.1 数组应用实例之一:排序 302
10.6.2 数组应用实例之二:数组单元的检索、取消和插入 306
10.6.3 数组应用实例之三:数组输入/输出的转向以及下标的利用 312
边做边学练习 314
复习题 315
编程课题 316
第11章 指针 317
11.1 指针的基础知识 317
11.2 指针变量 319
11.3 指针操作 323
11.3.1 指针的输入与输出操作 323
11.3.2 指针运算 325
11.4 指针与数组 326
11.5 指针与子程序 330
11.5.1 指针作为参数接收变量地址的传送 330
11.5.2 指针作为参数接收数组的传送 333
11.6 指针的进一步探讨 336
11.6.1 动态地址字节分配(new)和释放( delete) 336
11.6.2 动态地址字节分配出错时的处理 339
边做边学练习 342
复习题 343
编程课题 343
第12章 字符串 345
12.1 什么是字符串 345
12.4.1 字符串输入语句gets() 350
12.4.2 字符串输入控制语句cin.getline() 352
12.2 字符串与数组 356
12.5 字符串的运算以及字符串系统子程序 356
12.5.1 字符串复制函数strcpy() 358
12.3 字符串与指针 358
12.4 字符串的输入与输出 359
12.5.2 字符串连接函数strcat() 360
12.5.4 字符串/数值转换函数atoi(),atof(),atol()以及itoa() 365
12.5.3 字符串比较函数strcmp() 366
12.6 字符串与子程序 369
12.7 使用字符串解决问题的实例 372
边做进学练习 382
复习题 383
编程课题 384
第13章 文件 386
13.1 文件的基本概念 386
13.2 文件的定义、打开以及关闭 387
13.3 文件的输出操作 388
13.4 文件的输入操作 391
13.4.1 数值文件的输入操作 392
13.4.2 字符/字符串文件的输入操作 396
13.5 文件输入/输出操作成功与否的测试方法 398
13.6 二进制文件的输入与输出 401
13.7 传送文件名到子程序 407
13.8 随机文件输入/输出操作 408
13.9 利用文件输入/输出解决问题的实例 413
边做边学练习 418
复习题 420
编程课题 420
第14章 结构 422
14.1 什么是结构以及结构变量 422
14.1.1 定义结构的各种方法 424
14.2 结构的种类 425
14.2.1 简单结构 426
14.2.2 结构数组 427
14.2.3 动态链接表 429
14.2.4 动态地址分配链接表 433
14.3 结构与子程序 435
14.3.1 利用结构类型名传送结构到子程序 435
14.3.2 利用指针传送结构到子程序 436
14.3.3 利用子程序返回结构的值 438
14.4 使用结构解决问题的实例 439
边做边学练习 445
编程课题 447
复习题 447
第15章 类和对象 450
15.1 面向对象的程序设计 450
15.2 类 452
15.2.1 关于对象的例子 452
15.2.2 类和对象的关系 454
15.2.3 类的公用成员 457
15.2.4 类的私有成员 458
15.3 类的成员子程序 462
15.3.1 成员子程序的直接编写 463
15.3.2 成员子程序的外部编写 464
15.4 构造函数和折构函数 466
15.4.1 构造函数的定义和使用 466
15.4.2 直接构造函数 468
15.4.3 析构函数 469
15.4.4 复制构造函数 473
15.5 构造函数重载 476
15.6 预置值构造函数 479
15.7 其他类型的类 481
15.7.1 类数组 481
15.7.2 指向对象的指针 483
15.8 使用类解决问题的实例 485
边做进学练习 494
复习题 496
编程课题 496
16.2 基类和导出类 499
16.1 继承的基本概念 499
第16章 继承 499
16.3 单继承 503
16.4 多重继承 509
16.5 多级继承 515
16.6 关于成员变量和成员子程序的进一步讨论 521
16.7 使用继承解决问题的实例 527
边做边学练习 533
复习题 534
编程课题 534
17.1 模板的概念 536
第17章 模板 536
17.2 子程序模板 538
17.2.1 单数据类型子程序模板 538
17.2.2 利用子程序模板编程的几个问题 541
17.2.3 多数据类型子程序模板 541
17.3 类模板 545
17.4 模板与重载的比较 549
17.5 使用类模板解决问题的实例 550
边做边学练习 558
复习题 559
编程课题 560
第18章 虚拟成员干程序与多态性 561
18.1 多态性概念 561
18.2 虚拟成员子程序和多态性程序示例 561
18.3 多态性规则 566
18.4 纯虚拟成员子程序 571
18.5 虚拟成员子程序和多级继承 573
18.6 使用多态性解决问题的实例 576
边做边学练习 583
编程课题 584
复习题 584
第19章 运算符重载 586
19.1 什么是运算符重载 586
19.2 为什么要使用运算符重载 587
19.3 运算符重载的一个简单例子 588
19.4 常用重载运算符以及重载类型 591
19.4.1 基本类型运算符重载 591
19.4.2 简单类型运算符重载 593
19.4.3 返回对象型运算符重载 595
19.4.4 输入/输出重载 601
19.5 使用运算符重载时需要注意的问题 604
19.6 使用运算符重载解决问题的实例 605
进做过学练习 610
复习题 613
编程课题 614
附录1 ASCII代码表 615
附录2 关键字 617
附录3 运算符和运算优先等级 618
附录4 常用数学函数和输入/输出库子程序 620