第1章 语言解析 1
1.1 关于变量的存储类别 1
1.2 关于数值在内存中的表示 4
1.2.1 字符类型和整数类型 5
1.2.2 浮点数类型 9
1.3 容易用错的保留字 10
1.4 自增、自减运算符 15
1.5 关于指针 16
1.5.1 指针变量的概念 17
1.5.2 指针变量的引用 18
1.5.3 指针和数组 20
1.5.4 指针的算术运算和关系运算 23
1.5.5 指针数组和数组指针 26
1.5.6 数组的首地址和数组首元素的地址 27
1.6 关于存储模式 29
1.7 结构体和共用体 30
1.7.1 结构体 30
1.7.2 共用体 32
1.8 常见的内存错误 33
1.8.1 对未初始化的指针所指空间赋值 33
1.8.2 空间分配太小 34
1.8.3 数组使用超界 35
1.8.4 使用已释放的空间 36
1.8.5 内存泄漏 36
第2章 输入输出格式 37
2.1 A+B 问题 37
2.2 字母转换问题 41
第3章 简单数据处理问题 43
3.1 最大公约数 43
3.2 数根 45
3.3 鸡兔同笼 47
3.4 电梯 49
3.5 路边的树 51
3.6 大数的位数 52
3.7 会绕圈的数 54
3.8 尾数相等 56
3.9 竞赛排名 58
3.10 找数 60
第4章 递 推 64
4.1 兔子繁殖 65
4.2 捕鱼 66
4.3 卖西瓜 68
4.4 平面分隔 69
4.5 走台阶 71
4.6 棋盘完美覆盖 72
4.7 汉诺塔 74
4.8 数字序列 77
4.9 Fibonacci 数列 80
4.10 分数数列 82
4.11 过河卒 85
第5章 进制转换问题 89
5.1 进制转换 90
5.2 确定进制 92
5.3 负进制转换 94
第6章 字符串处理问题 97
6.1 字符类型函数和字符串操作函数 97
6.2 字符串操作时容易出现的问题 99
6.3 最长子串 100
6.4 字符串相等 103
6.5 统计字符数 105
6.6 密码 107
第7章 大数问题 111
7.1 大数加法 111
7.2 大数乘法 115
7.3 大数除法 118
7.4 高精度计算 121
第8章 枚 举 124
8.1 枚举法的基本程序框架 124
8.2 简化算法模型 125
8.3 优选枚举对象 127
8.4 精简循环次数 132
8.5 改变枚举方式 139
8.6 转换约束检查 142
第9章 模 拟 145
9.1 运算模拟 145
9.1.1 除法模拟 145
9.1.2 乘法模拟 149
9.2 过程模拟 154
9.2.1 操作步骤模拟 154
9.2.2 显示模拟 164
第10章 回溯与递归 169
10.1 回溯 169
10.1.1 回溯法描述及程序框架 169
10.1.2 找组合数 173
10.1.3 填数 175
10.1.4 串的划分 179
10.2 递 归 182
10.2.1 访问二叉树的根结点 183
10.2.2 串的进一步划分 184
10.2.3 分解质因数 187
10.2.4 求二叉树的后序序列 189
10.2.5 8皇后问题 192
10.2.6 素数环 194
10.2.7 旋转方阵 197
第11章 搜 索 200
11.1 石油探测 202
11.2 迷宫问题 205
11.3 马的走法 210
11.4 变换字符串 212
11.5 整倍数 219
附录 ACM国际大学生程序设计竞赛介绍 225
参考文献 227