齣版者的話
譯者序
前言
緻讀者
第一部分 編程基礎
第1章 計算機、程序和C++語言簡介 2
1.1 引言 2
1.2 什麼是計算機 3
1.2.1 CPU 4
1.2.2 位和字節 4
1.2.3 內存 5
1.2.4 存儲設備 5
1.2.5 輸入輸齣設備 6
1.2.6 通信設備 7
1.3 編程語言 8
1.3.1 機器語言 8
1.3.2 匯編語言 9
1.3.3 高級語言 9
1.4 操作係統 10
1.4.1 控製和監視係統活動 11
1.4.2 分配和指派係統資源 11
1.4.3 任務調度 11
1.5 C++語言的曆史 11
1.6 一個簡單的C++程序 12
1.7 C++程序開發周期 16
1.8 程序風格和文檔 18
1.8.1 適當的注釋和注釋風格 18
1.8.2 正確的縮進和間距 18
1.9 編程錯誤 19
1.9.1 語法錯誤 19
1.9.2 運行時錯誤 19
1.9.3 邏輯錯誤 20
1.9.4 常見錯誤 20
關鍵術語 22
本章小結 22
在綫測驗 23
程序設計練習 23
第2章 程序設計基礎 25
2.1 引言 25
2.2 編寫簡單的程序 25
2.3 從鍵盤讀取輸入 28
2.4 標識符 30
2.5 變量 30
2.6 賦值語句和賦值錶達式 32
2.7 命名常量 33
2.8 數值數據類型及其運算 34
2.8.1 數值類型 34
2.8.2 數值文字常量 37
2.8.3 數值運算符 37
2.8.4 指數運算符 38
2.9 算術錶達式和運算符優先級 39
2.10 實例研究:顯示當前時間 41
2.11 簡寫運算符 43
2.12 自增、自減運算符 43
2.13 數值類型轉換 45
2.14 軟件開發流程 47
2.15 實例研究:計算給定金額的貨幣數量 51
2.16 常見錯誤 53
關鍵術語 54
本章小結 55
在綫測驗 55
程序設計練習 55
第3章 分支語句 60
3.1 引言 60
3.2 bool數據類型 61
3.3 if語句 62
3.4 雙分支的if-else語句 64
3.5 嵌套的if語句和多分支的if-else語句 65
3.6 常見錯誤和陷阱 67
3.7 實例研究:計算身體質量指數 71
3.8 實例研究:計算稅款 73
3.9 生成隨機數 75
3.10 邏輯運算符 77
3.11 實例研究:確定閏年 81
3.12 實例研究:彩票 82
3.13 switch語句 83
3.14 條件錶達式 86
3.15 運算符優先級和結閤律 88
3.16 調試 89
關鍵術語 89
本章小結 90
在綫測驗 90
程序設計練習 90
第4章 數學函數、字符和字符串 99
4.1 引言 99
4.2 數學函數 100
4.2.1 三角函數 100
4.2.2 指數函數 100
4.2.3 近似函數 101
4.2.4 min、max和abs函數 101
4.2.5 實例研究:計算三角形的角 101
4.3 字符數據類型和操作符 103
4.3.1 ASCII碼 103
4.3.2 從鍵盤讀取一個字符 104
4.3.3 特殊字符的轉義序列 104
4.3.4 數值類型和字符類型之間的相互轉換 105
4.3.5 比較和測試字符 106
4.4 實例研究:生成隨機字符 107
4.5 實例研究:猜生日 109
4.6 字符函數 112
4.7 實例研究:十六進製轉換為十進製 113
4.8 字符串類型 114
4.8.1 字符串索引和下標操作符 115
4.8.2 連接字符串 116
4.8.3 比較字符串 116
4.8.4 讀字符串 116
4.9 實例研究:使用字符串修改彩票程序 118
4.10 格式化控製颱輸齣 119
4.10.1 setprecision(n)操作 120
4.10.2 修改操作 121
4.10.3 showpoint操作 121
4.10.4 setw(width)操作 122
4.10.5 left和right操作 122
4.11 簡單的文件輸入輸齣 123
4.11.1 寫入文件 124
4.11.2 讀取一個文件 125
關鍵術語 126
本章小結 126
在綫測驗 127
程序設計練習 127
第5章 循環 132
5.1 引言 132
5.2 while循環 133
5.2.1 實例研究:猜數字 135
5.2.2 循環設計策略 138
5.2.3 實例研究:多道減法測試 138
5.2.4 使用用戶的確認控製循環 140
5.2.5 使用標記值控製循環 140
5.2.6 輸入和輸齣重定嚮 141
5.2.7 從一個文件中讀取所有的數據 142
5.3 do-while循環 144
5.4 for循環 145
5.5 使用哪種循環 149
5.6 嵌套循環 150
5.7 最小化數字錯誤 152
5.8 實例研究 153
5.8.1 求最大公約數 153
5.8.2 預測未來的學費 155
5.8.3 濛特卡羅模擬 156
5.8.4 十進製轉換為十六進製 156
5.9 關鍵字break和continue 158
5.10 實例研究:檢查迴文 161
5.11 實例研究:輸齣素數 163
關鍵術語 165
本章小結 165
在綫測驗 166
程序設計練習 166
第6章 函數 176
6.1 引言 176
6.2 函數定義 177
6.3 函數調用 178
6.4 無返迴值函數 180
6.5 以傳值方式傳遞參數 183
6.6 模塊化代碼 184
6.7 函數的重載 186
6.8 函數原型 189
6.9 缺省參數 190
6.10 內聯函數 191
6.11 局部、全局和靜態局部變量 192
6.11.1 for循環中變量的作用域 194
6.11.2 靜態局部變量 194
6.12 以引用方式傳遞參數 197
6.13 常量引用參數 205
6.14 實例研究:十六進製轉換為十進製 205
6.15 函數抽象和逐步求精 207
6.15.1 自頂嚮下設計 208
6.15.2 自頂嚮下或自底嚮上實現 209
6.15.3 實現細節 210
6.15.4 逐步求精的好處 214
關鍵術語 214
本章小結 215
在綫測驗 215
程序設計練習 215
第7章 一維數組和C字符串 225
7.1 引言 225
7.2 數組基礎 226
7.2.1 聲明數組 226
7.2.2 訪問數組元素 227
7.2.3 數組初始化語句 228
7.2.4 處理數組 229
7.3 問題:彩票號碼 232
7.4 問題:一副紙牌 235
7.5 數組作為函數參數 237
7.6 防止函數修改傳遞參數的數組 238
7.7 數組作為函數值返迴 240
7.8 問題:計算每個字符的齣現次數 241
7.9 搜索數組 244
7.9.1 順序搜索方法 244
7.9.2 二分搜索方法 245
7.10 排序數組 247
7.11 C字符串 249
7.11.1 輸入和輸齣C字符串 249
7.11.2 C字符串函數 250
7.11.3 使用strcpy和strncpy函數復製字符串 251
7.11.4 使用strcat和strncat函數拼接字符串 251
7.11.5 使用strcmp函數比較字符串 252
7.11.6 字符串和數字之間的轉換 252
關鍵術語 253
本章小結 254
在綫測驗 254
程序設計練習 254
第8章 多維數組 263
8.1 引言 263
8.2 聲明二維數組 263
8.3 操作二維數組 264
8.4 二維數組作為函數參數 267
8.5 問題:評定多項選擇測試的成績 268
8.6 問題:找最近鄰點對 269
8.7 問題:數獨 271
8.8 多維數組 274
8.8.1 問題:每日溫度與濕度 275
8.8.2 問題:猜生日 277
本章小結 278
在綫測驗 278
程序設計練習 278
第二部分 麵嚮對象編程
第9章 對象和類 292
9.1 引言 292
9.2 聲明類 292
9.3 例:定義類和創建對象 294
9.4 構造函數 297
9.5 創建及使用對象 298
9.6 類定義和類實現的分離 301
9.7 避免多次包含 303
9.8 類中的內聯函數 305
9.9 數據域封裝 305
9.10 變量作用域 308
9.11 類抽象和封裝 310
關鍵術語 314
本章小結 314
在綫測驗 315
程序設計練習 315
第10章 麵嚮對象思想 318
10.1 引言 318
10.2 string類 318
10.2.1 構造一個字符串 319
10.2.2 追加字符串 319
10.2.3 字符串賦值 319
10.2.4 函數at、clear、erase及empty 320
10.2.5 函數length、size、capacity和c_str() 320
10.2.6 字符串比較 321
10.2.7 獲取子串 321
10.2.8 字符串搜索 322
10.2.9 字符串插入和替換 322
10.2.10 字符串運算符 323
10.2.11 把數字轉換為字符串 324
10.2.12 字符串分割 324
10.2.13 實例研究:字符串替換 324
10.3 對象作為函數參數 327
10.4 對象數組 329
10.5 實例成員和靜態成員 331
10.6 隻讀成員函數 335
10.7 從對象的角度思考 337
10.8 對象閤成 342
10.9 實例研究:StackOfIntegers類 344
10.10 類設計準則 346
10.10.1 內聚 346
10.10.2 一緻 346
10.10.3 封裝 347
10.10.4 清晰 347
10.10.5 完整 347
10.10.6 實例與靜態 347
關鍵術語 348
本章小結 348
在綫測驗 348
程序設計練習 348
第11章 指針及動態內存管理 353
11.1 引言 353
11.2 指針基礎 353
11.3 用typedef定義同義類型 359
11.4 常量指針 359
11.5 數組和指針 360
11.6 函數調用時傳遞指針參數 363
11.7 從函數中返迴指針 367
11.8 有用的數組函數 368
11.9 動態持久內存分配 369
11.10 創建及訪問動態對象 373
11.11 this指針 375
11.12 析構函數 376
11.13 實例研究:Course類 379
11.14 拷貝構造函數 382
11.15 自定義拷貝構造函數 384
關鍵術語 387
本章小結 387
在綫測驗 388
程序設計練習 388
第12章 模闆、嚮量和棧 393
12.1 引言 393
12.2 模闆基礎 393
12.3 例:一個通用排序函數 397
12.4 模闆類 399
12.5 改進Stack類 405
12.6 C++嚮量類 407
12.7 用vector類替換數組 410
12.8 實例研究:錶達式計算 413
關鍵術語 417
本章小結 417
在綫測驗 417
程序設計練習 418
第13章 文件輸入輸齣 424
13.1 引言 424
13.2 文本輸入輸齣 425
13.2.1 嚮文件中寫入數據 425
13.2.2 從文件中讀取數據 426
13.2.3 檢測文件是否存在 427
13.2.4 檢測文件結束 427
13.2.5 讓用戶輸入文件名 429
13.3 格式化輸齣 430
13.4 函數:getline、get和put 431
13.5 fstream和文件打開模式 434
13.6 檢測流狀態 435
13.7 二進製輸入輸齣 437
13.7.1 write函數 438
13.7.2 read函數 439
13.7.3 例:二進製數組I/O 440
13.7.4 例:二進製對象I/O 440
13.8 隨機訪問文件 444
13.9 更新文件 447
關鍵術語 448
本章小結 448
在綫測驗 448
程序設計練習 449
第14章 運算符重載 452
14.1 引言 452
14.2 Rational類 453
14.3 運算符函數 458
14.4 重載[]運算符 460
14.5 重載簡寫運算符 462
14.6 重載一元運算符 462
14.7 重載++和--運算符 463
14.8 友元函數和友元類 464
14.9 重載]運算符 466
14.10 自動類型轉換 468
14.10.1 轉換為基本數據類型 468
14.10.2 轉換為對象類型 469
14.11 定義重載運算符的非成員函數 469
14.12 帶有重載運算符函數的Rational類 470
14.13 重載賦值運算符 477
關鍵術語 481
本章小結 481
在綫測驗 481
程序設計練習 481
第15章 繼承和多態 484
15.1 引言 484
15.2 基類和派生類 484
15.3 泛型程序設計 492
15.4 構造函數和析構函數 493
15.4.1 調用基類構造函數 493
15.4.2 構造函數鏈和析構函數鏈 494
15.5 函數重定義 497
15.6 多態 499
15.7 虛函數和動態綁定 500
15.8 關鍵字protected 503
15.9 抽象類和純虛函數 504
15.10 類型轉換:static_cast 和 dynamic_cast 512
關鍵術語 515
本章小結 516
在綫測驗 516
程序設計練習 517
第16章 異常處理 518
16.1 引言 518
16.2 異常處理概述 518
16.3 異常處理機製的優點 522
16.4 異常類 523
16.5 自定義異常類 527
16.6 多重異常捕獲 531
16.7 異常的傳播 535
16.8 重拋齣異常 537
16.9 異常說明 538
16.10 何時使用異常機製 539
關鍵術語 540
本章小結 540
在綫測驗 540
程序設計練習 541
第三部分 算法和數據結構
第17章 遞歸 544
17.1 引言 544
17.2 例:階乘 545
17.3 實例研究:斐波那契數 548
17.4 用遞歸方法求解問題 550
17.5 遞歸輔助函數 552
17.5.1 選擇排序 553
17.5.2 二分搜索 555
17.6 漢諾塔 556
17.7 八皇後問題 559
17.8 遞歸與循環 561
17.9 尾遞歸 562
關鍵術語 563
本章小結 563
在綫測驗 563
程序設計練習 563
第18章 開發高效的算法
第19章 排序
第20章 鏈錶、隊列和優先隊列
第21章 二分搜索樹
第22章 STL容器
第23章 STL算法
第24章 圖及其應用
第25章 加權圖及其應用
第26章 平衡二叉樹和伸展樹
附錄
附錄A C++關鍵字 568
附錄B ASCII字符集 569
附錄C 運算符優先級錶 570
附錄D 數字係統 572
附錄E 位運算 575
· · · · · · (
收起)