《計算機(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》采用“問題驅(qū)動”、“基礎(chǔ)先行”和“實例和實踐相結(jié)合”的方式,闡明了基本的C++特性!队嬎銠C(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》共分為三部分,第一部分介紹C++程序設(shè)計的基本概念,第二部分介紹面向?qū)ο蟪绦蛟O(shè)計方法,第三部分介紹算法與數(shù)據(jù)結(jié)構(gòu)方面的內(nèi)容。為了幫助學(xué)生更好地掌握相關(guān)知識,《計算機(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》每章都包括以下模塊:目標(biāo),引言,關(guān)鍵點,檢查點,問題和實例研究,本章小結(jié),在線測驗,程序設(shè)計練習(xí),提示、小竅門、警示和教學(xué)提示。
《計算機(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》可以作為高等院校計算機(jī)及相關(guān)專業(yè)C++程序設(shè)計課程的教材,也可以作為C++程序設(shè)計的自學(xué)參考書。
《計算機(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》保持了Liang博士系列叢書中一貫的標(biāo)志性的教與學(xué)的哲學(xué):以實例教,由實踐學(xué)。通過使用他所提出的已經(jīng)經(jīng)過實踐檢驗的“基礎(chǔ)先行”的方法,Liang博士在本書中通過大量實例闡明了基本的C++特性,使得學(xué)生可以通過實踐來更有效地進(jìn)行學(xué)習(xí)。
《計算機(jī)科學(xué)叢書:C++程序設(shè)計(原書第3版)》首先幫助學(xué)生循序漸進(jìn)地學(xué)習(xí)所有必需和重要的基本概念,然后再進(jìn)入面向?qū)ο蟪绦蛟O(shè)計方法的學(xué)習(xí),最終掌握構(gòu)建具有異常處理和輸入輸出功能的有意義的應(yīng)用程序的方法;靖拍疃际鞘褂煤喍糖椅说膶嵗齺磉M(jìn)行闡述的。他還在實例研究中給出了一些較大規(guī)模的實例,并附以整體的分析討論和詳細(xì)的逐行注解。貫穿全書的實例和練習(xí)都以問題求解為中心,力圖培養(yǎng)學(xué)生開發(fā)可重用組件并用之創(chuàng)建實際項目的意識。
與第2版相比,第3版在文字表達(dá)、內(nèi)容組織、課后練習(xí)和附加材料方面都得到了顯著改善。
第3版有以下創(chuàng)新特色:
按照邏輯順序,重新組織了各章的內(nèi)容和主題,增加了許多有趣的實例,以及引人入勝的課后練習(xí)。
在每一節(jié)的開始,以“關(guān)鍵點”的形式說明重要的概念和內(nèi)容;在每一節(jié)的結(jié)束,以“檢查點”的形式檢查學(xué)生對于內(nèi)容的掌握程度。
第4章就介紹了string類型,以便學(xué)生能夠盡早使用該類型編寫程序。
列出常見的編程錯誤和陷阱,讓學(xué)生避免犯這些錯誤。
Y. Daniel Liang,普度大學(xué)終身教授,阿姆斯特朗亞特蘭大州立大學(xué)計算機(jī)科學(xué)系教授。他所編寫的Java教程在美國大學(xué)Java課程中采用率最高,同時他還兼任Prentice Hall Java系列叢書的編輯。
出版者的話
譯者序
前言
致讀者
第一部分 編程基礎(chǔ)
第1章 計算機(jī)、程序和C++語言簡介
1.1 引言
1.2 什么是計算機(jī)
1.2.1 CPU
1.2.2 位和字節(jié)
1.2.3 內(nèi)存
1.2.4 存儲設(shè)備
1.2.5 輸入輸出設(shè)備
1.2.6 通信設(shè)備
1.3 編程語言
1.3.1 機(jī)器語言
1.3.2 匯編語言
1.3.3 高級語言
1.4 操作系統(tǒng)
1.4.1 控制和監(jiān)視系統(tǒng)活動
1.4.2 分配和指派系統(tǒng)資源
1.4.3 任務(wù)調(diào)度
1.5 C++語言的歷史
1.6 一個簡單的C++程序
1.7 C++程序開發(fā)周期
1.8 程序風(fēng)格和文檔
1.8.1 適當(dāng)?shù)淖⑨尯妥⑨岋L(fēng)格
1.8.2 正確的縮進(jìn)和間距
1.9 編程錯誤
1.9.1 語法錯誤
1.9.2 運行時錯誤
1.9.3 邏輯錯誤
1.9.4 常見錯誤
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第2章 程序設(shè)計基礎(chǔ)
2.1 引言
2.2 編寫簡單的程序
2.3 從鍵盤讀取輸入
2.4 標(biāo)識符
2.5 變量
2.6 賦值語句和賦值表達(dá)式
2.7 命名常量
2.8 數(shù)值數(shù)據(jù)類型及其運算
2.8.1 數(shù)值類型
2.8.2 數(shù)值文字常量
2.8.3 數(shù)值運算符
2.8.4 指數(shù)運算符
2.9 算術(shù)表達(dá)式和運算符優(yōu)先級
2.10 實例研究:顯示當(dāng)前時間
2.11 簡寫運算符
2.12 自增、自減運算符
2.13 數(shù)值類型轉(zhuǎn)換
2.14 軟件開發(fā)流程
2.15 實例研究:計算給定金額的貨幣數(shù)量
2.16 常見錯誤
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第3章 分支語句
3.1 引言
3.2 bool數(shù)據(jù)類型
3.3 if語句
3.4 雙分支的if-else語句
3.5 嵌套的if語句和多分支的if-else語句
3.6 常見錯誤和陷阱
3.7 實例研究:計算身體質(zhì)量指數(shù)
3.8 實例研究:計算稅款
3.9 生成隨機(jī)數(shù)
3.10 邏輯運算符
3.11 實例研究:確定閏年
3.12 實例研究:彩票
3.13 switch語句
3.14 條件表達(dá)式
3.15 運算符優(yōu)先級和結(jié)合律
3.16 調(diào)試
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第4章 數(shù)學(xué)函數(shù)、字符和字符串
4.1 引言
4.2 數(shù)學(xué)函數(shù)
4.2.1 三角函數(shù)
4.2.2 指數(shù)函數(shù)
4.2.3 近似函數(shù)
4.2.4 min、max和abs函數(shù)
4.2.5 實例研究:計算三角形的角
4.3 字符數(shù)據(jù)類型和操作符
4.3.1 ASCII碼
4.3.2 從鍵盤讀取一個字符
4.3.3 特殊字符的轉(zhuǎn)義序列
4.3.4 數(shù)值類型和字符類型之間的相互轉(zhuǎn)換
4.3.5 比較和測試字符
4.4 實例研究:生成隨機(jī)字符
4.5 實例研究:猜生日
4.6 字符函數(shù)
4.7 實例研究:十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
4.8 字符串類型
4.8.1 字符串索引和下標(biāo)操作符
4.8.2 連接字符串
4.8.3 比較字符串
4.8.4 讀字符串
4.9 實例研究:使用字符串修改彩票程序
4.10 格式化控制臺輸出
4.10.1 setprecision(n)操作
4.10.2 修改操作
4.10.3 showpoint操作
4.10.4 setw(width)操作
4.10.5 left和right操作
4.11 簡單的文件輸入輸出
4.11.1 寫入文件
4.11.2 讀取一個文件
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第5章 循環(huán)
5.1 引言
5.2 while循環(huán)
5.2.1 實例研究:猜數(shù)字
5.2.2 循環(huán)設(shè)計策略
5.2.3 實例研究:多道減法測試
5.2.4 使用用戶的確認(rèn)控制循環(huán)
5.2.5 使用標(biāo)記值控制循環(huán)
5.2.6 輸入和輸出重定向
5.2.7 從一個文件中讀取所有的數(shù)據(jù)
5.3 do-while循環(huán)
5.4 for循環(huán)
5.5 使用哪種循環(huán)
5.6 嵌套循環(huán)
5.7 最小化數(shù)字錯誤
5.8 實例研究
5.8.1 求最大公約數(shù)
5.8.2 預(yù)測未來的學(xué)費
5.8.3 蒙特卡羅模擬
5.8.4 十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
5.9 關(guān)鍵字break和continue
5.10 實例研究:檢查回文
5.11 實例研究:輸出素數(shù)
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第6章 函數(shù)
6.1 引言
6.2 函數(shù)定義
6.3 函數(shù)調(diào)用
6.4 無返回值函數(shù)
6.5 以傳值方式傳遞參數(shù)
6.6 模塊化代碼
6.7 函數(shù)的重載
6.8 函數(shù)原型
6.9 缺省參數(shù)
6.10 內(nèi)聯(lián)函數(shù)
6.11 局部、全局和靜態(tài)局部變量
6.11.1 for循環(huán)中變量的作用域
6.11.2 靜態(tài)局部變量
6.12 以引用方式傳遞參數(shù)
6.13 常量引用參數(shù)
6.14 實例研究:十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
6.15 函數(shù)抽象和逐步求精
6.15.1 自頂向下設(shè)計
6.15.2 自頂向下或自底向上實現(xiàn)
6.15.3 實現(xiàn)細(xì)節(jié)
6.15.4 逐步求精的好處
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第7章 一維數(shù)組和C字符串
7.1 引言
7.2 數(shù)組基礎(chǔ)
7.2.1 聲明數(shù)組
7.2.2 訪問數(shù)組元素
7.2.3 數(shù)組初始化語句
7.2.4 處理數(shù)組
7.3 問題:彩票號碼
7.4 問題:一副紙牌
7.5 數(shù)組作為函數(shù)參數(shù)
7.6 防止函數(shù)修改傳遞參數(shù)的數(shù)組
7.7 數(shù)組作為函數(shù)值返回
7.8 問題:計算每個字符的出現(xiàn)次數(shù)
7.9 搜索數(shù)組
7.9.1 順序搜索方法
7.9.2 二分搜索方法
7.10 排序數(shù)組
7.11 C字符串
7.11.1 輸入和輸出C字符串
7.11.2 C字符串函數(shù)
7.11.3 使用strcpy和strncpy函數(shù)復(fù)制字符串
7.11.4 使用strcat和strncat函數(shù)拼接字符串
7.11.5 使用strcmp函數(shù)比較字符串
7.11.6 字符串和數(shù)字之間的轉(zhuǎn)換
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第8章 多維數(shù)組
8.1 引言
8.2 聲明二維數(shù)組
8.3 操作二維數(shù)組
8.4 二維數(shù)組作為函數(shù)參數(shù)
8.5 問題:評定多項選擇測試的成績
8.6 問題:找最近鄰點對
8.7 問題:數(shù)獨
8.8 多維數(shù)組
8.8.1 問題:每日溫度與濕度
8.8.2 問題:猜生日
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第二部分 面向?qū)ο缶幊?br />
第9章 對象和類
9.1 引言
9.2 聲明類
9.3 例:定義類和創(chuàng)建對象
9.4 構(gòu)造函數(shù)
9.5 創(chuàng)建及使用對象
9.6 類定義和類實現(xiàn)的分離
9.7 避免多次包含
9.8 類中的內(nèi)聯(lián)函數(shù)
9.9 數(shù)據(jù)域封裝
9.10 變量作用域
9.11 類抽象和封裝
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第10章 面向?qū)ο笏枷?br />
10.1 引言
10.2 string類
10.2.1 構(gòu)造一個字符串
10.2.2 追加字符串
10.2.3 字符串賦值
10.2.4 函數(shù)at、clear、erase及empty
10.2.5 函數(shù)length、size、capacity和c_str()
10.2.6 字符串比較
10.2.7 獲取子串
10.2.8 字符串搜索
10.2.9 字符串插入和替換
10.2.10 字符串運算符
10.2.11 把數(shù)字轉(zhuǎn)換為字符串
10.2.12 字符串分割
10.2.13 實例研究:字符串替換
10.3 對象作為函數(shù)參數(shù)
10.4 對象數(shù)組
10.5 實例成員和靜態(tài)成員
10.6 只讀成員函數(shù)
10.7 從對象的角度思考
10.8 對象合成
10.9 實例研究:StackOfIntegers類
10.10 類設(shè)計準(zhǔn)則
10.10.1 內(nèi)聚
10.10.2 一致
10.10.3 封裝
10.10.4 清晰
10.10.5 完整
10.10.6 實例與靜態(tài)
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第11章 指針及動態(tài)內(nèi)存管理
11.1 引言
11.2 指針基礎(chǔ)
11.3 用typedef定義同義類型
11.4 常量指針
11.5 數(shù)組和指針
11.6 函數(shù)調(diào)用時傳遞指針參數(shù)
11.7 從函數(shù)中返回指針
11.8 有用的數(shù)組函數(shù)
11.9 動態(tài)持久內(nèi)存分配
11.10 創(chuàng)建及訪問動態(tài)對象
11.11 this指針
11.12 析構(gòu)函數(shù)
11.13 實例研究:Course類
11.14 拷貝構(gòu)造函數(shù)
11.15 自定義拷貝構(gòu)造函數(shù)
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第12章 模板、向量和棧
12.1 引言
12.2 模板基礎(chǔ)
12.3 例:一個通用排序函數(shù)
12.4 模板類
12.5 改進(jìn)Stack類
12.6 C++向量類
12.7 用vector類替換數(shù)組
12.8 實例研究:表達(dá)式計算
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第13章 文件輸入輸出
13.1 引言
13.2 文本輸入輸出
13.2.1 向文件中寫入數(shù)據(jù)
13.2.2 從文件中讀取數(shù)據(jù)
13.2.3 檢測文件是否存在
13.2.4 檢測文件結(jié)束
13.2.5 讓用戶輸入文件名
13.3 格式化輸出
13.4 函數(shù):getline、get和put
13.5 fstream和文件打開模式
13.6 檢測流狀態(tài)
13.7 二進(jìn)制輸入輸出
13.7.1 write函數(shù)
13.7.2 read函數(shù)
13.7.3 例:二進(jìn)制數(shù)組I/O
13.7.4 例:二進(jìn)制對象I/O
13.8 隨機(jī)訪問文件
13.9 更新文件
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第14章 運算符重載
14.1 引言
14.2 Rational類
14.3 運算符函數(shù)
14.4 重載[]運算符
14.5 重載簡寫運算符
14.6 重載一元運算符
14.7 重載++和——運算符
14.8 友元函數(shù)和友元類
14.9 重載<<和>>運算符
14.10 自動類型轉(zhuǎn)換
14.10.1 轉(zhuǎn)換為基本數(shù)據(jù)類型
14.10.2 轉(zhuǎn)換為對象類型
14.11 定義重載運算符的非成員函數(shù)
14.12 帶有重載運算符函數(shù)的Rational類
14.13 重載賦值運算符
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第15章 繼承和多態(tài)
15.1 引言
15.2 基類和派生類
15.3 泛型程序設(shè)計
15.4 構(gòu)造函數(shù)和析構(gòu)函數(shù)
15.4.1 調(diào)用基類構(gòu)造函數(shù)
15.4.2 構(gòu)造函數(shù)鏈和析構(gòu)函數(shù)鏈
15.5 函數(shù)重定義
15.6 多態(tài)
15.7 虛函數(shù)和動態(tài)綁定
15.8 關(guān)鍵字protected
15.9 抽象類和純虛函數(shù)
15.10 類型轉(zhuǎn)換:static_cast 和 dynamic_cast
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第16章 異常處理
16.1 引言
16.2 異常處理概述
16.3 異常處理機(jī)制的優(yōu)點
16.4 異常類
16.5 自定義異常類
16.6 多重異常捕獲
16.7 異常的傳播
16.8 重拋出異常
16.9 異常說明
16.10 何時使用異常機(jī)制
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第三部分 算法和數(shù)據(jù)結(jié)構(gòu)
第17章 遞歸
17.1 引言
17.2 例:階乘
17.3 實例研究:斐波那契數(shù)
17.4 用遞歸方法求解問題
17.5 遞歸輔助函數(shù)
17.5.1 選擇排序
17.5.2 二分搜索
17.6 漢諾塔
17.7 八皇后問題
17.8 遞歸與循環(huán)
17.9 尾遞歸
關(guān)鍵術(shù)語
本章小結(jié)
在線測驗
程序設(shè)計練習(xí)
第18章 開發(fā)高效的算法
第19章 排序
第20章 鏈表、隊列和優(yōu)先隊列
第21章 二分搜索樹
第22章 STL容器
第23章 STL算法
第24章 圖及其應(yīng)用
第25章 加權(quán)圖及其應(yīng)用
第26章 平衡二叉樹和伸展樹
附錄
附錄A C++關(guān)鍵字
附錄B ASCII字符集
附錄C 運算符優(yōu)先級表
附錄D 數(shù)字系統(tǒng)
附錄E 位運算