图书目录

目录Contents

第1章熟悉编程环境1

1.1本章目标1

1.2运行第一个C/C++程序1

1.2.1准备工作1

1.2.2操作步骤1

1.3熟手进阶6

1.3.1创建空项目7

1.3.2向空项目添加已有文件9

1.3.3添加新文件10

1.3.4从项目中移除文件13

1.3.5使用Copilot14

1.4解决简单程序错误16

1.4.1程序错误的种类16

1.4.2缺少头文件16

1.4.3缺少分号19

1.5课堂练习21

1.6本章小结23

第2章顺序结构程序设计25

2.1本章目标25

2.2使用改写编程序25

2.2.1从求长方形面积到求周长25

2.2.2从求长方形面积到求圆面积27

2.2.3调换两位数的个位与十位27

2.3解决程序编译错误28

2.3.1scanf不安全28

2.3.2标识符未定义29

2.3.3左值问题29◆程序设计实践教程(C/C++版)——基于Visual Studio和GitHub Copilot目录2.3.4类型不能转换30

2.3.5“%”运算符的操作数问题30

2.4解决程序简单运行错误31

2.4.1逗号表达式的问题31

2.4.2除号运算符的问题32

2.5scanf和printf33

2.5.1printf函数的格式问题33

2.5.2scanf函数的格式问题34

2.5.3输入缓冲区35

2.5.4输入输出容易犯的错误37

2.5.5使用Copilot帮助输出44

2.6cin和cout47

2.6.1cin.get()函数47

2.6.2使用setprecision控制输出的有效数字50

2.6.3使用showpoint输出浮点数末尾的051

2.6.4使用setprecision与fixed保留n位小数51

2.6.5setprecision、fixed与showpoint结合52

2.6.6设置输出的宽度、填充及对齐方式53

2.6.7使用Copilot生成建议代码54

2.7使用Copilot帮助编程与探究57

2.7.1数据类型的选择57

2.7.2int类型的溢出问题58

2.7.3整数类型的整除问题58

2.7.4浮点数类型的精度问题59

2.7.5浮点数类型的误差问题59

2.7.6使用Copilot探究60

2.8课堂练习63

2.9本章小结64

第3章分支结构程序设计65

3.1本章目标65

3.2分支程序设计实验65

3.3程序测试67

3.3.1关系表达式测试: “==”与“!=”68

3.3.2关系表达式测试: “<”“<=”“>”与“>=”68

3.3.3逻辑表达式测试69

3.3.4switch的测试74

3.3.5测试实例76

3.4调试程序78

3.4.1调试程序的基本知识78

3.4.2跟踪程序执行流程81

3.4.3使用调试定位错误85

3.4.4调试实践89

3.4.5VS不能调试的解决办法95

3.5Copilot实践: 程序改错96

3.6Copilot实践:存款到期日期97

3.6.1需求描述97

3.6.2Copilot Chat交互98

3.7课堂练习101

3.8本章小结103

第4章循环结构程序设计104

4.1本章目标104

4.2循环的计算思维的建立104

4.2.1一重循环104

4.2.2从一重循环到二重循环108

4.3循环程序测试109

4.3.1循环控制结构测试109

4.3.2循环控制与条件分支结合的测试112

4.3.3两重循环的测试115

4.4调试程序: 监视变量的值116

4.4.1监视变量的值,定位错误行116

4.4.2利用调试解决疑难杂症120

4.5Copilot实践123

4.5.1九九乘法表 123

4.5.2判断素数 125

4.6课堂练习127

4.7本章小结129

第5章函数130

5.1本章目标130

5.2函数的使用130

5.2.1使用函数提高复用性130

5.2.2模块化编程133

5.2.3变量作用范围136

5.3调试程序137

5.3.1单步执行跟踪进入函数137

5.3.2调试排错139

5.4使用头文件145

5.4.1为什么要自己定义头文件145

5.4.2定义和使用头文件146

5.5使用Copilot帮助编写函数151

5.5.1定义函数151

5.5.2调用函数153

5.5.3典型程序的函数153

5.6Copilot模块化编程:日历154

5.6.1模块化编程概述154

5.6.2日历程序需求描述154

5.6.3Copilot Chat交互154

5.7课堂练习161

5.8本章小结161

第6章一维数组162

6.1本章目标162

6.2基本操作: 增删改查162

6.3增删改查的应用165

6.3.1访问元素165

6.3.2修改元素166

6.3.3删除元素166

6.3.4有序插入167

6.3.5循环数组169

6.4下标越界问题170

6.5程序测试172

6.5.1遍历的测试172

6.5.2删除的测试173

6.5.3插入的测试174

6.6调试程序174

6.7Copilot实践: 程序改错182

6.8课堂练习183

6.9本章小结183

第7章二维数组185

7.1本章目标185

7.2基本操作185

7.3调试程序187

7.4Copilot实践: 五子棋189

7.5课堂练习193

7.6本章小结193

第8章字符数组194

8.1本章目标194

8.2字符串的结尾‘\\0’194

8.3输入字符串195

8.3.1scanf函数195

8.3.2cin>>读取字符串196

8.3.3gets_s函数196

8.3.4fgets函数197

8.3.5字符串输入方式总结199

8.4调试程序199

8.5Copilot实践: 程序改错203

8.6Copilot实践: 键盘打字游戏206

8.6.1需求描述206

8.6.2Copilot Chat交互206

8.7课堂练习216

8.8本章小结216

第9章指针218

9.1本章目标218

9.2指针基础218

9.3深入理解数组的指针221

9.4动态内存分配224

9.4.1动态内存分配的应用224

9.4.2动态内存分配的注意事项226

9.5使用指针引起崩溃的情况227

9.6课堂练习229

9.7本章小结229

第10章结构体与类230

10.1本章目标230

10.2结构体编程230

10.2.1结构体作函数参数230

10.2.2在VS中使用结构体232

10.2.3结构体数组的多条件排序232

10.3类的编程236

10.3.1基本概念236

10.3.2为什么需要析构函数236

10.3.3为什么需要拷贝构造函数及重载赋值操作238

10.3.4小于号和函数调用符的重载241

10.4本章小结242

第11章递归243

11.1本章目标243

11.2递归的计算思维243

11.3理解递归执行流程245

11.3.1查看调用堆栈245

11.3.2Hanoi塔251

11.4调试程序258

11.5Copilot实践: 迷宫问题261

11.5.1问题介绍261

11.5.2Copilot Chat交互262

11.6课堂练习268

11.7本章小结269

第12章文件操作270

12.1本章目标270

12.2文件编程基础270

12.2.1文件的基础知识270

12.2.2文件操作的步骤270

12.2.3C语言文件操作270

12.2.4C++文件操作272

12.2.5文件读写位置指针274

12.2.6文件打开模式详解276

12.3文本文件的读写283

12.3.1写入文本文件283

12.3.2读文本文件285

12.4二进制文件的读写287

12.4.1写二进制文件287

12.4.2读二进制文件288

12.5程序改错290

12.5.1调试改错290

12.5.2Copilot改错294

12.6项目实践294

12.6.1文本文件读写: 字母频率294

12.6.2二进制文件读写: 学生成绩系统299

12.7课堂练习303

12.8本章小结303

第13章项目开发实践: RSA解密304

13.1本章目标304

13.2C语言实现304

13.2.1RSA介绍304

13.2.2项目需求304

13.2.3功能模块设计304

13.2.4功能模块实现305

13.2.5运行程序314

13.2.6bignum大数模块测试315

13.2.7素数和因数分解模块测试327

13.3改写为C++327

13.3.1需求描述327

13.3.2大数类328

13.3.3素数判断函数332

13.3.4因数分解函数333

13.3.5主函数333

13.3.6测试334

13.4本章小结334

附录AVisual Studio的安装335

A.1下载社区版335

A.2安装336

附录BCopilot的安装与使用339

B.1Copilot介绍339

B.2GitHub的注册及试用340

B.2.1注册340

B.2.2申请试用341

B.3GitHub学生认证342

B.3.1前期准备342

B.3.2申请学生认证347

B.3.3错误解决349

B.4为VS安装GitHub Copilot扩展350

B.4.1安装350

B.4.2添加GitHub 账户到VS352

B.5使用GitHub Copilot354

B.5.1输入注释生成建议354

B.5.2启用或禁用 GitHub Copilot356

B.6为VS安装GitHub Copilot Chat扩展356

B.7使用GitHub Copilot Chat357

B.7.1两种交互方式357

B.7.2向Copilot提问359

B.7.3引用代码并解释代码(/explain)360

B.7.4修改bug(/fix)362

B.7.5优化代码(/optimize)363

B.7.6其他功能364

B.7.7多轮交互调优回复364

B.8小结367

附录CCopilot的国产替代: CodeGeeX369

C.1CodeGeeX介绍369

C.2CodeGeeX插件的安装369

C.3CodeGeeX设置370

C.4代码生成与智能补全371

C.4.1单行代码生成与补全371

C.4.2多行代码生成371

C.4.3注释生成代码371

C.5智能问答372

C.5.1代码解释、注释及修复372

C.5.2问答交互372

C.6小结374

附录D实践平台: OJ系统375

D.1OJ系统介绍375

D.1.1OJ系统简介375

D.1.2教材配套OJ系统375

D.2OJ中的输入输出规定376

D.3OJ中多组数据的输入输出377

D.3.1输入378

D.3.2输出384

参考文献387