第1 章 緒論 1
1.1 計算機硬件 1
1.2 計算機軟件 2
1.3 程序設計 3
1.3.1 算法設計 3
1.3.2 編碼 4
1.3.3 程序的編譯和調試 5
小結 6
習題 6
第2 章 通過例子學習 8
2.1 第一個程序:輸齣Hello world 8
2.1.1 注釋 8
2.1.2 預編譯 9
2.1.3 主程序 10
2.1.4 名字空間 11
2.2 第二個程序:計算圓的麵積和周長 11
2.3 數據類型 14
2.3.1 整型 14
2.3.2 實型 16
2.3.3 字符型 17
2.3.4 布爾型 21
2.3.5 枚舉類型 21
2.3.6 用typedef 重新命名類型名 23
2.3.7 變量賦初值 23
2.3.8 用sizeof 瞭解占用的內存量 24
2.4 符號常量 24
2.5 算術運算 25
2.5.1 主要的算術運算符 25
2.5.2 各種類型的數值間的混閤運算 25
2.5.3 整數除法和取模運算符 26
2.5.4 優先級與結閤性 26
2.5.5 數學函數庫 26
2.6 賦值運算 27
2.6.1 賦值運算符 27
2.6.2 賦值時的自動類型轉換 28
2.6.3 賦值的嵌套 28
2.6.4 多重賦值 28
2.6.5 復閤賦值運算 29
2.7 自增和自減運算符 30
2.8 強製類型轉換 31
2.9 數據的輸入/輸齣 32
2.9.1 數據的輸入 32
2.9.2 數據的輸齣 33
2.10 編程規範及常見錯誤 33
小結 34
習題 34
第3 章 邏輯思維——分支程序設計 38
3.1 關係運算 38
3.1.1 關係運算符 38
3.1.2 關係錶達式 39
3.2 邏輯運算 39
3.3 if 語句 42
3.3.1 if 語句的形式 42
3.3.2 if 語句的嵌套 43
3.3.3 if 語句的應用 43
3.3.4 條件錶達式 46
3.4 switch 語句及其應用 46
3.5 編程規範及常見錯誤 52
小結 52
習題 53
第4 章 重復控製——循環程序設計 55
4.1 for 循環 55
4.1.1 重復n 次操作 55
4.1.2 for 語句的進一步討論 58
4.1.3 for 循環的嵌套 58
4.2 while 循環 59
4.3 do-while 循環 62
4.4 循環的中途退齣 63
4.5 枚舉法 64
4.6 貪婪法 67
4.7 編程規範和常見錯誤 68
小結 69
習題 69
第5 章 批量數據處理——數組 73
5.1 一維數組 73
5.1.1 一維數組的定義 73
5.1.2 數組元素的引用 73
5.1.3 一維數組的初始化 74
5.1.4 一維數組在內存中的錶示 74
5.1.5 一維數組的應用 75
5.2 查找和排序 77
5.2.1 查找 77
5.2.2 排序 81
5.3 二維數組 84
5.3.1 二維數組的定義 84
5.3.2 二維數組的初始化 84
5.3.3 二維數組在內存中的錶示 85
5.3.4 二維數組的應用 85
5.4 字符串 88
5.4.1 字符串的存儲及初始化 88
5.4.2 字符串的輸入/輸齣 89
5.4.3 字符串處理函數 90
5.4.4 字符串的應用 90
5.5 編程規範及常見錯誤 91
小結 92
習題 92
第6 章 過程封裝——函數 95
6.1 函數的定義 96
6.1.1 return 語句 96
6.1.2 函數示例 96
6.2 函數的使用 98
6.2.1 函數原型的聲明 98
6.2.2 函數的調用 100
6.2.3 將函數與主程序放在一起 101
6.2.4 函數調用過程 102
6.3 數組作為函數的參數 104
6.4 帶默認值的函數 107
6.5 內聯函數 108
6.6 重載函數 109
6.7 函數模闆 111
6.8 變量的作用域 112
6.9 變量的存儲類彆 114
6.9.1 自動變量 114
6.9.2 靜態變量 114
6.9.3 寄存器變量 116
6.9.4 外部變量 116
6.10 遞歸函數 118
6.10.1 遞歸函數的基本概念 118
6.10.2 遞歸函數的應用 121
6.11 基於遞歸的算法 126
6.11.1 迴溯法 126
6.11.2 分治法 129
6.11.3 動態規劃 133
6.12 編程規範及常見錯誤 135
小結 136
習題 137
第7 章 間接訪問——指針 140
7.1 指針的概念 140
7.1.1 指針變量的定義 141
7.1.2 指針的基本操作 141
7.2 指針運算與數組 145
7.2.1 指針運算 146
7.2.2 用指針訪問數組 147
7.3 指針與動態內存分配 148
7.3.1 動態變量的創建 149
7.3.2 動態變量的迴收 150
7.3.3 內存泄漏 150
7.3.4 查找new 操作的失誤 150
7.4 字符串再討論 151
7.5 指針與函數 152
7.5.1 指針作為形式參數 152
7.5.2 數組名作為形式參數的再討論 155
7.5.3 字符串作為函數的參數 157
7.5.4 返迴指針的函數 157
7.5.5 引用與引用傳遞 158
7.5.6 返迴引用的函數 160
7.6 指針數組與多級指針 161
7.6.1 指針數組 161
7.6.2 main 函數的參數 162
7.6.3 多級指針 164
7.7 多維數組和指嚮數組的指針 165
7.8 指嚮函數的指針 167
7.8.1 作為函數的參數 168
7.8.2 用於菜單選擇 169
7.9 編程規範與常見錯誤 170
小結 171
習題 172
第8 章 數據封裝——結構體 174
8.1 記錄的概念 174
8.2 C++語言中記錄的使用 175
8.2.1 結構體類型的定義 175
8.2.2 結構體類型的變量的定義 176
8.2.3 結構體類型的變量的使用 177
8.2.4 結構體數組 178
8.3 結構體作為函數的參數 180
8.4 鏈錶 182
8.4.1 鏈錶的概念 182
8.4.2 單鏈錶的存儲 183
8.4.3 單鏈錶的操作 184
8.5 編程規範及常見錯誤 189
小結 189
習題 189
第9 章 模塊化開發 192
9.1 自頂嚮下分解 192
9.1.1 頂層分解 193
9.1.2 prn_instruction 函數的實現 193
9.1.3 play 函數的實現 194
9.1.4 get_call_from_user 函數的實現 195
9.2 模塊劃分 195
9.3 設計自己的庫 201
9.4 編程規範及常見錯誤 206
小結 207
習題 207
第10 章 創建工具——類的定義與使用 209
10.1 從過程化到麵嚮對象 209
10.1.1 抽象的過程 209
10.1.2 麵嚮對象程序設計的特點 210
10.1.3 庫和類 211
10.2 類的定義 217
10.3 對象的使用 221
10.3.1 對象的定義 221
10.3.2 對象的操作 222
10.3.3 this 指針 223
10.3.4 對象的構造與析構 224
10.4 常量對象與常量成員函數 233
10.5 常量數據成員 234
10.6 靜態數據成員與靜態成員函數 234
10.6.1 靜態數據成員的定義 235
10.6.2 靜態成員函數 235
10.6.3 靜態常量成員 238
10.7 友元 239
10.8 編程規範及常見錯誤 241
小結 241
習題 241
第11 章 運算符重載 245
11.1 什麼是運算符重載 245
11.2 運算符重載的方法 246
11.3 幾個特殊運算符的重載 249
11.3.1 賦值運算符的重載 249
11.3.2 下標運算符的重載 251
11.3.3 函數調用運算符重載 252
11.3.4 ++和--運算符的重載 253
11.3.5 輸入/輸齣運算符的重載 254
11.3.6 重載函數的原型設計考慮 256
11.4 自定義類型轉換函數 257
11.4.1 內置類型到類類型的轉換 258
11.4.2 類類型到其他類型的轉換 258
11.5 運算符重載的應用 259
11.5.1 完整的Rational 類的定義和使用 259
11.5.2 完整的DoubleArray類的定義和使用 262
11.6 編程規範與常見錯誤 265
小結 266
習題 266
第12 章 組閤與繼承 268
12.1 組閤 268
12.2 繼承 270
12.2.1 單繼承 271
12.2.2 基類成員在派生類中的訪問特性 272
12.2.3 派生類對象的構造、析構與賦值操作 274
12.2.4 重定義基類的函數 279
12.2.5 派生類作為基類 281
12.2.6 將派生類對象隱式轉換為基類對象 282
12.3 多態性與虛函數 284
12.3.1 多態性 284
12.3.2 虛函數 284
12.3.3 虛析構函數 288
12.4 純虛函數和抽象類 288
12.4.1 純虛函數 288
12.4.2 抽象類 288
12.5 多繼承 289
12.5.1 多繼承的格式 289
12.5.2 名字衝突 290
12.5.3 虛基類 291
12.6 麵嚮對象設計範例 291
12.7 編程規範和常見錯誤 298
小結 298
習題 298
第13 章 泛型機製——模闆 301
13.1 類模闆的定義 301
13.2 類模闆的實例化 303
13.3 模闆的編譯 304
13.4 非類型參數和參數的默認值 304
13.5 類模闆的友元 306
13.5.1 普通友元 306
13.5.2 模闆的特定實例的友元 306
13.6 類模闆作為基類 310
13.7 編程規範及常見錯誤 311
小結 311
習題 312
第14 章 輸入/輸齣與文件 313
14.1 流與標準庫 313
14.2 輸入/輸齣緩衝 314
14.3 基於控製颱的輸入/輸齣 315
14.3.1 輸齣流 315
14.3.2 輸入流 318
14.3.3 格式化的輸入/輸齣 321
14.4 基於文件的輸入/輸齣 324
14.4.1 文件的概念 324
14.4.2 文件和流 325
14.4.3 文件的順序訪問 328
14.4.4 文件的隨機處理 330
14.4.5 用流式文件處理含有記錄的文件 332
14.5 基於字符串的輸入/輸齣 337
14.6 編程規範及常見錯誤 338
小結 338
習題 338
第15 章 異常處理 341
15.1 傳統的異常處理方法 341
15.2 異常處理機製 341
15.2.1 異常拋齣 342
15.2.2 異常捕獲 343
15.3 異常規格說明 347
15.4 編程規範和常見錯誤 348
小結 349
習題 349
第16 章 容器和迭代器 351
16.1 容器 351
16.2 迭代器 351
16.3 容器和迭代器的設計示例 352
16.3.1 用數組實現的容器 352
16.3.2 用鏈錶實現的容器 355
小結 358
習題 358
附錄 ASCII 錶 359
參考文獻 360
· · · · · · (
收起)