程序設計實踐教程(C/C++版)--基於Visual Studio和GitHub Copilot

黃秋波、盧婷、寧天哲

  • 程序設計實踐教程(C/C++版)--基於Visual Studio和GitHub Copilot-preview-1
  • 程序設計實踐教程(C/C++版)--基於Visual Studio和GitHub Copilot-preview-2
  • 程序設計實踐教程(C/C++版)--基於Visual Studio和GitHub Copilot-preview-3
程序設計實踐教程(C/C++版)--基於Visual Studio和GitHub Copilot-preview-1

相關主題

商品描述

"本書闡述了C/C++編程語言的核心概念和實踐操作,並引入對教師和學生免費的GitHub Copilot編程助手,降低學習難度,提高學習效率;依托配套的OJ系統和豐富的項目案例,培養計算思維與實踐能力;針對大模型的特點,強調問題分析與描述能力、與Copilot交互的能力、設計測試用例的能力、程序排錯的能力,期望讀者掌握AI時代的編程技能。 本書的內容分為四大部分: 第1部分(第1~4章)為基礎篇,介紹了編程環境和三大編程結構;第2部分(第5~10章)為進階篇,講解了函數、數組、指針、結構體與類;第3部分(第11~13章)為高級篇,深入理解遞歸、文件操作以及項目開發實踐;第4部分為附錄,介紹了Visual Studio的安裝、Copilot的安裝與使用、CodeGeeX的使用和OJ系統的使用。 本書可作為高等院校計算機相關專業C/C++的上機實踐教材,也可供打算學習C/C++軟件開發的科技工作者和研究人員參考。 "

目錄大綱

目錄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