第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