第 1章 二维及多维数组 001
1.1 数组概述 001
1.2 二维数组的定义和引用 002
1.3 案例1:输出杨辉三角形前n行 005
1.4 一维和二维字符数组 007
1.5 案例2:画布裁剪(GESP真题) 007
1.6 案例3:黑白方块(GESP真题) 009
1.7 矩阵中的特殊位置 011
1.8 矩阵的变换—转置 012
1.9 练习1:矩阵的转置 012
1.10 练习2:二阶矩阵(GESP真题) 013
1.11 拓展:三维及多维数组 015
1.12 基础知识练习(GESP真题) 016
第 2章 指针变量及应用 020
2.1 指针概述 020
2.2 指针变量的定义与引用 022
2.3 字符型指针变量 025
2.4 指针变量作函数参数 027
2.5 案例1:交换两个数(函数和指针参数实现) 030
2.6 案例2: Fibonacci数列(函数带回两个答案) 033
2.7 案例3:四则运算(函数和指针参数实现) 034
2.8 练习1: 4个数轮换 035
2.9 练习2:平方根、立方根、平方和立方 036
2.10 基础知识练习(GESP真题) 038
第3章 指针与数组的综合应用 043
3.1 一维数组与指针变量 043
3.2 用数组名作函数参数 046
3.3 案例1:构造回文 047
3.4 网格状地图及相邻位置的处理 049
3.5 案例2:荒地开垦(GESP真题) 050
3.6 案例3:排兵布阵(GESP真题) 052
3.7 练习1:查找数 055
3.8 前缀和数组 056
3.9 练习2:平衡子矩形(GESP真题) 058
3.10 二维数组与指针变量 060
3.11 指针高级内容 062
3.12 基础知识练习(GESP真题) 063
第4章 排序基本概念及sort函数的使用 068
4.1 排序基本概念 068
4.2 排序函数sort的使用 068
4.3 字典序 070
4.4 案例1:整数排序(中间大两头小) 070
4.5 案例2:重排数字使整数最大 071
4.6 案例3:做题(GESP真题) 072
4.7 练习1:宝箱(GESP真题) 073
4.8 练习2:字符排序(GESP真题) 075
4.9 基础知识练习(GESP真题) 076
第5章 结构体 078
5.1 结构体概述 078
5.2 结构体类型的声明 079
5.3 结构体变量、指针、数组的定义 079
5.4 结构体变量、数组的初始化 081
5.5 结构体变量及成员的引用 081
5.6 用typedef声明一种新类型名 082
5.7 案例1:按身高排序 083
5.8 案例2:数位排序 084
5.9 案例3:字符串排序(按得分高低排序) 086
5.10 练习1:按姓名排序 088
5.11 练习2:病人排队 089
5.12 结构体其他知识 091
5.13 基础知识练习(GESP真题) 093
第6章 函数进阶 097
6.1 引用及引用类型参数 097
6.2 值的传递和地址传递 099
6.3 函数的嵌套调用 099
6.4 函数重载及有默认值的参数 100
6.5 全局作用域和局部作用域 101
6.6 案例1:绝对素数(GESP真题) 102
6.7 案例2:图像压缩(GESP真题) 103
6.8 案例3:进制转换(GESP真题) 106
6.9 练习1:变长编码(GESP真题) 108
6.10 练习2:相似字符串(GESP真题) 110
6.11 函数的设计总结 112
6.12 基础知识练习(GESP真题) 112
第7章 递归函数 122
7.1 递归及递归函数 122
7.2 案例1:求阶乘(递归函数) 123
7.3 案例2:递归求Fibonacci数列第n项 125
7.4 将较大规模的问题降为较小规模的问题 126
7.5 案例3:三角形的个数(1) 126
7.6 练习1:三角形的个数(2) 128
7.7 练习2:幸运数(GESP真题) 130
7.8 递归函数设计总结 132
7.9 基础知识练习(GESP真题) 133
第8章 递推算法基础 134
8.1 递推概述 134
8.2 递推的四大要素 134
8.3 案例1:拼积木问题 135
8.4 案例2:放圆珠问题 136
8.5 二维递推 137
8.6 案例3:网格路径 138
8.7 练习1:新的兔子数列 140
8.8 练习2:过山车数 141
8.9 基础知识练习(GESP真题) 143
第9章 递推算法进阶 148
9.1 部分位置受限的递推问题 148
9.2 案例1:走台阶问题(部分台阶是坏的) 148
9.3 案例2:马拦过河卒 150
9.4 递推和其他算法的结合 152
9.5 案例3:猴子分桃子 153
9.6 练习1:Recamán(GESP真题) 155
9.7 练习2:踩方格 157
9.8 基础知识练习(GESP真题) 159
第 10章 递推与递归的综合应用 160
10.1 递推和递归总结 160
10.2 案例1:f(n)=Σf( j ), j为n的因数且j 10.3 案例2:矩阵变幻 162 10.4 递归存在的问题及解决方法 165 10.5 案例3:数的计算 167 10.6 练习1:汉诺塔游戏 168 10.7 练习2:填幻方(GESP真题) 171 10.8 基础知识练习(GESP真题) 172 第 11章 简单的排序算法 173 11.1 来自生活中的算法思想 173 11.2 排序算法性能及评价 174 11.3 案例1:插入法排序 175 11.4 案例2:冒泡法排序 176 11.5 案例3:简单选择法排序 178 11.6 练习1:区间排序(GESP真题) 180 11.7 练习2:最少交换次数(GESP真题) 182 11.8 基础知识练习(GESP真题) 184 第 12章 排序综合应用 192 12.1 排序的应用 192 12.2 案例1:田忌赛马(GESP真题) 192 12.3 案例2:最长连续段(GESP真题) 194 12.4 案例3:修建新的库房 196 12.5 练习1:人以群分 198 12.6 练习2:排队取水 199 12.7 基础知识练习(GESP真题) 201 第 13章 算法及算法复杂度 204 13.1 算法的基本概念 204 13.2 评价算法优劣的标准 204 13.3 案例1:勾股数组合(a, b, b+1) 205 13.4 案例2:买地攻略 208 13.5 案例3:还剩多少人 211 13.6 算法效率的度量 212 13.7 算法时间复杂度的渐进分析和表示 213 13.8 最好、最坏和平均情况 214 13.9 基本的算法复杂度模型 215 13.10 基础知识练习(GESP真题) 217 第 14章 文件输入/输出 219 14.1 文件输入/输出概述 219 14.2 ASCII文件和二进制文件 220 14.3 文件名和文件路径 221 14.4 C语言中的文件输入/输出 222 14.5 C++语言中的文件输入/输出 226 14.6 基础知识练习(GESP真题) 231 第 15章 异常处理机制 234 15.1 异常处理引入 234 15.2 C++语言中的异常处理机制 235 15.3 基础知识练习(GESP真题) 238 附录A 本书配套资源使用指南 242 附录B 基础知识练习答案 243 参考文献 248