图书目录

目录

第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