目 录
第一部分 初 涉 编 程
第1章 编程认识 3
1.1 编程语言 3
1.1.1 语言与编程 3
1.1.2 程序翻译 5
1.1.3 语言影响编程 7
1.2 操作与环境 9
1.2.1 文件种类 9
1.2.2 操作流程 10
1.2.3 控制台编程 11
1.2.4 C++环境 12
1.3 从最小程序切入 13
1.3.1 带输出的最小程序 13
1.3.2 程序解释 13
1.3.3 比照C程序 15
1.3.4 实现与实践 16
1.4 语句编排 16
1.4.1 程序构成要素 16
1.4.2 变量与处理 20
1.4.3 空格与注释 23
1.4.4 编排技巧 24
1.4.5 正确性问题 29
1.5 重复执行问题 31
1.5.1 重复与循环 31
1.5.2 简单循环控制 32
1.5.3 重复执行语句集合 36
1.6 规范问题描述 37
1.6.1 问题求解中的循环控制 37
1.6.2 问题求解模式 38
1.6.3 循环输出字符矩形 39
1.6.4 循环输出 41
1.7 目的归纳 41
1.7.1 编程语言 41
1.7.2 操作与环境 42
1.7.3 从最小程序切入 42
1.7.4 语句编排 42
1.7.5 重复输出问题 42
1.7.6 规范问题描述 43
1.8 练习 43
A.一个@字符矩形(1163) 43
B.一个#字符正方形(1164) 44
C.一个字符三角形(1165) 44
D.正方形面积(1167) 45
E.A–B(1166) 45
第2章 过程控制 46
2.1 简单for循环 46
2.1.1 for循环结构 46
2.1.2 次数控制方式 49
2.1.3 输入控制方式 51
2.2 分支语句 53
2.2.1 if语句 53
2.2.2 switch语句 57
2.2.3 if与switch 61
2.3 循环语句 67
2.3.1 for循环嵌套 67
2.3.2 while循环 71
2.3.3 for与while 77
2.3.4 do-while循环 82
2.4 转移语句 90
2.4.1 break语句 90
2.4.2 continue语句 94
2.4.3 goto语句 97
2.5 初涉函数 100
2.5.1 函数使用三部曲 100
2.5.2 分类与表达 104
2.6 输入/输出初步 106
2.6.1 标准输入/输出 106
2.6.2 输入流 108
2.6.3 输出流控制 108
2.6.4 printf格式控制 113
2.6.5 scanf格式控制 119
2.7 目的归纳 122
2.7.1 简单for循环 122
2.7.2 分支语句 122
2.7.3 循环语句 122
2.7.4 转移语句 123
2.7.5 初涉函数 123
2.7.6 输入/输出 123
2.7.7 归纳 123
2.8 练习 124
A.字母三角形 (1138) 124
B. 字符菱形(1169) 125
C. 背靠背字符三角形(1170) 125
D. 交替字符倒三角形(1171) 126
E. 格式阵列一(1172) 127
F.格式阵列二(1173) 127
第3章 数据类型 129
3.1 整型 129
3.1.1 内部表示原理 130
3.1.2 整型长度与范围 133
3.1.3 整型数 136
3.1.4 整型操作 138
3.1.5 整数问题 140
3.2 整型子类 145
3.2.1 字符型 145
3.2.2 枚举型 150
3.2.3 布尔型 152
3.3 浮点型 153
3.3.1 浮点型数 153
3.3.2 十进制小数 158
3.3.3 32位浮点数 160
3.3.4 三种浮点型 167
3.3.5 浮点数问题 170
3.4 C字串 174
3.4.1 C串表示 174
3.4.2 C串操作 178
3.5 string字串 186
3.5.1 string串 186
3.5.2 string流 194
3.6 输入方式 199
3.6.1 基本输入 199
3.6.2 文件输入 200
3.6.3 控制台输入 203
3.6.4 标准键盘输入 204
3.6.5 读入行 205
3.6.6 读入字符 207
3.7 目的归纳 208
3.7.1 整型数 209
3.7.2 浮点型 209
3.7.3 C串 209
3.7.4 string 210
3.7.5 输入方式 210
3.8 练习 210
A.1!到n!的和(1174) 210
B.等比数列(1175) 211
C.平均数(1179) 211
D.级数求和(1180) 211
E.整数内码(1183) 212
F.算菜价(1700) 212
G.去掉双斜杠注释(1216) 213
第二部分 拓 展 技 巧
第4章 数组与结构 217
4.1 一维数组 217
4.1.1 定义与初始化 217
4.1.2 空间与元素 221
4.1.3 数组意义 223
4.2 一维数组应用 225
4.2.1 可用数组解决 225
4.2.2 用数组更高效 232
4.2.3 通常用数组解决 237
4.3 多维数组 243
4.3.1 定义与初始化 243
4.3.2 多维数组应用 246
4.4 结构 252
4.4.1 结构概念 252
4.4.2 结构定义 253
4.4.3 结构操作 254
4.5 结构数组 258
4.5.1 定义与使用 258
4.5.2 结构数组应用 262
4.6 目的归纳 273
4.6.1 一维数组 273
4.6.2 一维数组应用 273
4.6.3 多维数组 273
4.6.4 结构 274
4.6.5 结构数组 274
4.7 练习 274
A.“顺”序列(1198) 274
B.数星星(1008) 275
C.组合数(1086) 275
D.折纸游戏(1087) 276
E.倒杨辉三角形(1197) 277
F.文件名排序(1383) 277
G.最少拦截系统(1099) 278
第5章 文法及表达 279
5.1 文法浅释 279
5.1.1 文法概述 279
5.1.2 文法描述 283
5.1.3 文法约束 288
5.2 词法理解 289
5.2.1 词法 289
5.2.2 标识符 289
5.2.3 关键字 291
5.2.4 字面值 292
5.2.5 操作符 295
5.3 实体与类型 297
5.3.1 实体属性 297
5.3.2 实体类型 298
5.3.3 常量 301
5.3.4 左值和右值 303
5.4 数值类型转换 304
5.4.1 隐式转换 304
5.4.2 显式转换 306
5.5 表达式 308
5.5.1 概念 308
5.5.2 赋值表达式 309
5.5.3 关系表达式 311
5.5.4 逻辑表达式 314
5.5.5 选择表达式 316
5.5.6 逗号表达式 317
5.6 位逻辑 319
5.6.1 位操作 319
5.6.2 整除判断问题 321
5.6.3 人员选派问题 324
5.7 表达式的副作用 329
5.7.1 操作数求值顺序 329
5.7.2 编译器相关 331
5.7.3 副作用现象 331
5.7.4 消除副作用 332
5.7.5 追根溯源 333
5.8 目的归纳 334
5.8.1 文法浅释 334
5.8.2 词法理解 334
5.8.3 实体与类型 334
5.8.4 类型转换 335
5.8.5 表达式 335
5.8.6 位逻辑 335
5.8.7 表达式副作用 335
5.9 练习 336
A.三位对称素数(1181) 336
B.十-二进制转换(1185) 336
C.斐波那契数的余数(1090) 337
D.五位以内对称素数(1187) 337
E.统计天数(1188) 338
F.整除3、5、7(1184) 338
第6章 数据指针 340
6.1 指针本质 340
6.1.1 原始概念 340
6.1.2 内存地址 341
6.1.3 定义与性质 342
6.1.4 间接访问 346
6.1.5 类型转换 350
6.2 指针限定 353
6.2.1 实体与名字对应 353
6.2.2 限定指针 354
6.3 数组的指针性 359
6.3.1 数组实体 359
6.3.2 访问元素 365
6.3.3 指针与数组的差别 369
6.4 数组类型蜕变 372
6.4.1 数组传递 372
6.4.2 数组传递实例 376
6.5 动态内存 379
6.5.1 概念 379
6.5.2 申请与释放 381
6.5.3 堆空间管理 388
6.5.4 内存泄漏与溢出 390
6.6 指针与结构 394
6.6.1 结构指针 394
6.6.2 链结构 398
6.6.3 链表操作 403
6.7 目的归纳 413
6.7.1 指针本质 413
6.7.2 指针限定 413
6.7.3 数组的指针性 414
6.7.4 数组类型蜕变 414
6.7.5 动态内存 414
6.7.6 指针与结构 415
6.8 练习 415
A.浮点数位码(1193) 415
B.半数跳海(1080) 416
C.歌词字数排序 417
D.仿内存管理 418
E.机器人排序 419
第三部分 组 织 程 序
第7章 函数初步 423
7.1 函数参数 423
7.1.1 参数概念 423
7.1.2 参数传递 425
7.1.3 类型匹配 428
7.1.4 参数默认 429
7.2 指针参数 433
7.2.1 指针参数的作用 433
7.2.2 传递安全性 436
7.2.3 指针参数的作用 437
7.3 引用参数 438
7.3.1 引用 438
7.3.2 引用匹配 441
7.3.3 引用本质 443
7.4 函数返回 447
7.4.1 函数的返回 447
7.4.2 返回指针 449
7.4.3 返回引用 452
7.5 函数重载 455
7.5.1 重载概述 455
7.5.2 重载识别 458
7.5.3 重载技术 461
7.5.4 重载抑或参数默认 462
7.6 函数指针 465
7.6.1 函数类型 465
7.6.2 指向函数的指针 467
7.6.3 作为参数 470
7.6.4 类型名 474
7.6.5 函数指针数组 477
7.6.6 函数类型蜕化 478
7.6.7 函数指针意义 480
7.7 目的归纳 481
7.7.1 函数参数 481
7.7.2 指针参数 481
7.7.3 引用参数 481
7.7.4 函数返回 481
7.7.5 函数重载 482
7.7.6 函数指针 482
7.8 练习 482
A.对称素数(1194) 482
B.n!的位数(1215) 483
C.12!配对(1191) 483
D.大数和(1222) 483
E.大数乘(1225) 484
F.排列对称串(1218) 484
第8章 函数进阶 486
8.1 函数栈 486
8.1.1 运行内存布局 486
8.1.2 栈机制 490
8.1.3 栈区演绎 494
8.2 函数驱动问题 498
8.2.1 函数驱动说明 498
8.2.2 驱动的制约因素 499
8.2.3 栈中腾挪问题 499
8.3 main函数 501
8.3.1 命令驱动 501
8.3.2 main参数 503
8.3.3 main返回 508
8.4 递归原理 510
8.4.1 递归概念 510
8.4.2 递归函数设计要领 512
8.4.3 消去递归 515
8.5 函数设计 518
8.5.1 一般设计原则 518
8.5.2 函数模块理论 526
8.6 语言设计 530
8.6.1 函数黑盒性 530
8.6.2 折中设计 533
8.6.3 函数副作用 535
8.7 目的归纳 538
8.7.1 函数栈 538
8.7.2 函数驱动 538
8.7.3 main函数 539
8.7.4 递归函数 539
8.7.5 函数设计 539
8.7.6 语言设计 540
8.8 练习 540
A. 最大公约数(1177) 540
B. 密钥加密(1195) 540
C. 斐波那契数(1219) 541
D. 整数模(1227) 542
E. 最近的两点(1223) 542
F. 整数的因子数(1192) 543
第9章 程序构造 545
9.1 程序概述 545
9.1.1 静态描述 545
9.1.2 动态描述 551
9.2 程序组织 554
9.2.1 逻辑设计 554
9.2.2 代码组织 556
9.2.3 数据布局 563
9.3 设计实例 567
9.3.1 Josephus问题 567
9.3.2 再析Josephus问题 576
9.4 名字时效 584
9.4.1 作用域 584
9.4.2 生命期 595
9.4.3 名空间 597
9.5 编译实现 605
9.5.1 编译指令 605
9.5.2 编译链接 613
9.5.3 编译错误 617
9.6 目的归纳 629
9.6.1 程序概述 629
9.6.2 程序组织 629
9.6.3 设计实例 630
9.6.4 名字时效 630
9.6.5 编译实现 630
9.7 练习 630
A.大数四则运算 630
B.小计算器 631
参考文献 636
??
??
??
??
20
C++程序设计教程详解——过程化编程
19
目 录