目录
第1章计算机语言程序设计概述1
1.1程序设计语言发展1
1.1.1机器语言到高级语言1
1.1.2高级语言翻译成机器语言2
1.2C&C++语言概述3
1.2.1C&C++语言的发展3
1.2.2C&C++语言的特点3
1.3算法简介3
1.3.1算法的特点与描述3
1.3.2算法的评价5
1.3.3数据结构与算法“一题多解”6
1.4三大程序设计思想7
1.4.1面向过程程序设计7
1.4.2面向对象程序设计8
1.4.3函数式程序设计8
1.5认识C&C++源程序8
1.5.1程序示例8
1.5.2程序代码说明10
1.6C&C++开发环境13
1.6.1常用的编译器及IDE13
1.6.2AI助力编程14
1.7实用知识: 常见的编译和运行错误14
1.7.1常见的编译错误14
1.7.2常见的运行错误15
1.8练习与思考16
第2章顺序结构与数学表达式18
2.1顺序结构18〖3〗程序设计基础及应用(C&C++语言)第2版目录〖3〗2.2基本数据类型与变量19
2.2.1基本数据类型简介19
2.2.2变量与内存的关系19
2.2.3变量定义与初始化20
2.2.4赋值运算符与自增/自减运算符20
2.2.5陷阱: 变量定义与赋值的常见问题22
2.3常量24
2.3.1字面常量24
2.3.2符号常量25
2.3.3#define宏定义26
2.3.4sizeof运算符28
2.4数学运算符与表达式28
2.4.1算术运算符28
2.4.2算术表达式及优先级29
2.4.3复合赋值运算符29
2.4.4逗号运算符29
2.4.5陷阱: 算术运算的常见问题30
2.5位运算符和表达式31
2.5.1位运算符及功能31
2.5.2位运算的应用32
2.6类型转换33
2.6.1隐式类型转换33
2.6.2显式类型转换33
2.6.3C++的类型推导34
2.7输入与输出34
2.7.1C++的cin和cout35
2.7.2库函数scanf和printf38
2.7.3C++20的format格式化40
2.7.4一个字符的输入与输出41
2.8实用知识: 常用的数学库函数42
2.8.1欧氏距离计算两个坐标点距离42
2.8.2半正矢法计算两个经纬度点的距离43
2.9简单程序算法及应用44
2.9.1交换两个整数的值44
2.9.2字母加密45
2.10练习与思考46
第3章选择结构及相关表达式48
3.1选择结构48
3.2关系运算符和关系表达式49
3.2.1关系运算符49
3.2.2关系表达式及应用49
3.2.3陷阱: 关系表达式的常见问题50
3.3逻辑运算符和逻辑表达式50
3.3.1逻辑运算符50
3.3.2逻辑表达式及应用51
3.4if语句52
3.4.1标准if…else…语句52
3.4.2简单的if语句53
3.4.3复杂的if…else if…else语句53
3.4.4if语句的嵌套55
3.4.5条件运算符及条件表达式55
3.5switch语句56
3.5.1switch语句实现多分支结构56
3.5.2break语句的合理使用57
3.5.3if与switch的混用57
3.6实用知识: 通用工具函数58
3.6.1生成随机数函数58
3.6.2进程控制函数59
3.7选择结构算法及应用60
3.7.1判断整数m是否能被n整除60
3.7.2大写字母转换成小写字母60
3.7.3简单的四则运算器61
3.8练习与思考62
第4章自定义函数与封装66
4.1函数与结构化程序设计66
4.2自定义函数的声明与定义68
4.2.1函数的声明68
4.2.2函数的定义69
4.2.3函数返回值70
4.2.4陷阱: 函数定义的常见问题71
4.3函数的调用72
4.3.1函数调用的格式72
4.3.2陷阱: 函数调用的常见问题73
4.3.3函数的嵌套调用74
4.3.4调用内联函数76
4.4函数的参数传递76
4.4.1参数的值传递76
4.4.2C++的引用传递77
4.4.3const修饰引用形参79
4.5变量的作用域与生存期79
4.5.1局部变量的作用域与生存期79
4.5.2全局变量的作用域与生存期80
4.5.3静态变量的作用域与生存期81
4.6C++的函数重载与默认参数82
4.6.1C++的函数重载82
4.6.2C++的默认参数83
4.6.3陷阱: 函数重载的二义性84
4.7递归思想——递归函数85
4.7.1递归函数的定义85
4.7.2递归函数的调用过程86
4.7.3递归调用中的“栈”88
4.8实用知识: C++函数高级特性88
4.8.1返回类型推导89
4.8.2返回类型后置89
4.8.3匿名函数(Lambda)89
4.9自定义函数的应用90
4.9.1获得用户选择的购物菜单90
4.9.2递归求快速幂问题91
4.10练习与思考92
第5章迭代与循环结构95
5.1循环结构95
5.2循环控制语句96
5.2.1while语句96
5.2.2for语句98
5.2.3do…while语句100
5.2.4陷阱: 循环的常见问题101
5.3循环和迭代的提前结束102
5.3.1break语句102
5.3.2continue语句退出迭代104
5.4循环结构的嵌套105
5.4.1循环嵌套的语句105
5.4.2多种循环的优化107
5.5循环与递归108
5.6实用知识: 循环读入与出错处理110
5.6.1循环读入直到满足特定条件110
5.6.2控制多行输入直到EOF结束110
5.6.3忽略输入错误的输入控制111
5.7循环结构的算法及应用113
5.7.1数学表达式的求解113
5.7.2多种方法求一组数的平均值114
5.7.3循环执行用户选择菜单功能115
5.8练习与思考116
第6章数值型数组与数据处理119
6.1一维数组119
6.1.1一维数组的定义与存储119
6.1.2数组元素的使用121
6.1.3基于范围的for循环123
6.2一维数组与指针124
6.2.1指针与指针变量124
6.2.2函数参数的址传递126
6.2.3使用指针变量访问数组128
6.2.4陷阱: 数组越界问题129
6.3一维数组与函数129
6.3.1一维数组作为函数的形参129
6.3.2返回指针的函数133
6.4实用知识: 数据处理的实用算法133
6.4.1中值与方差(标准差)计算134
6.4.2返回数组的最大值/最小值及下标134
6.4.3顺序查找与折半查找136
6.4.4冒泡排序与选择排序137
6.4.5插入与删除139
6.5二维数组与多维数组141
6.5.1二维数组的定义与存储141
6.5.2二维数组元素的使用142
6.5.3二维数组与指针143
6.5.4二维数组与函数144
6.5.5多维数组145
6.6指针数组与二级指针145
6.6.1指针数组146
6.6.2二级指针147
6.7数据处理与工程应用147
6.7.1实现购物菜单的结账子功能147
6.7.2接收不定个数的整数148
6.7.3计算日平均温度与最大温差150
6.7.4动态规划算法应用实例151
6.8练习与思考152
第7章字符型数组与字符串处理155
7.1字符数组的定义与初始化155
7.1.1字符数组的定义155
7.1.2字符数组的初始化156
7.1.3字符数组元素的使用156
7.1.4陷阱: 字符串使用=和==的问题157
7.2字符数组的输入与输出157
7.2.1接收一个单词给字符数组157
7.2.2接收一行句子给字符数组158
7.2.3输出字符串159
7.2.4陷阱: 混合输入字符串和数字的问题160
7.3字符数组与函数160
7.3.1字符数组作为函数的形参160
7.3.2数组作为函数的返回值163
7.3.3字符串数组164
7.4字符串与数值型的转换函数165
7.4.1利用sprintf函数将数值转换为字符串165
7.4.2利用sscanf 函数将字符串转换为数值165
7.5实用知识: 字符串处理函数165
7.5.1常用函数166
7.5.2字符或子串查找与替换167
7.5.3字符串分割168
7.5.4内存处理函数168
7.6字符串处理综合应用169
7.6.1所有单词首字母大写169
7.6.2合并两个有序字符串170
7.6.3身份证号码是否合法170
7.7练习与思考171
第8章文件与数据处理173
8.1文件概述173
8.1.1文件存储类型173
8.1.2文件对象173
8.2C++文件打开与关闭174
8.2.1文件的打开174
8.2.2文件的关闭176
8.3C++的文件读写176
8.3.1fstream类的常用检查方法176
8.3.2文本文件的读写177
8.3.3二进制文件的读写180
8.3.4随机读写181
8.4C语言的文件操作183
8.4.1C语言的文件打开与关闭183
8.4.2C语言的文件读写184
8.5实用知识: 带参数的main函数186
8.6文件应用示例187
8.6.1密码文件的读写187
8.6.2学生成绩分段统计效果图188
8.6.3温度周报文件的读写190
8.7练习与思考190
第9章自定义数据类型192
9.1C++的类与对象192
9.1.1类的定义192
9.1.2创建和使用对象195
9.1.3构造函数和析构函数197
9.1.4对象数组199
9.1.5运算符重载200
9.2C++类的进一步定义202
9.2.1C++类的继承性202
9.2.2C++类的多态性206
9.2.3命名空间210
9.3typedef类型与using210
9.3.1typedef211
9.3.2using211
9.4结构体211
9.4.1结构体类型的定义211
9.4.2结构体类型变量212
9.4.3结构体类型的数组215
9.5联合体216
9.5.1联合体的定义与应用216
9.5.2位段的定义与应用217
9.6枚举类型218
9.6.1枚举类型的定义与使用218
9.6.2C++的枚举类220
9.7实用知识: C++的string类220
9.7.1string类对象的定义220
9.7.2string 类成员函数221
9.7.3string 类的运算符222
9.7.4string类对象的输入与输出222
9.7.5string与其他类型转换223
9.7.6C++正则表达式224
9.8自定义类型的综合应用226
9.8.1自定义日期类226
9.8.2自定义类型数据的文件读写 228
9.9练习与思考229
第10章指针进阶应用232
10.1void指针232
10.2函数指针与函数对象233
10.2.1函数指针233
10.2.2函数对象234
10.3动态内存分配与回收235
10.3.1栈内存与堆内存235
10.3.2在C++中动态分配内存236
10.3.3含有动态内存分配成员的类238
10.3.4malloc与free函数239
10.4C++的智能指针240
10.4.1unique_ptr240
10.4.2shared_ptr240
10.4.3weak_ptr241
10.5链式数据结构241
10.5.1单链表242
10.5.2单链表的访问243
10.5.3单链表结点的插入243
10.5.4单链表结点的删除245
10.6实用知识: 通用算法函数246
10.6.1改变序列的算法247
10.6.2不修改序列的算法247
10.6.3有序范围的操作249
10.6.4for_each函数249
10.7链表与算法的应用250
10.7.1链表的应用250
10.7.2算法的应用251
10.8练习与思考252
第11章泛型编程与C++标准模板库254
11.1模板与泛型编程机制254
11.1.1C++的函数模板254
11.1.2C++中的类模板255
11.1.3C++的可变参数模板256
11.1.4C11的泛型宏257
11.2C++模板类pair与tuple257
11.2.1pair257
11.2.2tuple258
11.2.3比较pair与tuple259
11.3C++ STL组件259
11.3.1容器类型259
11.3.2迭代器260
11.4C++顺序容器261
11.4.1array与vector261
11.4.2list与forward_list263
11.5C++关联容器264
11.5.1set与multiset集合265
11.5.2map与multimap映射265
11.6C++容器适配器266
11.6.1stack266
11.6.2queue与priority_queue266
11.7实用知识: C++数值计算268
11.7.1数值界限268
11.7.2泛型数值计算算法268
11.7.3线性代数运算269
11.8数据处理与统计分析270
11.8.1数据分类汇总及Top n排名270
11.8.2统计频次最高的前n个单词271
11.9练习与思考272
第12章软件工程项目开发应用技术274
12.1程序设计的多文件结构274
12.1.1多文件工程274
12.1.2条件编译指令276
12.2静态链接库276
12.2.1创建静态链接库277
12.2.2部署静态链接库278
12.3异常处理278
12.4GUI与可视化设计279
12.4.1GUI框架和工具279
12.4.2C++语言的GUI程序279
12.4.3EasyX绘图实例280
12.5练习与思考282
