《C++基礎教程:從問題分析到程式設計》是2006年4月1日清華大學出版社出版的圖書,作者是曹蓉蓉。
基本介紹
- 中文名:C++基礎教程:從問題分析到程式設計
- 作者:曹蓉蓉
- 出版時間:2006年04月01日
- 出版社:清華大學出版社
- ISBN:9787302121688
- 定價:118 元
- 裝幀:平裝
內容簡介,圖書目錄,
內容簡介
本書通過以實踐為指導的獨特教育方法,簡潔地解釋了一些關鍵的概念。書中著重討論了一些核心主題,包括輸入/輸出、控制結構、數組和類,並結合大量的代碼示例和圖表詳盡而直觀地說明了一些較難理解的概念。本書在第一版的基礎上作了一些改進,新增了一些內容,如異常處理和標準模板庫等。
本書適用於所有對編程感興趣的讀者,既可作為高等院校計算機及相關專業的教材,也可供各類軟體開發人員參考。
圖書目錄
第1章計算機和程式語言概述 1
1.1簡介 1
1.2概述計算機的發展史 2
1.3計算機系統的描述 2
1.3.1硬體 2
1.3.2軟體 4
1.4計算機語言 4
1.5程式語言的發展史 5
1.6高級語言程式的執行 6
1.7問題分析-編碼-執行周期的編程 8
1.8編程方法 12
1.8.1結構化編程 12
1.8.2面向對象編程 12
1.9ANSI/ISO標準C++ 13
1.10快速回顧 14
1.11練習題 15
第2章C++的基本元素 17
2.1C++基礎知識 18
2.1.1特殊字元 19
2.1.2關鍵字 19
2.1.3標識符 19
2.2數據類型 20
2.2.1基本數據類型 21
2.2.2浮點數據類型 23
2.2.3string數據類型 24
2.3算術運算符和運算符的優先權 25
2.4表達式 28
2.4.1混合表達式 28
2.4.2類型轉換(強制轉換) 30
2.5輸入 31
2.5.1為常量和變數分配記憶體 31
2.5.2對變數賦值 33
2.6遞增運算符和遞減運算符 40
2.7輸出 42
2.8預處理指令 48
2.9創建C++程式 50
2.10編程風格和方式 53
2.10.1語法 53
2.10.2文檔 55
2.11更多的賦值語句 56
2.12編程示例:換算長度 57
2.12.1問題分析和算法設計 57
2.12.2變數 58
2.12.3指定常量 58
2.12.4主算法 58
2.12.5綜合 58
2.13編程示例:美分找零 60
2.13.1問題分析和算法設計 60
2.13.2變數 61
2.13.3指定常量 61
2.13.4主算法 62
2.14快速回顧 63
2.15練習題 65
2.16編程練習 71
第3章輸入/輸出 74
3.1I/O流和標準I/O設備 74
3.2在程式中使用預定義函式 79
3.2.1cin和ignore函式 81
3.2.2putback和peek函式 82
3.2.3注意I/Ostream變數和I/O函式
之間的點號 84
3.3輸入錯誤 84
3.4輸出和格式化輸出 87
3.4.1操作符setprecision 88
3.4.2操作符fixed 88
3.4.3操作符showpoint 88
3.4.4操作符setw 90
3.4.5操作符flush 92
3.5附加的輸出格式化工具 93
3.5.1操作符setfill 93
3.5.2操作符left和right 95
3.6輸入/輸出和string類型 96
3.7檔案輸入/輸出 97
3.8編程示例:售電影票和向慈善
機構捐贈 100
3.8.1問題分析和算法設計 101
3.8.2變數 101
3.8.3格式化輸出 102
3.8.4主算法 102
3.8.5完整的程式清單 103
3.9編程示例:學生分數 105
3.9.1問題分析和算法設計 105
3.9.2變數 105
3.9.3主算法 106
3.9.4完整的程式清單 106
3.10快速回顧 107
3.11練習題 109
3.12編程練習 111
第4章控制結構I 114
4.1控制結構 114
4.2關係運算符 115
4.3關係運算符和基本數據類型 116
4.4關係運算符和string類型 118
4.5邏輯(布爾)運算符和邏輯
表達式 119
4.6優先順序 120
4.6.1快速求值法 124
4.6.2int數據類型和邏輯(布爾)
表達式 124
4.6.3bool數據類型和邏輯(布爾)
表達式 125
4.7選擇結構:if和if...else語句 126
4.7.1單選 126
4.7.2雙選 128
4.7.3複合語句(塊) 131
4.7.4多選:嵌套if語句 131
4.7.5將if...else語句與if語句進行
比較 134
4.7.6使用偽代碼開發、測驗和調試
程式 135
4.7.7輸入失敗和if語句 137
4.7.8等於運算符(==)和賦值
運算符(=)之間的混淆 140
4.7.9條件運算符(?:) 141
4.8switch語句 141
4.9利用assert函式終止程式 147
4.10編程示例:有線電視公司的
收費單 148
4.10.1問題分析和算法設計 149
4.10.2變數 149
4.10.3指定的常量 150
4.10.4公式 150
4.10.5主算法 151
4.11快速回顧 153
4.12練習題 154
4.13編程練習 159
第5章控制結構II(循環) 161
5.1為什麼需要循環語句 161
5.2while循環結構 162
5.2.1案例1:使用控制計數器的
while循環 165
5.2.2案例2:使用標記控制的while
循環 167
5.2.3案例3:標誌控制的while
循環 171
5.2.4案例4:EOF控制的while
循環 171
5.3編程示例:檢查支票賬戶餘額 173
5.3.1問題分析和算法設計 173
5.3.2主算法 176
5.3.3完整的程式清單 177
5.4編程示例:斐波納契數列 180
5.4.1問題分析和算法設計 181
5.4.2主算法 181
5.4.3完整的程式清單 182
5.5for循環結構 184
5.6編程示例:分類數字 189
5.6.1問題分析和算法設計 189
5.6.2主算法 190
5.6.3完整的程式清單 190
5.7do...while循環結構 192
5.8break語句和continue語句 195
5.9嵌套控制結構 196
5.10快速回顧 203
5.11練習題 204
5.12編程練習 214
第6章用戶定義的函式I 216
6.1預定義函式 216
6.2用戶定義的函式 218
6.3返回值函式 219
6.3.1return語句 221
6.3.2函式原型 224
6.3.3程式的執行流程 229
6.4編程示例:最大數 229
6.4.1問題分析和算法設計 230
6.4.2完整的程式清單 230
6.5編程示例:有線電視公司 231
6.5.1問題分析和算法設計 231
6.5.2主算法(main函式): 233
6.5.3完整的程式清單 233
6.6快速回顧 236
6.7練習題 237
6.8編程練習 241
第7章用戶定義的函式II 243
7.1void函式 243
7.1.1不帶參數的void函式 243
7.1.2帶參數的void函式 246
7.2值參數 249
7.3將引用變數作為參數 251
7.4值參數和引用參數以及記憶體
分配 254
7.5引用參數和返回值函式 265
7.6標識符的作用域 265
7.7全局變數的副作用 268
7.8靜態變數和自動變數 269
7.9函式重載概述 270
7.10帶默認參數的函式 271
7.11編程示例:分類數字 273
7.11.1主算法 275
7.11.2完整的程式清單 275
7.12編程示例:數據比較 277
7.12.1問題分析和算法設計 278
7.12.2主算法:函式main 281
7.12.3完整的程式清單 282
7.12.4條形圖 285
7.12.5函式printBar 286
7.13快速回顧 287
7.14練習題 288
7.15編程練習 294
第8章用戶定義的簡單數據類型、
命名空間及字元串類型 297
8.1枚舉類型 297
8.1.1聲明變數 299
8.1.2賦值 299
8.1.3枚舉類型的操作 299
8.1.4關係運算符 300
8.1.5枚舉類型及循環 300
8.1.6枚舉類型的輸入和輸出 300
8.1.7函式和枚舉類型 302
8.1.8在定義枚舉類型時聲明變數 303
8.1.9匿名數據類型 303
8.1.10typedef語句 304
8.2編程示例:石頭、紙和剪刀的
遊戲 305
8.2.1問題分析和算法設計 305
8.2.2主算法 310
8.2.3完整的程式清單 310
8.3命名空間 314
8.4字元串類型 319
8.5編程示例:大拉丁字元串 328
8.5.1問題分析和算法設計 329
8.5.2主算法 331
8.5.3完整的程式清單 331
8.6快速回顧 333
8.7練習題 335
8.8編程練習 338
第9章數組以及字元串 340
9.1數組 341
9.1.1訪問數組元素 342
9.1.2一維數組的處理 344
9.1.3數組索引越界 348
9.1.4聲明時初始化數組 348
9.1.5處理數組時的一些限制 349
9.1.6將數組作為函式的參數 350
9.1.7整型數據類型以及數組索引 355
9.2C-string(字元數組) 356
9.2.1字元串比較 358
9.2.2字元串的讀寫 359
9.2.3字元串輸入 359
9.2.4字元串輸出 360
9.2.5在執行期間指定輸入/輸出
檔案 360
9.4平行數組 361
9.3二維數組和多維數組 362
9.4.1訪問數組元素 364
9.4.2聲明時初始化二維數組 365
9.4.3二維數組和枚舉類型 365
9.4.4二維數組的處理 367
9.4.5將二維數組作為參數傳遞給
函式 372
9.4.6字元串數組 374
9.4.7聲明二維數組的其他方法 376
9.5多維數組 377
9.6編程示例:代碼檢測 377
9.6.1問題分析和算法設計 378
9.6.2完整的程式清單 381
9.7編程示例:文本處理 383
9.7.1問題分析和算法設計 384
9.7.2完整的程式清單 386
9.8快速回顧 389
9.9練習題 390
9.10編程練習 395
第10章數組和vector類型的套用 400
10.1列表處理 400
10.1.1查找 400
10.1.2排序列表:冒泡法排序 404
10.1.3排序列表:選擇排序 407
10.1.4對有序列表進行順序查找 413
10.1.5二分查找法 415
10.2vector類型(類) 419
10.3編程示例:選舉結果 423
10.3.1問題分析和算法設計 424
10.3.2完整的程式清單 432
10.4快速回顧 437
10.5練習題 438
10.6編程練習 440
第11章記錄(結構體) 442
11.1記錄(結構體) 442
11.1.1訪問結構體成員 444
11.1.2賦值 445
11.1.3比較(關係運算符) 446
11.1.4輸入/輸出 447
11.1.5結構體變數和函式 447
11.1.6數組與結構體的比較 448
11.1.7結構體中的數組 448
11.1.8數組中的結構體 450
11.1.9結構體中的結構體 452
11.2編程示例:銷售數據分析 455
11.2.1問題分析和算法設計 456
11.2.2主算法 463
11.2.3完整的程式清單 464
11.3快速回顧 469
11.4練習題 470
11.5編程練習 472
第12章類和數據抽象 475
12.1類 475
12.1.1統一建模語言圖 478
12.1.2變數(對象)聲明 478
12.1.3訪問類成員 479
12.1.4對類執行的內置操作 480
12.1.5賦值運算符和類 480
12.1.6類的作用域 481
12.1.7函式和類 481
12.1.8成員函式的實現 482
12.1.9訪問函式和賦值函式 485
12.1.10類公有成員和私有成員的
次序 491
12.1.11構造函式 493
12.1.12調用構造函式 494
12.1.13類和構造函式 499
12.1.14類對象(變數)數組和構造
函式 500
12.1.15析構函式 501
12.2數據抽象化、類和抽象數據
類型 502
12.3結構體和類的比較 504
12.4信息隱藏 504
12.5可執行代碼 507
12.6類的靜態成員 510
12.7編程示例:糖果機 515
12.7.1問題分析和算法設計 515
12.7.2主程式 519
12.7.3完整的程式清單 522
12.8快速回顧 527
12.9練習題 529
12.10編程練習 533
第13章繼承和組合 536
13.1繼承 536
13.1.1重定義(重寫)基類的成員
函式 538
13.1.2派生類和基類的構造函式 544
13.1.3派生類的頭檔案 550
13.1.4頭檔案的多次包含 551
13.1.5C++流類 552
13.1.6類的保護成員 553
13.1.7public、protected或private
繼承 553
13.2組合 556
13.3面向對象設計(OOD)和面向
對象的程式設計(OOP) 560
13.4編程示例:成績單 562
13.4.1問題分析和算法設計 564
13.4.2主程式 573
13.4.3程式清單 575
13.5快速回顧 581
13.6練習題 581
13.7編程練習 587
第14章指針、類和虛函式 590
14.1指針數據類型和指針變數 590
14.2取地址運算符(&) 591
14.3復引用運算符(*) 592
14.4類、結構體和指針變數 597
14.5初始化指針變數 600
14.6動態變數 600
14.6.1運算符new 600
14.6.2運算符delete 601
14.7指針變數操作 603
14.8動態數組 605
14.8.1函式和指針 607
14.8.2指針和函式返回值 607
14.9表層與深層複製和指針 608
14.10類和指針的一些特性 610
14.10.1析構函式 610
14.10.2賦值運算符 611
14.10.3複製構造函式 612
14.11繼承、指針和虛函式 619
14.12取地址運算符和類 625
14.13快速回顧 627
14.14練習題 629
14.15編程練習 635
第15章重載和模板 636
15.1為什麼需要運算符重載 636
15.2運算符重載 637
15.2.1運算符函式的語法 637
15.2.2重載運算符的一些限制 638
15.2.3指針this 638
15.2.4類的友元函式 643
15.2.5作為成員函式和非成員函
數的運算符函式 645
15.2.6重載二元運算符 648
15.2.7重載流插入運算符(<<)和流
提取運算符(>>) 653
15.2.8重載賦值運算符(=) 657
15.2.9重載一元運算符 664
15.2.10重載自增(++)和自減(--)
運算符 664
15.2.11運算符重載:成員和
非成員 670
15.2.12類和指針數據成員(回顧) 670
15.2.13運算符重載:小結 671
15.3編程示例clockType 671
15.4編程示例:複數 677
15.5重載數組索引(下標)運算符([ ]) 682
15.6編程示例:newString 683
15.7函式重載 689
15.8模板 689
15.8.1函式模板 689
15.8.2類模板 691
15.9快速回顧 698
15.10練習題 700
15.11編程練習 704
第16章異常處理 710
16.1處理程式中的異常 710
16.1.1C++的異常處理機制 714
16.1.2try/catch塊 714
16.1.3在程式中使用try/catch塊 716
16.1.4使用C++異常類 720
16.2創建自己的異常類 723
16.3異常處理技巧 732
16.3.1終止程式 732
16.3.2修復錯誤並繼續執行 732
16.3.3記錄錯誤並繼續執行 734
16.4棧展開 734
16.5快速回顧 737
16.6練習題 738
16.7編程練習 740
第17章遞歸 741
17.1遞歸定義 741
17.1.1直接和間接遞歸 743
17.1.2無限遞歸 743
17.2使用遞歸解決問題 743
17.3遞歸或疊代各自的用途 752
17.4編程示例:將一個數從二進制
轉化為十進制 753
17.5編程示例:將一個數從十進制
轉化為二進制 756
17.6快速回顧 759
17.7練習題 759
17.8編程練習 762
第18章鍊表 765
18.1鍊表 765
18.1.1鍊表的屬性 766
18.1.2遍歷鍊表 768
18.1.3項插入和刪除 769
18.1.4構建鍊表 772
18.2作為ADT的鍊表 776
18.2.1列表的長度 781
18.2.2檢索第一個節點的數據 781
18.2.3檢索最後一個節點的數據 781
18.2.4查找列表 781
18.2.5插入第一個節點 782
18.2.6插入最後一個節點 783
18.2.7複製列表 787
18.2.8析構函式 789
18.2.9複製構造函式 789
18.2.10重載賦值運算符 789
18.3有序鍊表 790
18.4雙向鍊表 801
18.4.1默認的構造函式 803
18.4.2isEmptyList 804
18.4.3銷毀列表 804
18.4.4初始化列表 804
18.4.5列表的長度 804
18.4.6輸出列表 805
18.4.7反向輸出列表 805
18.4.8查找列表 805
18.4.9第一個和最後一個元素 806
18.5編程示例:錄像帶出租店 810
18.5.1錄像帶成員 811
18.5.2顧客成員 821
18.5.3主程式 823
18.5.4主程式清單 824
18.6快速回顧 828
18.7練習題 828
18.8編程練習 832
第19章棧和佇列 835
19.1棧 835
19.2將棧實現為數組 839
19.2.1複製棧 845
19.2.2構造函式和析構函式 846
19.2.3複製構造函式 846
19.2.4重載賦值運算符(=) 847
19.2.5棧的頭檔案 847
19.3編程示例:最高GPA 852
19.3.1程式分析和算法設計 852
19.3.2完整的程式清單 853
19.4棧的鏈實現 855
19.4.1返回棧頂元素 861
19.4.2複製棧 863
19.4.3從類linkedListType派生
的棧 867
19.5棧的套用:後綴表達式
計算器 868
19.5.1主算法 871
19.5.2完整的程式清單 873
19.6刪除遞歸:使用非遞歸算法
反向輸出鍊表 877
19.7佇列 882
19.7.1佇列操作 882
19.7.2將佇列實現為數組 883
19.7.3佇列的鏈實現 892
19.7.4從類linkedListType派生的
佇列 896
19.8佇列套用:模擬 899
19.8.1設計排隊系統 900
19.8.2顧客 901
19.8.3伺服器 903
19.8.4伺服器列表 906
19.8.5等待顧客佇列 909
19.8.6主程式 911
19.9快速回顧 917
19.10練習題 918
19.11編程練習 921
附錄A保留字 924
附錄B運算符優先權 925
附錄C字元集 926
C.1ASCII(美國標準信息交換碼) 926
C.2EBCDIC(擴展二進制編碼十進制互換代碼) 927
附錄D運算符重載 928
附錄E其他C++主題 929
E.1關於檔案輸入/輸出的更多
內容 929
E.1.1二進制檔案 929
E.1.2隨機檔案訪問 934
E.2ANSI/ISO標準C++
和標準C++中頭 941
附錄F頭檔案 943
F.1頭檔案cassert(assert.h) 943
F.2頭檔案cctype(ctype.h) 943
F.3頭檔案cfloat(float.h) 944
F.4頭檔案climits(limits.h) 946
F.5頭檔案cmath(math.h) 947
F.6頭檔案cstddef(stddef.h) 948
F.7頭檔案cstring(string.h) 948
F.8頭檔案string 948
附錄G系統上的記憶體大小和隨機數
生成器 951
附錄H標準模板庫(STL) 953
H.1STL的組成部分 953
H.2容器類型 953
H.2.1順序容器 953
H.2.2順序容器:向量 954
H.2.3所有容器中常見的成員函式 960
H.2.4順序容器中常見的成員函式 961
H.2.5複製算法 961
H.2.6順序容器:雙端佇列 965
H.2.7順序容器:列表 967
H.3疊代器 971
H.3.1IOStream疊代器 971
H.3.2容器適配器 972
H.4算法 975
H.4.1STL算法分類 975
H.4.2STL算法 976
H.4.3函式fill和fill_n 976
H.4.4函式find和find_if 978
H.4.5函式remove和replace 979
H.4.6函式search、sort和
binary_search 980
附錄I部分練習題的答案 983