第1章 计算机和计算机语言 1
1.1 计算机工作原理 1
1.1.1 计算机基本组成 1
1.1.2 计算机工作原理 2
1.1.3 计算机软件 3
1.2 计算机语言 3
1.2.1 计算机语言的发展进程 3
1.2.2 程序设计进程 4
1.2.3 Pascal语言概述 6
1.3 算法和算法描述 10
1.3.1 程序设计的基本方法 10
1.3.2 算法 11
1.3.3 算法的描述 12
1.4 练习题 16
第2章 顺序结构程序设计 19
2.1 问题导引与分析 19
2.1.1 问题导引 19
2.1.2 问题分析 19
2.1.3 解决方案 21
2.2 变量、常量定义 21
2.2.1 变量的物理意义 21
2.2.2 变量的定义 22
2.2.3 常量的定义 23
2.3 赋值语句 24
2.3.1 赋值语句的格式和功能 24
2.3.2 Pascal常用函数库 25
2.3.3 表达式规范书写格式 26
2.3.4 赋值语句的应用 28
2.4 输出语句 29
2.4.1 输出语句的格式和功能 29
2.4.2 写语句的输出格式 30
2.4.3 输出语句的应用 31
2.5 输入语句 32
2.5.1 输入语句的格式与功能 32
2.5.2 read和readln语句区别 33
2.5.3 输入语句的应用 34
2.6 顺序结构程序设计实例 35
2.6.1 实例2-1 日期写法(date) 35
2.6.2 实例2-2 数字分离(splitnum) 36
2.6.3 实例2-3 时间戳(times) 38
2.7 练习题 39
第3章 选择结构程序设计 42
3.1 问题导引与分析 42
3.1.1 问题导引 42
3.1.2 问题分析 42
3.1.3 解决方案 43
3.2 布尔表达式 44
3.3 条件语句 45
3.3.1 条件语句的格式与功能 45
3.3.2 条件语句的应用 47
3.4 情况语句 52
3.4.1 情况语句的格式与功能 52
3.4.2 情况语句的应用 54
3.5 选择结构程序设计实例 58
3.5.1 实例3-1 机器人的移动问题(robot) 58
3.5.2 实例3-2 解方程的困扰(equation) 60
3.5.3 实例3-3 数表读数(table) 63
3.6 练习题 66
第4章 循环结构程序设计 70
4.1 问题导引与分析 70
4.1.1 问题导引 70
4.1.2 问题分析 71
4.1.3 解决方案 72
4.2 for循环语句 72
4.2.1 for循环语句的格式与功能 72
4.2.2 for循环语句的应用 75
4.3 while循环语句 82
4.3.1 while循环语句的格式与功能 82
4.3.2 while循环语句的应用 83
4.3.3 while循环语句与for循环语句应用的互换 86
4.4 repeat循环语句 88
4.4.1 repeat循环语句的格式与功能 88
4.4.2 repeat循环语句的应用 89
4.4.3 repeat循环语句与while循环语句的互换 93
4.5 循环结构程序设计实例 96
4.5.1 实例4-1 出租车计费(taxicost) 96
4.5.2 实例4-2 价格竞猜(price) 98
4.5.3 实例4-3 满载着爱的代码(heart) 99
4.6 练习题 101
第5章 文件 105
5.1 问题导引与分析 105
5.1.1 问题导引 105
5.1.2 问题分析 107
5.1.3 解决方案 108
5.2 文本文件 108
5.2.1 文本文件的特点 109
5.2.2 文本文件的操作 109
5.3 文件应用实例 112
5.3.1 实例5-1 笑笑和“最佳运动员”问题——创建测试数据文件举例 112
5.3.2 实例5-2 乐乐和“乒乓球”问题——创建测试数据文件举例 114
5.3.3 实例5-3 文件合并——多文件数据操作举例 116
5.4 练习题 117
第6章 数组 122
6.1 问题导引与分析 122
6.1.1 问题导引 122
6.1.2 问题分析 124
6.1.3 解决方案 126
6.2 一维数组 126
6.2.1 一维数组的定义 126
6.2.2 一维数组的引用 127
6.2.3 一维数组的应用 129
6.3 多维数组 140
6.3.1 多维数组的定义 140
6.3.2 二维数组的应用 141
6.4 数组应用实例 146
6.4.1 实例6-1 矩形(maxt)——枚举法应用举例 146
6.4.2 实例6-2 火柴棒等式(matches)——枚举法应用举例 150
6.4.3 实例6-3 最大子段和(seq)——贪心思想应用举例 153
6.4.4 实例6-4 集合删数(number)——贪心思想应用举例 155
6.4.5 实例6-5 奇因数(fsum)——递推算法应用举例 159
6.4.6 实例6-6 守望者的逃离(escape)——递推算法应用举例 161
6.5 练习题 164
第7章 函数与过程 171
7.1 问题导引与分析 171
7.1.1 问题导引 171
7.1.2 问题分析 174
7.1.3 解决方案 175
7.2 函数 177
7.2.1 函数的定义 177
7.2.2 函数的调用 179
7.2.3 函数的应用 179
7.3 过程 183
7.3.1 过程的定义 184
7.3.2 过程的调用 184
7.3.3 过程的应用 185
7.4 函数与过程的数据传递 189
7.4.1 数值参数与变量参数 189
7.4.2 全局变量与局部变量 191
7.5 函数与过程的嵌套 193
7.5.1 函数与过程的嵌套 193
7.5.2 递归程序设计 194
7.6 函数与过程程序设计实例 204
7.6.1 实例7-1 一元三次方程求解(equation)——分治法应用举例 204
7.6.2 实例7-2 八皇后问题(queen)——回溯法应用举例 206
7.6.3 实例7-3 积木覆盖(puzzle)——回溯法应用举例 208
7.7 练习题 211
第8章 字符串 218
8.1 问题导引与分析 218
8.1.1 问题导引 218
8.1.2 问题分析 220
8.1.3 解决方案 221
8.2 字符串 221
8.2.1 字符串的定义 221
8.2.2 字符串的基本操作 223
8.2.3 字符串函数和过程 224
8.2.4 字符串的应用 228
8.3 字符串综合应用程序设计实例 231
8.3.1 实例8-1 ISBN号码(ISBN)——模拟法应用举例 231
8.3.2 实例8-2 连接整数(link)——贪心法应用举例 233
8.3.3 实例8-3 单词接龙(words)——回溯法应用举例 234
8.4 练习题 237
第9章 记录、集合、枚举及子界类型 243
9.1 问题导引与分析 243
9.1.1 问题导引 243
9.1.2 问题分析 246
9.1.3 解决方案 247
9.2 记录类型 247
9.2.1 记录类型定义 248
9.2.2 记录类型的操作 250
9.2.3 记录类型的应用 252
9.3 集合类型 255
9.3.1 集合类型的定义 255
9.3.2 集合的构成 256
9.3.3 集合的运算 256
9.3.4 集合的应用 258
9.4 枚举类型 259
9.4.1 枚举类型的定义 260
9.4.2 枚举类型的性质 260
9.4.3 枚举类型的应用 261
9.5 子界类型 263
9.5.1 子界类型的定义 263
9.5.2 子界类型的应用 264
9.6 自定义数据类型程序设计实例 265
9.6.1 实例9-1 作业调度方案问题(jsp)——记录类型应用举例 265
9.6.2 实例9-2 整数因子团问题(ise)——集合类型应用举例 270
9.7 练习题 272
第10章 指针类型 277
10.1 问题导引与分析 277
10.1.1 问题导引 277
10.1.2 问题分析 278
10.1.3 解决方案 279
10.2 指针及其应用 280
10.2.1 指针变量 280
10.2.2 动态变量 281
10.2.3 指针的操作 282
10.3 链表结构 283
10.3.1 链表的基本结构 283
10.3.2 单向链表的基本操作 285
10.3.3 其他链表结构 290
10.4 指针类型程序设计实例 291
10.4.1 实例10-1 合并珠子(merge)——链表的合并操作举例 291
10.4.2 实例10-2 约瑟夫问题(joseph)——链环的应用举例 294
10.4.3 实例10-3 走出泥潭(route)——应用链表求解路径问题举例 296
10.5 练习题 299
第11章 综合程序设计 306
11.1 贪心算法专题 306
11.1.1 贪心算法思想 308
11.1.2 购买贺年卡——生活中的贪心算法举例 309
11.1.3 设置喷水池——覆盖问题中的贪心算法举例 311
11.1.4 筛选游戏卡——数学问题中的贪心算法举例 313
11.1.5 舞伴的搭配——匹配问题中的贪心算法举例 314
11.2 递推算法专题 316
11.2.1 递推算法思想 318
11.2.2 淘气的钥匙——错排问题中的递推算法举例 319
11.2.3 生日蛋糕——几何问题中的递推算法举例 320
11.2.4 交费金额——存在性问题中的递推算法举例 321
11.2.5 谁去谁留——概率统计问题中的递推算法举例 322
11.3 高精度专题 324
11.3.1 高精度算法思想 326
11.3.2 奖励——高精度加法和减法举例 327
11.3.3 月赛——高精度乘法和除法举例 329
11.3.4 求2^p——高精度乘法中的分治运用举例 331
11.3.5 二叉树计数——Catalan数举例 333
11.4 基础搜索专题 336
11.4.1 基础搜索算法思想 339
11.4.2 迷宫问题——深度优先和广度优先搜索举例 342
11.4.3 零和问题——搜索参数的选择举例 344
11.4.4 01距离——搜索对象的选择举例 347
11.4.5 小木棍——搜索剪枝举例 349
参考文献 353