图书目录

目录

第1章计算与人工智能概述1

1.1计算的概念1

1.1.1什么是计算1

1.1.2图灵机2

1.1.3什么是计算机4

1.1.4算法、计算机语言与程序7

1.2什么是计算思维11

1.2.1计算思维的概念12

1.2.2问题求解方法12

1.2.3算法——计算系统的灵魂16

1.3探索人工智能16

1.3.1人工智能概述16

1.3.2智能移动机器人路径规划18

1.3.3人工智能历史21

1.3.4人工智能应用领域24

小结27

习题27第2章简单问题求解29

2.1信息编码与计算29

2.1.1任务1: 计算炮弹坐标点29

2.1.2DevC++编程环境29

2.1.3数据类型与计算思维32

2.1.4炮弹坐标问题分析39

2.1.5计算炮弹坐标的程序实现40

2.2C语言的运算符41

2.2.1任务2: 闰年判断41

2.2.2运算符41

2.2.3闰年问题分析46

2.2.4闰年判断的程序实现46

2.3字符编码及其处理47

2.3.1任务3: 编制密码47

2.3.2字符输入与输出47

2.3.3字符移位方法分析49

2.3.4字符加密的程序实现51

2.4数学库及其应用52

2.4.1任务4: 计算复杂表达式52

2.4.2数学函数库52

2.4.3计算复杂表达式的程序实现56

小结56

习题57第3章分支结构59

3.1基本分支结构59

3.1.1任务1: 合理范围内计算炮弹坐标59

3.1.2ifelse分支结构59

3.1.3炮弹飞行时间的分析61

3.1.4计算合理范围炮弹坐标的程序实现62

3.2多分支结构63

3.2.1任务2: 成绩等级评判63

3.2.2ifelse ifelse多分支结构63

3.2.3成绩分级方法分析65

3.2.4成绩等级的程序实现66

3.3分支结构的嵌套66

3.3.1任务3: 景点门票计费66

3.3.2嵌套分支结构66

3.3.3门票计算方法分析69

3.3.4景点门票计费的程序实现70

3.4switch分支结构71

3.4.1任务4: 钢筋等级与用途71

3.4.2switch分支结构72

3.4.3钢筋等级问题分析73

3.4.4钢筋等级处理的程序实现74

3.5switch结构应用75

3.5.1任务5: 成绩等级评判(switch)75

3.5.2case穿透75

3.5.3成绩等级问题分析75

3.5.4成绩等级的程序实现(switch)76

小结76

习题77第4章循环结构80

4.1次数已知的循环80

4.1.1任务1: 迫击炮弹运动轨迹80

4.1.2for循环81

4.1.3炮弹轨迹问题分析82

4.1.4计算炮弹轨迹的程序实现83

4.2次数未知的循环84

4.2.1任务2: 莱布尼茨级数求圆周率84

4.2.2while循环与dowhile循环84

4.2.3圆周率问题分析86

4.2.4圆周率计算的程序实现87

4.3循环的控制87

4.3.1任务3: 素数判断87

4.3.2循环的控制88

4.3.3素数判断问题思路89

4.3.4素数判断的程序实现89

4.4循环的嵌套90

4.4.1任务4: 输出100以内的全部素数90

4.4.2循环的嵌套90

4.4.3100以内素数的查找方法91

4.4.4输出100以内素数的程序实现92

4.5循环综合应用93

4.5.1任务5: 打印等腰三角形93

4.5.2更简单的图形93

4.5.3等腰三角形问题分析94

4.5.4等腰三角形图形的程序实现95

小结96

习题97第5章函数99

5.1函数初探99

5.1.1任务1: 编写函数求炮弹坐标99

5.1.2函数的基本语法100

5.1.3用函数求炮弹坐标的方法104

5.1.4用函数求炮弹坐标的代码实现104

5.2变量的生命周期105

5.2.1任务2: 编写函数求套娃表面积105

5.2.2变量的作用域与存储类型105

5.2.3套娃表面积问题的求解方法108

5.2.4套娃表面积问题的代码实现109

5.3递归函数110

5.3.1任务3: 编写函数求特战比武方案110

5.3.2递归函数的原理110

5.3.3用递归函数求解特战比武问题112

5.3.4特战比武问题的代码实现112

5.4多参数递归函数113

5.4.1任务4: 兔子繁殖问题113

5.4.2递归调用的深入分析113

5.4.3兔子繁殖问题的求解方法114

5.4.4兔子繁殖问题的代码实现116

小结116

习题117第6章数组119

6.1一维数组的定义与使用119

6.1.1任务1: 存储炮弹的轨迹信息119

6.1.2数组的定义与使用120

6.1.3坐标存储问题的求解方法122

6.1.4坐标存储问题的代码实现122

6.2一维数组的遍历123

6.2.1任务2: 挑选队员123

6.2.2数组的遍历123

6.2.3挑选队员问题的求解方法124

6.2.4挑选队员问题的代码实现125

6.3数组的应用126

6.3.1任务3: 筛法求素数126

6.3.2数组的越界126

6.3.3筛法求素数的方法127

6.3.4筛法求素数的代码实现127

6.4数组的排序128

6.4.1任务4: 仪仗队身高排序128

6.4.2数组排序方法128

6.4.3仪仗队身高排序的方法131

6.4.4仪仗队身高排序的代码实现133

6.5二维数组134

6.5.1任务5: 杨辉三角的计算与输出134

6.5.2二维数组的定义与使用135

6.5.3生成杨辉三角的方法136

6.5.4杨辉三角的代码实现137

6.6字符数组138

6.6.1任务6: 论文数量排序138

6.6.2字符数组与字符串139

6.6.3论文数量排序的方法141

6.6.4论文数量排序的代码实现142

小结143

习题144第7章指针145

7.1指针基础145

7.1.1任务1: 函数的输出参数145

7.1.2指针的定义与使用145

7.1.3使用函数参数输出坐标值148

7.1.4一个函数输出炮弹坐标的代码实现148

7.2指针应用149

7.2.1任务2: 变量值的交换149

7.2.2指针变量的四要素149

7.2.3在函数中交换输入变量的值150

7.2.4变量值交换的代码实现151

7.3指针与数组152

7.3.1任务3: 一维数组元素互换152

7.3.2指针与一维数组152

7.3.3数组元素交换的实现思路154

7.3.4数组元素交换的代码实现155

7.4指针与字符串156

7.4.1任务4: 字符串的插入156

7.4.2字符串: 特殊的字符数组156

7.4.3字符串插入问题的实现思路159

7.4.4字符串插入问题的代码实现161

7.5指针与二维数组163

7.5.1任务5: 马鞍数163

7.5.2指针与二维数组163

7.5.3马鞍数的求解思路165

7.5.4马鞍数求解的实现代码166

7.6指针综合应用167

7.6.1任务6: 删除字符串中多余的空格167

7.6.2动态存储分配167

7.6.3删除字符串多余空格的求解思路168

7.6.4删除字符串多余空格的代码实现170

小结171

习题171第8章结构体和类173

8.1结构体基础173

8.1.1任务1: 用自定义类型描述炮弹坐标173

8.1.2结构体的定义与使用173

8.1.3用自定义类型返回炮弹坐标175

8.1.4自定义类型返回炮弹坐标的代码实现176

8.2结构体进阶177

8.2.1任务2: 将基本参数封装进结构体177

8.2.2结构体的嵌套与结构体指针177

8.2.3用结构体封装基本参数179

8.2.4用结构体封装基本参数的代码实现180

8.3结构体数组181

8.3.1任务3: 将炮弹轨迹存入结构体数组181

8.3.2结构体数组的定义与使用181

8.3.3用结构体数组存储炮弹坐标183

8.3.4用结构体数组存储炮弹坐标的代码实现184

8.4枚举与联合185

8.4.1任务4: 根据不同的要求计算轨迹185

8.4.2枚举与联合的定义与使用186

8.4.3用枚举与联合实现两种发射模式的思路188

8.4.4用枚举与联合实现两种发射模式的代码实现190

8.5C++类简介192

8.5.1任务5: 将轨迹计算功能设计为成员函数192

8.5.2C++类193

8.5.3用C++类计算炮弹轨迹的思路195

8.5.4用C++类计算炮弹轨迹的代码实现196

8.5.5C++模板类199

小结203

习题204第9章算法205

9.1穷举算法205

9.1.1任务1: 数字三角形问题的穷举算法205

9.1.2算法的基本概念206

9.1.3数字三角形问题的穷举法求解思路210

9.1.4数字三角形问题的穷举法代码实现212

9.2分治算法214

9.2.1任务2: 用基于递归的分治算法求解数字三角形问题214

9.2.2分治算法的原理214

9.2.3数字三角形问题的分治算法求解思路216

9.2.4数字三角形问题的分治算法代码实现220

9.3基于递归的动态规划221

9.3.1任务3: 用基于递归的动态规划求解数字三角形问题221

9.3.2动态规划基本原理221

9.3.3数字三角形问题的动态规划求解思路223

9.3.4数字三角形问题的动态规划代码实现224

9.4基于递推的动态规划225

9.4.1任务4: 用基于递推的动态规划求解数字三角形问题225

9.4.2动态规划进阶226

9.4.3数字三角形问题的递推求解思路227

9.4.4数字三角形问题的递推代码实现228

小结229

习题230第10章科学计算233

10.1二分算法233

10.1.1任务1: 二分算法求方程的根233

10.1.2线性搜索与二分搜索233

10.1.3搜索算法求方程根的设计思路237

10.1.4搜索算法求方程根的代码实现239

10.2牛顿迭代法240

10.2.1任务2: 牛顿迭代法求方程的根240

10.2.2牛顿迭代法基本原理240

10.2.3牛顿迭代法求方程根的设计思路242

10.2.4牛顿迭代法求方程根的代码实现242

10.3蒙特卡洛投点法244

10.3.1任务3: 蒙特卡洛投点法求定积分244

10.3.2蒙特卡洛投点法基本原理244

10.3.3蒙特卡洛投点法求定积分的设计思路246

10.3.4蒙特卡洛投点法求定积分的代码实现248

10.4梯度下降算法250

10.4.1任务4: 梯度下降算法求极小值250

10.4.2梯度下降算法基本原理250

10.4.3梯度下降算法求极小值的设计思路253

10.4.4梯度下降算法求极小值的代码实现254

小结255

习题256第11章机器学习258

11.1线性回归模型258

11.1.1任务1: 用线性回归模型预测学生成绩258

11.1.2线性回归模型基本原理258

11.1.3设计线性回归模型262

11.1.4线性回归模型进行学生成绩预测的代码实现263

11.2逻辑回归模型265

11.2.1任务2: 用逻辑回归模型预测企鹅类型265

11.2.2逻辑回归模型基本原理266

11.2.3设计逻辑回归模型268

11.2.4逻辑回归模型进行企鹅分类的代码实现269

11.3支持向量机(SVM)271

11.3.1任务3: 用OpenCV的SVM模型完成企鹅分类271

11.3.2SVM基本原理272

11.3.3使用OpenCV搭建SVM模型275

11.3.4OpenCV SVM模型完成企鹅分类的代码实现279

11.4神经网络模型282

11.4.1任务4: 用OpenCV的神经网络模型对企鹅分类282

11.4.2神经网络基本原理283

11.4.3使用OpenCV训练神经网络289

11.4.4OpenCV 神经网络模型完成企鹅分类的代码实现290

小结292

习题292第12章计算机视觉与大语言模型294

12.1图像分类294

12.1.1任务1: 图像分类294

12.1.2图像分类的基本原理294

12.1.3使用OpenCV进行图像分类299

12.1.4使用OpenCV进行图像分类的代码实现301

12.2目标检测303

12.2.1任务2: 识别图像中物品的类型和位置303

12.2.2目标检测简介304

12.2.3使用OpenCV进行目标检测307

12.2.4使用OpenCV进行目标检测的代码实现311

12.2.5对摄像头捕捉的动态图像进行目标识别313

12.3大语言模型317

12.3.1任务3:基于大语言模型的场景描述317

12.3.2大语言模型简介317

12.3.3大语言模型的程序调用接口319

12.3.4用大语言模型进行场景描述的代码实现323

小结325

习题326参考文献328