第1章 基础模块 1
1.1计算机中数的表示 1
计算机是智能化的电器设备 1
二进制数的运算法则 1
十进制与二进制、八进制、十六进制数之间的相互转换 1
数的定点和浮点表示法 2
ASCII编码 2
原码、反码与补码 3
1.2计算机的发展趋势 3
1.3网络基础 4
计算机网络 4
因特网提供的服务 5
因特网上的信息传输 6
万维网 6
练习题 7
第2章 程序设计语言模块 14
2.1初识Pascal语言 14
Pascal语言概述 14
Pascal语言的特点 14
Pascal语言程序的基本结构 15
字符集 16
符号 16
数据类型的概念 17
2.2 Pascal语言的基础知识 18
常量 18
常量定义 19
变量 20
标准数据类型 20
Pascal常用的算术标准函数 22
字符类型 23
布尔类型 23
表达式 23
练习题 23
2.3顺序结构程序设计 24
赋值语句 24
读语句(输入语句) 24
写语句(输出语句) 25
整型类型变量输出 25
应用例析 25
练习题 27
2.4简单的分支结构程序设计 27
Pascal中的逻辑运算 27
布尔常量和布尔变量 28
布尔表达式 28
if语句(条件语句) 29
条件语句嵌套 30
case语句(分情况语句) 32
练习题 33
2.5循环结构程序设计 34
用for语句实现循环结构(计数型循环) 34
用while语句实现循环结构 35
用repeat-until语句实现循环结构 35
循环的嵌套 37
练习题 44
2.6数组类型 46
引入数组的必要性 46
一维数组的定义 46
一维数组类型常数定义 47
一维数组变量的赋值操作 47
多维数组 47
字符数组与字符串类型 53
练习题 54
2.7字符与字符串处理 54
字符、字符串类型的使用 54
字符串的操作 57
字符串的函数和过程 58
2.8枚举、子界、集合及记录类型 60
枚举类型 60
Pascal的类型概念 60
枚举类型的定义、运算规则和输入输出方法 60
引入子界类型的必要性 61
子界类型的定义和运算规则 62
集合类型基本知识 63
Pascal语言中的集合 64
记录类型 65
开域语句 66
记录数组 67
2.9过程与函数 67
过程 67
函数 70
递归调用的概念 70
练习题 74
2.10栈 76
栈的概念和特性 76
栈的存储结构 77
双栈及操作 80
练习题 81
2.11指针类型与动态变量 82
指针类型 82
指针变量 82
链表 83
在链表中插入结点 86
删除一个结点 87
链表存储方式 88
双向链表 93
循环链表 94
练习题 96
第3章 算法与程序设计模块 100
3.1算法 100
算法的5个重要特性 100
算法设计的要求 100
算法分析 101
程序设计 101
练习题 102
3.2穷举搜索法 102
练习题 106
3.3递归法 106
练习题 110
3.4回溯法 112
练习题 113
3.5递推 115
练习题 120
3.6模拟搜索(最原始的方法) 121
练习题 138
3.7贪心算法 140
练习题 149
3.8深度优先搜索 150
练习题 158
3.9广度优先搜索 159
练习题 168
3.10双向广度优先搜索 170
练习题 175
3.11有趣的数学问题 176
练习题 189
3.12剪枝、优化 190
3.13动态规划 195
练习题 204
第4章 历届全国信息学奥林匹克联赛初赛试题及解答 209
4.1第十一届全国信息学奥林匹克联赛初赛试题及解答 209
4.2第十二届全国信息学奥林匹克联赛初赛试题及答案 216
4.3第十三届全国信息学奥林匹克联赛初赛试题及答案 223
第5章 历届全国信息学奥林匹克联赛复赛试题及算法分析和程序 232
5.1第十一届全国信息学奥林匹克联赛复赛试题及算法分析和程序 232
5.2第十二届全国信息学奥林匹克联赛复赛试题及算法分析和程序 245
5.3第十三届全国信息学奥林匹克联赛复赛试题及算法分析和程序 255