輕松學C++編程:案例教學

胡昭民

  • 出版商: 清華大學
  • 出版日期: 2023-10-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 374
  • 裝訂: 平裝
  • ISBN: 7302646503
  • ISBN-13: 9787302646501
  • 相關分類: C++ 程式語言
  • 立即出貨 (庫存 < 3)

  • 輕松學C++編程:案例教學-preview-1
  • 輕松學C++編程:案例教學-preview-2
  • 輕松學C++編程:案例教學-preview-3
輕松學C++編程:案例教學-preview-1

商品描述

《輕松學C++編程:案例教學》從初學者的角度循序漸進地從C++語言的基礎語法到高級語法進行講解。全書使用生動的實例和圖示,介紹C++面向對象程序設計的基礎知識;進而通過案例詳解類的高級應用、運算符重載、繼承與多態,全面呈現了面向對象程序設計的主要內容。在數據流和文件操作技巧與應用方面,本書還提供了實現相關算法的精選範例,以便讀者理解異常處理、C++模板的應用設計方式,並熟悉標準模板函數庫的應用。 《輕松學C++編程:案例教學》的各章節中貫穿了大量範例程序的講解和分析,並在每章末尾附帶了習題與解答。《輕松學C++編程:案例教學》敘述簡潔、清晰,具有較強的可操作性,適合作為相關專業的教材,也適合初學者自學。對於具有一定編程經驗且希望快速掌握C++語言的從業人員,本書也是一本快速掌握C++語言的讀物。

目錄大綱

目    錄

第 1 章  C++入門基礎課程 1

1.1  認識C++ 1

1.1.1  面向對象程序設計 2

1.1.2  算法 5

1.2  第一個C++程序 7

1.2.1  開始編寫程序 10

1.2.2  保存程序文件 11

1.2.3  編譯器 11

1.2.4  執行程序 12

1.2.5  程序錯誤 12

1.3  程序結構簡介 13

1.3.1  頭文件區 13

1.3.2  程序註釋 14

1.3.3  主程序區——main()函數 15

1.3.4  命名空間 15

1.3.5  輸入輸出功能簡介 16

1.3.6  程序語句編寫格式 17

1.3.7  標識符與保留字 17

1.4  上機編程實踐 19

本章習題 19

第 2 章  變量、常數與數據類型 21

2.1  變量簡介 22

2.2  常數 24

2.3  基本數據類型 25

2.3.1  整數 25

2.3.2  浮點數 27

2.3.3  字符 29

2.3.4  轉義字符 30

2.3.5  布爾數據類型 31

2.4  上機編程實踐 33

本章習題 34

第 3 章  表達式與運算符 35

3.1  表達式的表示法 35

3.2  認識運算符 36

3.2.1  運算符的優先級 36

3.2.2  賦值運算符 37

3.2.3  算術運算符 37

3.2.4  關系運算符 39

3.2.5  邏輯運算符 40

3.2.6  位運算符 41

3.2.7  遞增與遞減運算符 45

3.2.8  復合賦值運算符 47

3.3  數據類型轉換 47

3.3.1  自動類型轉換 48

3.3.2  強制類型轉換 49

3.3.3  強制類型轉換運算符簡介 50

3.4  上機編程實踐 51

本章習題 52

第 4 章  流程控制結構 55

4.1  順序結構 55

4.2  選擇結構 56

4.2.1  if條件語句 56

4.2.2  if-else條件語句 57

4.2.3  if-else if條件語句 58

4.2.4  條件運算符 60

4.2.5  switch條件語句 61

4.3  重復結構 63

4.3.1  for循環語句 64

4.3.2  while循環語句 66

4.3.3  do-while循環語句 68

4.4  循環控制語句 69

4.4.1  break語句 69

4.4.2  continue語句 70

4.4.3  goto語句 72

4.5  上機編程實踐 73

本章習題 75

第 5 章  數組與字符串 78

5.1  數組簡介 78

5.1.1  數組表示法 78

5.1.2  數組與變量 79

5.1.3  一維數組 79

5.1.4  二維數組 81

5.1.5  多維數組 83

5.2  字符串簡介 84

5.2.1  字符串聲明 84

5.2.2  字符串數組 87

5.3  String類 89

5.3.1  聲明String類 89

5.3.2  字符串運算符 91

5.3.3  String類的成員函數 92

5.4  上機編程實踐 94

本章習題 96

第 6 章  指針與地址 98

6.1  認識地址 98

6.1.1  指針的作用 99

6.1.2  變量地址的存取 99

6.1.3  指針變量的聲明 100

6.1.4  指針運算 103

6.1.5  多重指針 105

6.2  指針與數組 107

6.2.1  指針與一維數組 108

6.2.2  指針與多維數組 109

6.2.3  指針與字符串 111

6.2.4  指針數組 113

6.3  動態分配內存 116

6.3.1  動態分配內存和靜態分配內存 116

6.3.2  動態分配變量 117

6.3.3  動態分配數組 118

6.4  引用類型簡介 120

6.4.1  引用類型聲明 120

6.4.2  指針引用簡介 121

6.5  上機編程實踐 123

本章習題 124

第 7 章  函數入門 128

7.1  函數功能簡介 128

7.1.1  自定義函數 128

7.1.2  函數聲明 130

7.1.3  函數調用 132

7.2  認識參數傳遞 133

7.2.1  傳值調用 133

7.2.2  傳址調用 135

7.2.3  傳引用調用 136

7.2.4  參數默認值 137

7.2.5  數組參數 139

7.2.6  返回值 140

7.3  上機編程實踐 142

本章習題 143

第 8 章  函數的進階應用 145

8.1  函數指針簡介 145

8.1.1  聲明函數指針 145

8.1.2  參數型函數指針 147

8.1.3  函數指針數組 149

8.2  命令行參數 150

8.3  變量種類 152

8.3.1  全局變量 153

8.3.2  局部變量 153

8.3.3  區塊變量 153

8.4  變量的存儲類型 153

8.4.1  自動變量 153

8.4.2  靜態局部變量 154

8.4.3  外部變量 155

8.4.4  靜態外部變量 156

8.4.5  寄存器變量 158

8.5  特殊函數功能 158

8.5.1  遞歸函數 158

8.5.2  內聯函數 160

8.5.3  函數重載 161

8.6  上機編程實踐 163

本章習題 164

第 9 章  預處理指令與宏 166

9.1  預處理指令 166

9.2  #define語句 168

9.2.1  宏定義基本語句 168

9.2.2  宏定義函數 169

9.2.3  宏函數簡介 170

9.2.4  標準預處理宏 172

9.3  條件編譯語句 173

9.4  上機編程實踐 173

本章習題 174

第 10 章  自定義數據類型與應用 176

10.1  結構 176

10.1.1  結構聲明方式 176

10.1.2  結構的存取 177

10.1.3  結構指針 178

10.2  結構與數組 180

10.2.1  結構數組 180

10.2.2  結構數組的成員 182

10.2.3  結構指針數組 183

10.3  嵌套結構 185

10.4  函數與結構 187

10.4.1  結構傳值調用 187

10.4.2  結構傳址調用 189

10.4.3  結構傳引用調用 189

10.5  其他自定義數據類型 190

10.5.1  類型定義 190

10.5.2  枚舉類型 191

10.5.3  聯合類型 193

10.6  上機編程實踐 195

本章習題 197

第 11 章  認識面向對象程序設計 200

11.1  類的基本概念 200

11.1.1  類對象的聲明 201

11.1.2  訪問權限的關鍵字 202

11.1.3  聲明類對象 202

11.2  構造函數與析構函數 205

11.2.1  構造函數 205

11.2.2  構造函數的重載 208

11.2.3  析構函數 209

11.2.4  創建指針對象 211

11.3  上機編程實踐 213

本章習題 213

第 12 章  類的進階應用 215

12.1  對象數組和友元函數 215

12.1.1  對象數組 215

12.1.2  友元函數 217

12.1.3  友元類 220

12.2  this指針與靜態數據成員 222

12.2.1  this指針 222

12.2.2  靜態數據成員 224

12.2.3  嵌套類 225

12.3  在函數中傳遞對象參數 227

12.3.1  對象傳值調用 227

12.3.2  對象傳址調用 227

12.3.3  對象傳引用調用 228

12.4  上機編程實踐 228

本章習題 228

第 13 章  運算符重載 229

13.1  運算符重載簡介 229

13.1.1  重載的定義與規則 229

13.1.2  一元運算符重載 232

13.1.3  二元運算符重載 233

13.2  特殊運算符重載 235

13.2.1  “>>”與“<<”運算符重載 235

13.2.2  “=”運算符重載 237

13.2.3  “==”運算符重載 239

13.2.4  “++”與“--”運算符重載 241

13.3  類型轉換運算符重載 243

13.3.1  類類型轉換為基本數據類型 244

13.3.2  基本數據類型轉換為類類型 246

13.3.3  類類型轉換成其他類類型 248

13.4  上機編程實踐 250

本章習題 250

第 14 章  繼承與多態 252

14.1  認識繼承關系 252

14.1.1  基類與派生類 252

14.1.2  單繼承 253

14.1.3  public關鍵字 253

14.1.4  protected關鍵字 254

14.1.5  private關鍵字 257

14.1.6  多繼承 259

14.2  派生類的構造函數與析構函數 261

14.2.1  單繼承構造函數與析構函數的調用順序 262

14.2.2  多繼承構造函數與析構函數的調用順序 263

14.3  多態與虛函數簡介 265

14.3.1  靜態綁定與動態綁定 265

14.3.2  聲明虛函數 267

14.3.3  純虛函數 269

14.3.4  抽象基類 269

14.3.5  虛基類 270

14.4  上機編程實踐 272

本章習題 273

第 15 章  文件入門與處理機制 274

15.1  數據流的概念 274

15.2  文件簡介 275

15.2.1  文件分類 275

15.2.2  順序存取的文件和隨機存取的文件 276

15.3  文件的輸入/輸出管理 276

15.3.1  文件的打開 277

15.3.2  文件的關閉 277

15.4  文本文件操作技巧 279

15.4.1  文本文件的寫入 279

15.4.2  文本文件的讀取函數 280

15.5  二進制文件操作技巧 281

15.5.1  寫入二進制文件 282

15.5.2  讀取二進制文件 283

15.5.3  隨機存取文件方式 284

15.6  上機編程實踐 286

本章習題 287

第 16 章  異常處理與模板 288

16.1  異常處理的基本認識 288

16.1.1  簡單的異常處理結構 288

16.1.2  try語句 289

16.1.3  catch區塊重載 290

16.1.4  嵌套try…catch區塊 291

16.1.5  一次捕捉所有異常 293

16.1.6  重新拋出異常 294

16.2  認識模板功能 296

16.2.1  模板分類 296

16.2.2  函數模板 296

16.2.3  聲明函數模板 297

16.2.4  非類型參數的函數模板 299

16.3  類模板 300

16.3.1  聲明類模板 300

16.3.2  堆棧類模板 302

16.3.3  非類型參數的類模板 304

16.4  上機編程實踐 307

本章習題 307

第 17 章  大話標準模板函數庫 310

17.1  認識向量容器 310

17.2  堆棧的實現 312

17.3  隊列的實現 314

17.3.1  單向隊列 315

17.3.2  雙向隊列 316

17.4  認識集合 317

17.4.1  並集set_union 318

17.4.2  交集set_intersection 319

17.4.3  差集set_difference 320

17.5  映射 322

17.6  STL排序的實現 324

17.6.1  sort()函數——從小到大升序排序 324

17.6.2  sort()函數——從大到小降序排序 325

17.6.3  向量容器的從小到大升序排序 326

17.6.4  向量容器的從大到小降序排序 327

17.6.5  自定義結構的排序 328

17.7  使用標準模板函數庫實現查找 329

17.7.1  調用find()函數實現查找 329

17.7.2  調用find_if()函數進行查找 330

17.7.3  調用binary_search()函數進行二分查找 331

17.8  標準模板函數庫鏈表的實現 333

17.8.1  forward_list()——單向鏈表 333

17.8.2  單向鏈表的反轉 335

17.8.3  調用insert()函數將指定元素插入鏈表 336

17.8.4  兩個列表進行合並排序 338

17.8.5  列表內容交換——swap()函數 339

17.9  上機編程實踐 341

本章習題 343

第 18 章  解析樹結構及圖結構 344

18.1  樹結構 344

18.1.1  用數組來實現二叉樹 345

18.1.2  用鏈表來實現二叉樹 347

18.1.3  二叉樹節點的插入 349

18.1.4  二叉樹節點的刪除 350

18.1.5  二叉樹的遍歷 350

18.2  圖結構 353

18.2.1  圖的常用數據表示法 354

18.2.2  圖的遍歷——深度優先遍歷法 355

18.2.3  圖的遍歷——廣度優先遍歷法 358

18.2.4  Kruskal算法 361

18.2.5  Dijkstra算法 365

18.2.6  Floyd算法 369

本章習題 373

附錄A  課後習題參考答案(電子版見下載) 375

附錄B  C++的常用函數庫(電子版見下載) 426

B.1  字符處理函數 426

B.2  字符串處理函數 428

B.3  類型轉換函數 430

B.4  時間和日期函數 431

B.5  數學函數 432

B.6  隨機數函數 434

附錄C  格式化輸入/輸出數據(電子版見下載) 437

C.1  插入運算符“<<” 437

C.2  常用的輸出函數 444

C.3  提取運算符“>>” 445

C.4  常用的輸入函數 446

C.5  錯誤狀態位 447