程序設計基礎及應用(C&C++語言 )(第2版)
陳春麗、王振華
商品描述
目錄大綱
目錄
第1章計算機語言程序設計概述1
1.1程序設計語言發展1
1.1.1機器語言到高級語言1
1.1.2高級語言翻譯成機器語言2
1.2C&C++語言概述3
1.2.1C&C++語言的發展3
1.2.2C&C++語言的特點3
1.3算法簡介3
1.3.1算法的特點與描述3
1.3.2算法的評價5
1.3.3數據結構與算法“一題多解”6
1.4三大程序設計思想7
1.4.1面向過程程序設計7
1.4.2面向對象程序設計8
1.4.3函數式程序設計8
1.5認識C&C++源程序8
1.5.1程序示例8
1.5.2程序代碼說明10
1.6C&C++開發環境13
1.6.1常用的編譯器及IDE13
1.6.2AI助力編程14
1.7實用知識: 常見的編譯和運行錯誤14
1.7.1常見的編譯錯誤14
1.7.2常見的運行錯誤15
1.8練習與思考16
第2章順序結構與數學表達式18
2.1順序結構18〖3〗程序設計基礎及應用(C&C++語言)第2版目錄〖3〗2.2基本數據類型與變量19
2.2.1基本數據類型簡介19
2.2.2變量與內存的關系19
2.2.3變量定義與初始化20
2.2.4賦值運算符與自增/自減運算符20
2.2.5陷阱: 變量定義與賦值的常見問題22
2.3常量24
2.3.1字面常量24
2.3.2符號常量25
2.3.3#define宏定義26
2.3.4sizeof運算符28
2.4數學運算符與表達式28
2.4.1算術運算符28
2.4.2算術表達式及優先級29
2.4.3復合賦值運算符29
2.4.4逗號運算符29
2.4.5陷阱: 算術運算的常見問題30
2.5位運算符和表達式31
2.5.1位運算符及功能31
2.5.2位運算的應用32
2.6類型轉換33
2.6.1隱式類型轉換33
2.6.2顯式類型轉換33
2.6.3C++的類型推導34
2.7輸入與輸出34
2.7.1C++的cin和cout35
2.7.2庫函數scanf和printf38
2.7.3C++20的format格式化40
2.7.4一個字符的輸入與輸出41
2.8實用知識: 常用的數學庫函數42
2.8.1歐氏距離計算兩個坐標點距離42
2.8.2半正矢法計算兩個經緯度點的距離43
2.9簡單程序算法及應用44
2.9.1交換兩個整數的值44
2.9.2字母加密45
2.10練習與思考46
第3章選擇結構及相關表達式48
3.1選擇結構48
3.2關系運算符和關系表達式49
3.2.1關系運算符49
3.2.2關系表達式及應用49
3.2.3陷阱: 關系表達式的常見問題50
3.3邏輯運算符和邏輯表達式50
3.3.1邏輯運算符50
3.3.2邏輯表達式及應用51
3.4if語句52
3.4.1標準if…else…語句52
3.4.2簡單的if語句53
3.4.3復雜的if…else if…else語句53
3.4.4if語句的嵌套55
3.4.5條件運算符及條件表達式55
3.5switch語句56
3.5.1switch語句實現多分支結構56
3.5.2break語句的合理使用57
3.5.3if與switch的混用57
3.6實用知識: 通用工具函數58
3.6.1生成隨機數函數58
3.6.2進程控制函數59
3.7選擇結構算法及應用60
3.7.1判斷整數m是否能被n整除60
3.7.2大寫字母轉換成小寫字母60
3.7.3簡單的四則運算器61
3.8練習與思考62
第4章自定義函數與封裝66
4.1函數與結構化程序設計66
4.2自定義函數的聲明與定義68
4.2.1函數的聲明68
4.2.2函數的定義69
4.2.3函數返回值70
4.2.4陷阱: 函數定義的常見問題71
4.3函數的調用72
4.3.1函數調用的格式72
4.3.2陷阱: 函數調用的常見問題73
4.3.3函數的嵌套調用74
4.3.4調用內聯函數76
4.4函數的參數傳遞76
4.4.1參數的值傳遞76
4.4.2C++的引用傳遞77
4.4.3const修飾引用形參79
4.5變量的作用域與生存期79
4.5.1局部變量的作用域與生存期79
4.5.2全局變量的作用域與生存期80
4.5.3靜態變量的作用域與生存期81
4.6C++的函數重載與默認參數82
4.6.1C++的函數重載82
4.6.2C++的默認參數83
4.6.3陷阱: 函數重載的二義性84
4.7遞歸思想——遞歸函數85
4.7.1遞歸函數的定義85
4.7.2遞歸函數的調用過程86
4.7.3遞歸調用中的“棧”88
4.8實用知識: C++函數高級特性88
4.8.1返回類型推導89
4.8.2返回類型後置89
4.8.3匿名函數(Lambda)89
4.9自定義函數的應用90
4.9.1獲得用戶選擇的購物菜單90
4.9.2遞歸求快速冪問題91
4.10練習與思考92
第5章疊代與循環結構95
5.1循環結構95
5.2循環控制語句96
5.2.1while語句96
5.2.2for語句98
5.2.3do…while語句100
5.2.4陷阱: 循環的常見問題101
5.3循環和疊代的提前結束102
5.3.1break語句102
5.3.2continue語句退出疊代104
5.4循環結構的嵌套105
5.4.1循環嵌套的語句105
5.4.2多種循環的優化107
5.5循環與遞歸108
5.6實用知識: 循環讀入與出錯處理110
5.6.1循環讀入直到滿足特定條件110
5.6.2控制多行輸入直到EOF結束110
5.6.3忽略輸入錯誤的輸入控制111
5.7循環結構的算法及應用113
5.7.1數學表達式的求解113
5.7.2多種方法求一組數的平均值114
5.7.3循環執行用戶選擇菜單功能115
5.8練習與思考116
第6章數值型數組與數據處理119
6.1一維數組119
6.1.1一維數組的定義與存儲119
6.1.2數組元素的使用121
6.1.3基於範圍的for循環123
6.2一維數組與指針124
6.2.1指針與指針變量124
6.2.2函數參數的址傳遞126
6.2.3使用指針變量訪問數組128
6.2.4陷阱: 數組越界問題129
6.3一維數組與函數129
6.3.1一維數組作為函數的形參129
6.3.2返回指針的函數133
6.4實用知識: 數據處理的實用算法133
6.4.1中值與方差(標準差)計算134
6.4.2返回數組的最大值/最小值及下標134
6.4.3順序查找與折半查找136
6.4.4冒泡排序與選擇排序137
6.4.5插入與刪除139
6.5二維數組與多維數組141
6.5.1二維數組的定義與存儲141
6.5.2二維數組元素的使用142
6.5.3二維數組與指針143
6.5.4二維數組與函數144
6.5.5多維數組145
6.6指針數組與二級指針145
6.6.1指針數組146
6.6.2二級指針147
6.7數據處理與工程應用147
6.7.1實現購物菜單的結賬子功能147
6.7.2接收不定個數的整數148
6.7.3計算日平均溫度與最大溫差150
6.7.4動態規劃算法應用實例151
6.8練習與思考152
第7章字符型數組與字符串處理155
7.1字符數組的定義與初始化155
7.1.1字符數組的定義155
7.1.2字符數組的初始化156
7.1.3字符數組元素的使用156
7.1.4陷阱: 字符串使用=和==的問題157
7.2字符數組的輸入與輸出157
7.2.1接收一個單詞給字符數組157
7.2.2接收一行句子給字符數組158
7.2.3輸出字符串159
7.2.4陷阱: 混合輸入字符串和數字的問題160
7.3字符數組與函數160
7.3.1字符數組作為函數的形參160
7.3.2數組作為函數的返回值163
7.3.3字符串數組164
7.4字符串與數值型的轉換函數165
7.4.1利用sprintf函數將數值轉換為字符串165
7.4.2利用sscanf 函數將字符串轉換為數值165
7.5實用知識: 字符串處理函數165
7.5.1常用函數166
7.5.2字符或子串查找與替換167
7.5.3字符串分割168
7.5.4內存處理函數168
7.6字符串處理綜合應用169
7.6.1所有單詞首字母大寫169
7.6.2合並兩個有序字符串170
7.6.3身份證號碼是否合法170
7.7練習與思考171
第8章文件與數據處理173
8.1文件概述173
8.1.1文件存儲類型173
8.1.2文件對象173
8.2C++文件打開與關閉174
8.2.1文件的打開174
8.2.2文件的關閉176
8.3C++的文件讀寫176
8.3.1fstream類的常用檢查方法176
8.3.2文本文件的讀寫177
8.3.3二進制文件的讀寫180
8.3.4隨機讀寫181
8.4C語言的文件操作183
8.4.1C語言的文件打開與關閉183
8.4.2C語言的文件讀寫184
8.5實用知識: 帶參數的main函數186
8.6文件應用示例187
8.6.1密碼文件的讀寫187
8.6.2學生成績分段統計效果圖188
8.6.3溫度周報文件的讀寫190
8.7練習與思考190
第9章自定義數據類型192
9.1C++的類與對象192
9.1.1類的定義192
9.1.2創建和使用對象195
9.1.3構造函數和析構函數197
9.1.4對象數組199
9.1.5運算符重載200
9.2C++類的進一步定義202
9.2.1C++類的繼承性202
9.2.2C++類的多態性206
9.2.3命名空間210
9.3typedef類型與using210
9.3.1typedef211
9.3.2using211
9.4結構體211
9.4.1結構體類型的定義211
9.4.2結構體類型變量212
9.4.3結構體類型的數組215
9.5聯合體216
9.5.1聯合體的定義與應用216
9.5.2位段的定義與應用217
9.6枚舉類型218
9.6.1枚舉類型的定義與使用218
9.6.2C++的枚舉類220
9.7實用知識: C++的string類220
9.7.1string類對象的定義220
9.7.2string 類成員函數221
9.7.3string 類的運算符222
9.7.4string類對象的輸入與輸出222
9.7.5string與其他類型轉換223
9.7.6C++正則表達式224
9.8自定義類型的綜合應用226
9.8.1自定義日期類226
9.8.2自定義類型數據的文件讀寫 228
9.9練習與思考229
第10章指針進階應用232
10.1void指針232
10.2函數指針與函數對象233
10.2.1函數指針233
10.2.2函數對象234
10.3動態內存分配與回收235
10.3.1棧內存與堆內存235
10.3.2在C++中動態分配內存236
10.3.3含有動態內存分配成員的類238
10.3.4malloc與free函數239
10.4C++的智能指針240
10.4.1unique_ptr240
10.4.2shared_ptr240
10.4.3weak_ptr241
10.5鏈式數據結構241
10.5.1單鏈表242
10.5.2單鏈表的訪問243
10.5.3單鏈表結點的插入243
10.5.4單鏈表結點的刪除245
10.6實用知識: 通用算法函數246
10.6.1改變序列的算法247
10.6.2不修改序列的算法247
10.6.3有序範圍的操作249
10.6.4for_each函數249
10.7鏈表與算法的應用250
10.7.1鏈表的應用250
10.7.2算法的應用251
10.8練習與思考252
第11章泛型編程與C++標準模板庫254
11.1模板與泛型編程機制254
11.1.1C++的函數模板254
11.1.2C++中的類模板255
11.1.3C++的可變參數模板256
11.1.4C11的泛型宏257
11.2C++模板類pair與tuple257
11.2.1pair257
11.2.2tuple258
11.2.3比較pair與tuple259
11.3C++ STL組件259
11.3.1容器類型259
11.3.2疊代器260
11.4C++順序容器261
11.4.1array與vector261
11.4.2list與forward_list263
11.5C++關聯容器264
11.5.1set與multiset集合265
11.5.2map與multimap映射265
11.6C++容器適配器266
11.6.1stack266
11.6.2queue與priority_queue266
11.7實用知識: C++數值計算268
11.7.1數值界限268
11.7.2泛型數值計算算法268
11.7.3線性代數運算269
11.8數據處理與統計分析270
11.8.1數據分類匯總及Top n排名270
11.8.2統計頻次最高的前n個單詞271
11.9練習與思考272
第12章軟件工程項目開發應用技術274
12.1程序設計的多文件結構274
12.1.1多文件工程274
12.1.2條件編譯指令276
12.2靜態鏈接庫276
12.2.1創建靜態鏈接庫277
12.2.2部署靜態鏈接庫278
12.3異常處理278
12.4GUI與可視化設計279
12.4.1GUI框架和工具279
12.4.2C++語言的GUI程序279
12.4.3EasyX繪圖實例280
12.5練習與思考282