目录
第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.2DevC++编程环境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.2ifelse分支结构59
3.1.3炮弹飞行时间的分析61
3.1.4计算合理范围炮弹坐标的程序实现62
3.2多分支结构63
3.2.1任务2: 成绩等级评判63
3.2.2ifelse ifelse多分支结构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循环与dowhile循环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
