本書采用C++語言來講解面向?qū)ο缶幊,在介紹C++語法的基礎(chǔ)上,還引入了數(shù)據(jù)結(jié)構(gòu)、設(shè)計模式等內(nèi)容。全書篇章結(jié)構(gòu)精良、組織有序、概念清晰,圍繞教學需求展開內(nèi)容,程序文檔形式一致,為學生日后在學術(shù)界和專業(yè)領(lǐng)域承擔程序設(shè)計方面的工作打好了基礎(chǔ)。
出版者的話
譯者序
前言
第1章 計算機與程序設(shè)計語言導(dǎo)論 1
1.1 計算機系統(tǒng) 1
1.1.1 計算機硬件 1
1.1.2 計算機軟件 4
1.2 計算機語言 4
1.2.1 機器語言 4
1.2.2 符號語言 5
1.2.3 高級語言 5
1.3 計算機語言范式 5
1.3.1 面向過程的程序設(shè)計語言范式 6
1.3.2 面向?qū)ο蟮某绦蛟O(shè)計語言范式 7
1.3.3 函數(shù)式程序設(shè)計語言范式 7
1.3.4 邏輯式程序設(shè)計語言范式 8
1.3.5 C++語言中包含的范式 8
1.4 程序設(shè)計 8
1.4.1 理解問題 9
1.4.2 開發(fā)解決方案 9
1.5 程序開發(fā) 11
1.5.1 編寫和編輯程序 11
1.5.2 編譯程序 12
1.5.3 鏈接程序 12
1.5.4 執(zhí)行程序 12
1.6 測試 12
1.6.1 設(shè)計測試數(shù)據(jù) 12
1.6.2 程序錯誤 13
本章小結(jié) 13
思考題 14
第2章 C++程序設(shè)計基礎(chǔ) 16
2.1 C++程序 16
2.1.1 第一個程序 16
2.1.2 第二個程序 20
2.2 變量、值和常量 22
2.2.1 變量 22
2.2.2 值 22
2.2.3 常量 26
2.3 C++程序的組成部分 26
2.3.1 標記符 27
2.3.2 注釋 29
2.4 數(shù)據(jù)類型 30
2.4.1 整數(shù)類型 30
2.4.2 字符類型 36
2.4.3 布爾類型 38
2.4.4 浮點類型 39
2.4.5 void類型 40
2.4.6 字符串類 41
本章小結(jié) 42
思考題 42
編程題 47
第3章 表達式和語句 48
3.1 表達式 48
3.1.1 基本表達式 49
3.1.2 一元表達式 51
3.1.3 乘法類表達式 52
3.1.4 加法類表達式 54
3.1.5 賦值表達式 55
3.1.6 左值和右值的概念 57
3.2 類型轉(zhuǎn)換 57
3.2.1 隱式類型轉(zhuǎn)換 58
3.2.2 顯式類型轉(zhuǎn)換(強制轉(zhuǎn)換) 61
3.3 表達式的求值順序 62
3.3.1 優(yōu)先級 62
3.3.2 結(jié)合性 65
3.4 上溢和下溢 66
3.4.1 整數(shù)的上溢和下溢 66
3.4.2 浮點數(shù)的上溢和下溢 68
3.5 格式化數(shù)據(jù) 69
3.5.1 用于輸出的操作符 69
3.5.2 用于輸入的操作符 74
3.6 語句 75
3.6.1 聲明語句 76
3.6.2 表達式語句 77
3.6.3 空語句 78
3.6.4 復(fù)合語句 78
3.6.5 返回語句 79
3.7 程序設(shè)計 80
3.7.1 提取浮點數(shù)的整數(shù)部分和小數(shù)部分 80
3.7.2 提取整數(shù)的個位數(shù) 82
3.7.3 把時間分解為時分秒 83
3.7.4 計算平均值和偏差 84
本章小結(jié) 86
思考題 86
編程題 90
第4章 選擇結(jié)構(gòu) 92
4.1 簡單選擇結(jié)構(gòu) 92
4.1.1 關(guān)系和等性表達式 92
4.1.2 單分支選擇結(jié)構(gòu):if語句 93
4.1.3 雙分支選擇結(jié)構(gòu):if-else語句 97
4.1.4 多分支選擇結(jié)構(gòu) 101
4.2 復(fù)雜條件決策 103
4.2.1 邏輯表達式 104
4.2.2 邏輯表達式的應(yīng)用 105
4.3 基于特定值的選擇結(jié)構(gòu) 111
4.3.1 switch語句 111
4.4 條件表達式 117
4.4.1 條件表達式的結(jié)構(gòu) 117
4.4.2 比較 118
4.5 程序設(shè)計 119
4.5.1 學生成績 119
4.5.2 計算給定收入的稅款 122
4.5.3 日期編號 124
本章小結(jié) 126
思考題 126
編程題 128
第5章 循環(huán)結(jié)構(gòu) 130
5.1 概述 130
5.1.1 前綴表達式和后綴表達式 130
5.1.2 循環(huán)語句 132
5.2 while語句 132
5.2.1 計數(shù)器控制while語句 133
5.2.2 事件控制while語句 138
5.2.3 while語句分析 144
5.3 for語句 144
5.3.1 循環(huán)頭 145
5.3.2 循環(huán)體 145
5.4 do-while語句 148
5.4.1 事件控制的循環(huán)結(jié)構(gòu) 149
5.4.2 do-while循環(huán)結(jié)構(gòu)的分析 151
5.5 有關(guān)循環(huán)結(jié)構(gòu)的詳細信息 152
5.5.1 三種循環(huán)結(jié)構(gòu)的比較 152
5.5.2 嵌套循環(huán) 152
5.6 其他相關(guān)語句 155
5.6.1 return語句 155
5.6.2 break語句 157
5.6.3 continue語句 157
5.6.4 goto語句 158
5.7 程序設(shè)計 158
5.7.1 累加和與累乘積 158
5.7.2 階乘 160
5.7.3 乘冪 162
5.7.4 最小值和最大值 164
5.7.5 any或者all查詢 166
本章小結(jié) 168
思考題 169
編程題 171
第6章 函數(shù) 173
6.1 概述 173
6.1.1 函數(shù)的優(yōu)點 174
6.1.2 函數(shù)的定義、聲明和調(diào)用 174
6.1.3 庫函數(shù)和用戶自定義函數(shù) 176
6.2 庫函數(shù) 177
6.2.1 數(shù)學函數(shù) 177
6.2.2 字符函數(shù) 181
6.2.3 處理時間 183
6.2.4 隨機數(shù)生成 184
6.3 用戶自定義函數(shù) 186
6.3.1 函數(shù)的四種類型 186
6.3.2 使用聲明 192
6.4 數(shù)據(jù)交換 194
6.4.1 傳遞數(shù)據(jù) 195
6.4.2 返回值 199
6.4.3 綜合示例 200
6.5 有關(guān)參數(shù)的進一步討論 203
6.5.1 默認參數(shù) 203
6.5.2 函數(shù)重載 204
6.6 作用域和生命周期 206
6.6.1 作用域 206
6.6.2 生命周期 211
6.7 程序設(shè)計 213
6.7.1 固定投資的未來價值 214
6.7.2 周期性投資的未來價值 217
本章小結(jié) 221
思考題 221
編程題 224
第7章 用戶自定義類型:類 227
7.1 概述 227
7.1.1 現(xiàn)實生活中的類型和實例 227
7.1.2 程序中的類和對象 228
7.1.3 比較 228
7.2 類 229
7.2.1 一個示例 229
7.2.2 類定義 231
7.2.3 成員函數(shù)定義 233
7.2.4 內(nèi)聯(lián)函數(shù) 234
7.2.5 應(yīng)用程序 235
7.2.6 結(jié)構(gòu) 235
7.3 構(gòu)造函數(shù)和析構(gòu)函數(shù) 236
7.3.1 構(gòu)造函數(shù) 236
7.3.2 析構(gòu)函數(shù) 238
7.3.3 創(chuàng)建和銷毀對象 239
7.3.4 必需的成員函數(shù) 239
7.4 實例成員 245
7.4.1 實例數(shù)據(jù)成員 245
7.4.2 實例成員函數(shù) 245
7.4.3 類不變式 249
7.5 靜態(tài)成員 252
7.5.1 靜態(tài)數(shù)據(jù)成員 252
7.5.2 靜態(tài)成員函數(shù) 253
7.6 面向?qū)ο蟮某绦蛟O(shè)計 259
7.6.1 獨立文件 259
7.6.2 獨立編譯 260
7.6.3 防止多重包含 265
7.6.4 封裝 265
7.7 設(shè)計類 266
7.7.1 表示分數(shù)的類 267
7.7.2 表示時間的類 272
本章小結(jié) 276
思考題 276
編程題 278
第8章 數(shù)組 281
8.1 一維數(shù)組 281
8.1.1 數(shù)組屬性 281
8.1.2 聲明、分配和初始化 282
8.1.3 訪問數(shù)組元素 284
8.2 有關(guān)數(shù)組的進一步討論 290
8.2.1 訪問操作 290
8.2.2 修改操作 293
8.2.3 使用帶數(shù)組的函數(shù) 295
8.2.4 并行數(shù)組 298
8.3 多維數(shù)組 302
8.3.1 二維數(shù)組 302
8.3.2 三維數(shù)組 306
8.4 程序設(shè)計 307
8.4.1 頻率數(shù)組和直方圖 307
8.4.2 線性轉(zhuǎn)換 309
本章小結(jié) 312
思考題 313
編程題 314
第9章 引用、指針和內(nèi)存管理 316
9.1 引用 316
9.1.1 概述 316
9.1.2 檢索值 318
9.1.3 修改值 319
9.1.4 引用的應(yīng)用 320
9.2 指針 325
9.2.1 地址 325
9.2.2 指針類型和指針變量 327
9.2.3 檢索值 329
9.2.4 使用const修飾符 329
9.2.5 指向指針的指針 331
9.2.6 兩種特殊的指針 331
9.2.7 指針的應(yīng)用 332
9.3 數(shù)組和指針 336
9.3.1 一維數(shù)組和指針 336
9.3.2 二維數(shù)組和指針 342
9.4 內(nèi)存管理 344
9.4.1 代碼內(nèi)存 344
9.4.2 靜態(tài)內(nèi)存 344
9.4.3 棧內(nèi)存 345
9.4.4 堆內(nèi)存 346
9.4.5 二維數(shù)組 349
9.5 程序設(shè)計 352
9.5.1 課程類 352
9.5.2 矩陣類 357
本章小結(jié) 362
思考題 362
編程題 366
第10章 字符串 368
10.1 C字符串 368
10.1.1 C字符串庫 369
10.1.2 C字符串的操作 369
10.2 C++字符串類 381
10.2.1 總體設(shè)計思路 382
10.2.2 C++字符串庫 383
10.2.3 C++字符串定義的操作 384
10.3 程序設(shè)計 402
10.3.1 四個自定義函數(shù) 402
10.3.2 數(shù)值進制編碼系統(tǒng)的轉(zhuǎn)換 404
本章小結(jié) 409
思考題 409
編程題 410
第11章 類之間的關(guān)系 412
11.1 繼承關(guān)系 412
11.1.1 總體思路 412
11.1.2 公共繼承 413
11.1.3 有關(guān)公共繼承的進一步討論 424
11.1.4 繼承的三種類型 430
11.2 關(guān)聯(lián)關(guān)系 431
11.2.1 聚合關(guān)系 432
11.2.2 組合關(guān)系 435
11.3 依賴關(guān)系 438
11.3.1 UML圖 439
11.3.2 一個綜合的示例 439
11.4 程序設(shè)計 443
11.4.1 詞法分析器類 443
11.4.2 注冊 446
本章小結(jié) 454
思考題 455
編程題 457
第12章 多態(tài)性和其他問題 460
12.1 多態(tài)性 460
12.1.1 多態(tài)性的條件 461
12.1.2 構(gòu)造函數(shù)和析構(gòu)函數(shù) 464
12.1.3 綁定 470
12.1.4 運行時類型信息 471
12.2 其他問題 472
12.2.1 抽象類 472
12.2.2 多重繼承 482
本章小結(jié) 494
思考題 494
編程題 495
第13章 運算符重載 497
13.1 對象的三種角色 497
13.1.1 宿主對象 497
13.1.2 參數(shù)對象 499
13.1.3 返回對象 500
13.2 重載原理 501
13.2.1 運算符的三種類別 502
13.2.2 重載的規(guī)則 503
13.2.3 運算符函數(shù) 504
13.3 重載為成員函數(shù) 504
13.3.1 一元運算符 504
13.3.2 二元運算符 507
13.3.3 其他運算符 511
13.4 重載為非成員函數(shù) 517
13.4.1 二元算術(shù)運算符 517
13.4.2 等性運算符和關(guān)系運算符 518
13.4.3 提取運算符和插入運算符 519
13.5 類型轉(zhuǎn)換 520
13.5.1 基本類型轉(zhuǎn)換為類類型 520
13.5.2 類類型轉(zhuǎn)換為基本類型 521
13.6 設(shè)計類 521
13.6.1 帶重載運算符的Fraction類 521
13.6.2 Date類 530
13.6.3 多項式 536
本章小結(jié) 543
思考題 543
編程題 544
第14章 異常處理 546
14.1 概述 546
14.1.1 錯誤處理的傳統(tǒng)方法 546
14.1.2 異常處理的方法 551
14.1.3 異常規(guī)范 558
14.1.4 棧展開 559
14.2 類中的異常 560
14.2.1 構(gòu)造函數(shù)中的異常 561
14.2.2 析構(gòu)函數(shù)中的異常 567
14.3 標準異常類 567
14.3.1 邏輯錯誤 568
14.3.2 運行時錯誤 569
14.3.3 其他五個類 570
14.3.4 使用標準異常類 571
本章小結(jié) 572
思考題 572
編程題 575
第15章 泛型編程:模板 576
15.1 函數(shù)模板 576
15.1.1 使用函數(shù)族 576
15.1.2 使用函數(shù)模板 577
15.1.3 其他函數(shù)模板版本 580
15.1.4 接口文件和應(yīng)用程序文件 583
15.2 類模板 584
15.2.1 接口和實現(xiàn) 584
15.2.2 編譯 587
15.2.3 其他問題 591
15.2.4 繼承 592
15.2.5 回顧 592
本章小結(jié) 593
思考題 593
編程題 594
第16章 輸入/輸出流 595
16.1 概述 595
16.1.1 流 596
16.1.2 數(shù)據(jù)表示 596
16.1.3 流類 598
16.2 控制臺流 599
16.2.1 控制臺對象 599
16.2.2 流狀態(tài) 600
16.2.3 輸入/輸出 602
16.3 文件流 606
16.3.1 文件輸入/輸出 606
16.3.2 文件打開模式 609
16.3.3 其他成員函數(shù) 614
16.3.4 順序訪問與隨機訪問 616
16.3.5 二進制輸入/輸出 619
16.4 字符串流 625
16.4.1 實例化 626
16.4.2 應(yīng)用:適配器 627
16.5 格式化數(shù)據(jù) 629
16.5.1 直接使用標志、字段和變量 629
16.5.2 預(yù)定義操作符 632
16.5.3 操作符定義 634
16.6 程序設(shè)計 638
16.6.1 合并兩個已排序文件 638
16.6.2 對稱密碼 640
本章小結(jié) 644
思考題 645
編程題 645
第17章 遞歸 647
17.1 概述 647
17.1.1 循環(huán)與遞歸 647
17.1.2 遞歸算法 649
17.1.3 尾部遞歸函數(shù)和非尾部遞歸函數(shù) 657
17.1.4 輔助函數(shù) 658
17.2 遞歸排序和查找 660
17.2.1 快速排序 660
17.2.2 二分查找法 664
17.2.3 漢諾塔 667
17.3 程序設(shè)計 670
17.3.1 字符串排列 670
17.3.2 素數(shù) 672
本章小結(jié) 675
思考題 675
編程題 677
在線章節(jié)
第18章數(shù)據(jù)結(jié)構(gòu)入門
第19章標準模板庫
第20章設(shè)計模式
附錄AUnicode
附錄B進制編碼系統(tǒng)
附錄CC++表達式和運算符
附錄D位運算
附錄E位域
附錄F預(yù)處理
附錄G名稱空間
附錄H比率
附錄I時間
附錄JLambda表達式
附錄K正則表達式
附錄L智能指針
附錄M隨機數(shù)生成
附錄N引用
附錄O移動與復(fù)制
附錄PC++11概述
附錄Q統(tǒng)一建模語言
附錄R位集