內容簡介
本書是密切結合計算機的最新發展的程式設計入門教材,針對程式設計的初學者,闡述程式設計的基本內容。本書共12章,從C/C++語言的程式實例簡介、三種控制結構、函式、數組、字元串、自定義數據類型、檔案,進而到簡單的面向對象程式設計。實例選取工程套用中的數據處理、數學運算等實例及重要算法,引導學生充分利用
C++標準庫。
圖書目錄
第1章計算機語言程式設計概述1
1.1程式設計語言發展1
1.1.1機器語言到高級語言1
1.1.2C&C++語言的發展與特點2
1.2高級語言程式的編譯2
1.2.1編譯2
1.2.2解釋與腳本語言3
1.3算法與程式設計3
1.3.1算法與工程問題的求解3
1.3.2面向過程的程式設計與面向對象的程式設計5
1.4C&C++源程式示例6
1.4.1程式示例6
1.4.2程式代碼說明8
1.4.3程式書寫原則11
1.5C&C++開發環境12
1.5.1常用的集成開發環境12
1.5.2用DevC++創建C&C++項目13
1.6實用知識: 常見的編譯和運行錯誤15
1.6.1常見的編譯錯誤15
1.6.2常見的運行錯誤16
1.7練習與思考18
第2章數學表達式與簡單程式19
2.1順序結構19
2.2基本數據類型與常量20
2.2.1基本數據類型簡介20
2.2.2整型常量20
2.2.3實型常量20〖3〗程式設計基礎及套用(C&C++語言)〖3〗
2.2.4字元型常量21
2.2.5符號常量22
2.2.6sizeof運算符24
2.3變數與賦值運算25
2.3.1變數與記憶體的關係25
2.3.2變數定義與初始化25
2.3.4陷阱: 變數定義與賦值的常見問題28
2.4.1算術運算符30
2.4.2算術表達式及優先權30
2.4.4陷阱: 算術運算的常見問題31
2.5類型轉換33
2.5.1隱式類型轉換33
2.6輸入與輸出34
2.6.1C++的輸入和輸出——cin和cout34
2.6.2C&C++的輸入和輸出——scanf和printf36
2.6.3一個字元的輸入和輸出——getchar和putchar函式38
2.6.4格式化輸出控制39
2.6.5C99中scanf和printf函式系列的增強42
2.7實用知識: 數學套用中常用的標準庫函式42
2.7.1冪與平方根——pow與sqrt函式42
2.7.3浮點數取整——ceil與floor等函式44
2.7.4三角函式——sin與cos等函式44
2.7.5指數與對數函式——exp與log等函式45
2.7.6陷阱: C語言的NAN錯誤46
2.8簡單程式算法及套用實例46
2.8.1交換兩個整數的值46
2.8.2字母替換47
2.8.3BMI計算49
2.9練習與思考50
第3章選擇結構及相關表達式52
3.1選擇結構52
3.2.1關係運算符53
3.2.2關係表達式及套用53
3.2.3陷阱: 關係表達式的常見問題54
3.3.1邏輯運算符54
3.3.2邏輯表達式及套用55
3.5C99&C++的布爾型常量與變數58
3.6if語句58
3.6.1標準if…else語句58
3.6.2簡單的if語句61
3.6.3複雜的if…else if … else語句61
3.6.4if語句的嵌套63
3.7switch語句65
3.7.1switch語句實現的多分支結構65
3.8實用知識: 生成隨機數函式——rand等函式69
3.9選擇結構算法及套用70
3.9.1判斷整數m是否能被n整除70
3.9.2判斷一個浮點數的值是否等於071
3.9.3利用BMI判斷肥胖程度72
3.10練習與思考73
第4章自定義函式與封裝76
4.1函式與結構化程式設計76
4.2自定義函式的聲明與定義79
4.2.1函式的聲明79
4.2.2函式的定義79
4.2.3函式返回值81
4.2.4陷阱: 函式聲明與定義的常見問題82
4.3函式的調用83
4.3.1函式調用的格式84
4.3.2陷阱: 函式調用的常見問題85
4.3.3函式的調用過程86
4.3.4函式的嵌套調用87
4.4函式的參數傳遞90
4.4.1參數的值傳遞90
4.4.2C++的引用傳遞91
4.4.3const修飾引用形參93
4.5變數的作用域與生存期94
4.5.1局部變數的作用域與生存期94
4.5.2全局變數的作用域與生存期94
4.5.3靜態變數的作用域與生存期96
4.6C++的函式重載與默認參數97
4.6.1C++的函式重載97
4.6.2陷阱: 函式重載的調用失敗問題99
4.6.3C++的默認參數99
4.7遞歸思想——遞歸函式102
4.7.1遞歸函式的定義102
4.7.2遞歸函式的調用過程103
4.7.3遞歸調用中的棧106
4.8自定義函式的套用106
4.8.1自定義函式——計算BMI及輸出體形判斷結果106
4.8.2自定義函式——判斷一個字元是否為大寫字母107
4.8.3自定義函式——獲得用戶選擇的購物選單項序號108
4.9練習與思考109
第5章疊代與循環結構112
5.1循環結構112
5.2循環控制語句113
5.2.1while語句113
5.2.2for語句114
5.2.3do…while語句117
5.2.4陷阱: 循環的常見問題119
5.3循環和疊代的提前結束120
5.3.2continue語句123
5.4循環與遞歸124
5.5循環結構的嵌套126
5.5.1循環嵌套的語句126
5.5.2多循環的最佳化128
5.5.3一重循環的嘗試130
5.6實用知識: 循環中的變數及作用131
5.6.1循環控制變數131
5.6.2遞推變數132
5.6.3計數器變數132
5.6.4控制多行輸入直到EOF結束133
5.7循環結構的算法及套用134
5.7.1套用1: 數學表達式的求解134
5.7.2套用2: 循環顯示選單及執行用戶選擇的選單項的功能136
5.7.3套用3: 忽略輸入錯誤的輸入控制139
5.8練習與思考143
第6章數值型數組與數據處理146
6.1一維數組146
6.1.1一維數組的聲明與存儲146
6.1.2一維數組的初始化148
6.1.3數組元素的使用148
6.1.4數組的輸入與輸出150
6.2一維數組與函式151
6.2.1一維數組作為函式的形參151
6.2.2函式的址傳遞153
6.2.3陷阱: 數組越界問題157
6.3實用知識: 一維數組的實用算法157
6.3.1中值與方差(標準差)計算157
6.3.2返回數組的最大值/最小值及下標159
6.3.3順序查找與折半查找161
6.3.4冒泡排序與選擇排序162
6.4二維數組與多維數組164
6.4.1二維數組的定義與存儲165
6.4.2二維數組的初始化165
6.4.3二維數組元素的使用166
6.4.4二維數組與函式167
6.4.5多維數組169
6.5數組綜合套用實例169
6.5.1實現購物選單的結賬子功能169
6.5.2接收不定個數的整數173
6.5.3計算日平均溫度與最大溫差175
6.6練習與思考178
第7章字元型數組與字元串處理180
7.2字元數組的定義與初始化180
7.2.1字元數組的定義180
7.2.2字元數組的初始化181
7.2.3陷阱: 字元串使用=和==的問題181
7.3字元數組的輸入和輸出182
7.3.1用C++的cin函式接收一個字元串182
7.3.3用C++的cout函式輸出字元串183
7.3.4用C&C++的gets和scanf函式接收字元串183
7.3.5用C&C++的puts和printf函式輸出字元串184
7.4字元數組與函式184
7.4.1字元數組作為函式的形參184
7.4.2數組作為函式的返回值188
7.5實用知識: 標準庫中的字元串處理函式189
7.6字元串與數值型的轉換函式190
7.6.1數值轉換為字元串的函式190
7.6.2字元串轉換為數值的函式191
7.6.3利用C語言的通用函式實現數值與字元串的轉換191
7.7字元數組綜合套用舉例192
7.7.1刪除字元串中的指定字元192
7.7.2合併兩個有序字元串為一個新的有序字元串193
7.7.3判斷身份證號是否合法194
7.8練習與思考196
第8章檔案與數據處理198
8.1檔案概述198
8.1.1文本檔案與二進制檔案198
8.1.2C++的I/O 流199
8.1.3FILE類型199
8.2C++的檔案打開與關閉199
8.2.1檔案的打開199
8.2.2檔案的關閉201
8.3C++的檔案讀寫201
8.3.1fstream類的常用檢查方法201
8.3.2文本檔案的讀寫202
8.3.3二進制檔案的讀寫207
8.4C語言的檔案打開與讀寫210
8.4.1C語言的檔案打開與關閉210
8.4.2C語言的檔案讀寫211
8.4.3C語言讀寫檔案的示例211
8.5檔案套用示例212
8.5.1密碼檔案的讀寫212
8.5.2學生成績分段統計圖214
8.5.3氣溫周報檔案的讀寫217
8.6練習與思考221
第9章自定義數據類型223
9.1C++的類223
9.1.1類的定義223
9.1.2類的成員函式224
9.1.3創建和使用對象226
9.1.4構造函式和析構函式227
9.1.5對象數組233
9.2結構體235
9.2.2結構體類型變數的定義236
9.2.3結構體類型變數的使用237
9.2.4結構體類型的數組240
9.3結構體與類的比較243
9.3.1C語言的結構體和C++的結構體的區別243
9.3.2C++的結構體和類的區別243
9.4數據類型的別名244
9.5枚舉類型244
9.5.1枚舉類型的聲明244
9.5.2枚舉變數的定義及賦值245
9.5.3自定義枚舉量的值245
9.6C++的string類247
9.6.1string類對象的定義247
9.6.2string類成員函式247
9.6.3string類的運算符248
9.6.4string類對象的輸入與輸出249
9.6.5字元數組轉換為string類字元串250
9.6.6string類字元串轉換為字元數組250
9.7實用知識: C語言的日期標準函式館251
9.7.2struct tm
結構體類型與localtime函式251
9.7.3獲取當前系統年月日的代碼段示例252
9.8自定義類的綜合套用實例252
9.8.1自定義日期類252
9.8.2自定義BMI類256
9.8.3一組BMI數據的檔案讀寫258
9.9練習與思考261
第10章指針與動態記憶體分配263
10.1指針與指針變數263
10.1.1指針變數的定義 263
10.1.2指針變數賦值與初始化264
10.1.3引用指針變數 265
10.2使用指針變數訪問數組265
10.2.1一維數組和指針265
10.2.2二維數組和指針 266
10.2.3二級指針269
10.2.4返回指針的函式271
10.3動態記憶體分配與回收272
10.3.1棧記憶體與堆記憶體272
10.3.2在C++中動態分配和釋放記憶體272
10.3.3用malloc與free函式動態分配和釋放記憶體275
10.3.4空指針與野指針問題276
10.4使用指針變數訪問對象或結構體變數276
10.5鏈式數據結構276
10.5.1單鍊表277
10.5.2單鍊表的訪問278
10.5.3單鍊表結點的插入279
10.5.4單鍊表結點的刪除280
10.6練習與思考282
第11章C++的面向對象程式設計283
11.1C++類的進一步定義283
11.1.1this指針283
11.1.2複製類284
11.1.3靜態成員285
11.2.2對象的輸入與輸出運算符的重載290
11.2.3四則運算符的重載292
11.3C++類的繼承性294
11.3.1基類和派生類295
11.3.2派生類的聲明 295
11.3.3繼承方式296
11.3.4protected成員的特點與作用299
11.3.5繼承時的構造函式300
11.3.6繼承時的析構函式304
11.4C++類的多態性305
11.4.1多態的概念305
11.4.2虛函式實現多態306
11.5C++標準模板類STL310
11.5.1STL中的算法310
11.5.2STL中的容器312
11.5.3STL中的疊代器316
11.6C++11標準中新增的遍歷容器方法316
11.8練習與思考318
第12章軟體工程項目開發套用技術319
12.1程式設計的多檔案結構319
12.2條件編譯指令及在多檔案中的套用322
12.3位運算符和位運算表達式的套用322
12.4.1創建靜態程式庫325
12.4.2部署靜態程式庫325
12.4.3在控制台項目中使用靜態程式庫326
12.5實用算法及套用327
12.5.1快速排序327
12.5.2動態規劃方法套用實例329
附錄AC&C++的關鍵字與數據類型331
A.1C語言關鍵字331
A.2C++常用的專有關鍵字及含義332
附錄BC&C++的標準庫及主要的庫函式335
B.1數學函式335
B.2字元函式和字元串函式336
B.3輸入輸出函式338
附錄CDevC++的配置及調試341
C.1環境配置——修改選單的語言341
C.2編輯器顯示配置——修改編輯器字型341
C.3編譯器選項配置342
C.4單步調試343
第1章緒論1
1.1知識點回顧1
1.1.1計算機組成1
1.1.2程式設計語言2
1.1.3程式設計過程3
1.2習題解答5
1.2.1簡答題5
1.2.2編程題12
1.3進一步拓展12
1.3.1計算機為什麼採用二進制12
1.3.2算法的評價13
第2章程式的基本組成14
2.1知識點回顧14
2.1.1C++程式的基本結構14
2.1.2常量與變數14
2.1.3數據的輸入輸出18
2.1.4算術運算18
2.1.5賦值運算19
2.2習題解答21
2.2.1簡答題21
2.2.2程式設計題27
2.3進一步拓展34
2.3.1“按位與”運算35
2.3.2“按位或”運算37
2.3.3“按位異或”運算38
2.3.4“取反”運算39
2.3.5“左移”運算402.3.6“右移”運算40
第3章分支程式設計43
3.1知識點回顧43
3.1.2分支語句44
3.2習題解答45
3.2.1簡答題45
3.2.2程式設計題48
〖3〗程式設計基礎及套用(C&C++語言)〖3〗第4章循環程式設計63
4.1知識點回顧63
4.1.1計數循環63
4.1.2while循環64
4.1.3dowhile循環64
4.1.4break和continue語句65
4.2習題解答65
4.2.1簡答題65
4.2.2程式設計題67
4.3進一步拓展81
4.3.2結構化程式設計82
4.3.3位運算的進一步討論83
第5章批量數據處理——數組84
5.1知識點回顧84
5.1.1一維數組84
5.1.2二維數組85
5.1.3字元串86
5.2習題解答88
5.2.1簡答題88
5.2.2程式設計題90
5.3進一步拓展104
5.3.1特殊矩陣104
5.3.2對稱矩陣105
5.3.3三角矩陣105
5.3.4稀疏矩陣106
第6章過程封裝——函式107
6.1知識點回顧107
6.1.1函式的概念107
6.1.2函式的定義107
6.1.3函式的參數和返回值108
6.1.4數組作為函式的參數108
6.1.5重載函式109
6.1.6函式模板109
6.1.7變數的作用域與存儲類別110
6.1.8遞歸程式設計111
6.1.9C++11的擴展112
6.2習題解答113
6.2.1簡答題113
6.2.2程式設計題117
6.3進一步拓展138
6.3.1模擬電腦程式的運行138
6.3.2模擬器的設計139
第7章間接訪問——指針144
7.1知識點回顧144
7.1.1指針的概念144
7.1.2指針運算與數組144
7.1.3指針與動態記憶體分配145
7.1.4字元串的指針表示146
7.1.5指針、數組和字元串傳遞146
7.1.6引用與引用傳遞147
7.1.7多級指針與指向函式的指針148
7.2習題解答150
7.2.1簡答題150
7.2.2程式設計題151
第8章數據封裝——結構體161
8.1知識點回顧161
8.1.1記錄的概念161
8.1.2結構體變數的使用162
8.1.3結構體作為函式的參數163
8.1.4鍊表163
8.2習題解答164
8.2.1簡答題164
8.2.2程式設計題165
8.3進一步拓展174
第9章模組化開發177
9.1知識點回顧177
9.1.1自頂向下分解177
9.1.2模組劃分177
9.1.3設計自己的庫177
9.2習題解答178
9.2.1簡答題178
9.2.2程式設計題179
9.3進一步拓展195
9.3.1軟體危機195
9.3.2軟體工程196
第10章創建新的類型199
10.1知識點回顧199
10.1.1面向對象的思想199
10.1.2面向對象程式設計的特點199
10.1.3類的定義200
10.1.4對象的使用201
10.1.5對象的構造與析構201
10.1.6C++11對構造的擴展202
10.1.7常量對象和常量成員函式204
10.1.8常量數據成員205
10.1.9靜態數據成員與靜態成員函式205
10.1.10友元206
10.2習題解答206
10.2.1簡答題206
10.2.2程式設計題209
10.3進一步拓展244
10.3.1不要隨便改變複製構造的意義244
10.3.2計算機模擬程式245
第11章運算符重載249
11.1知識點回顧249
11.1.1什麼是運算符重載249
11.1.2運算符重載的方法249
11.2習題解答251
11.2.1簡答題251
11.2.2程式設計題255
11.3進一步拓展277
第12章組合與繼承278
12.1知識點回顧278
12.1.1組合278
12.1.2繼承278
12.1.3虛函式與運行時的多態性280
12.1.5純虛函式和抽象類281
12.2習題解答281
12.2.1簡答題281
12.2.2程式設計題284
12.3進一步拓展308
12.3.1避免隨意地繼承308
12.3.2多態性與switch語句308
第13章泛型機制——模板310
13.1知識點回顧310
13.1.1類模板的定義310
13.1.2類模板的實例化310
13.1.3類模板的友元311
13.2習題解答312
13.2.1簡答題312
13.2.2程式設計題313
第14章輸入輸出與檔案320
14.1知識點回顧320
14.1.1基於控制台的輸入輸出321
14.1.2基於檔案的輸入輸出323
14.2習題解答326
14.2.1簡答題326
14.2.2程式設計題327
第15章異常處理351
15.1知識點回顧351
15.1.1異常拋出351
15.1.2異常檢測和處理351
15.1.3異常規格聲明352
15.2習題解答352
15.2.1簡答題352
15.2.2程式設計題354
第16章容器和疊代器358
16.1知識點回顧358
16.1.1容器358
16.1.2疊代器358
16.2習題解答359
16.2.1簡答題359
16.2.2程式設計題359
參考文獻362