CCF GESP直通車:C++二級三級精講精練
沈根成
商品描述
"本書針對GESP 二級和三級的 C++ 考試大綱量身定制。全書知識講解深入淺出,例題豐富,還有一些延伸閱讀,旨在增加趣味性和擴展知識面。 全書分為六部分:第一部分為編程輔助工具,介紹計算機網絡、流程圖、數據類型轉換、ASCII編碼及數學函數;第二部分為數組與嵌套,介紹一維數組、多層分支、多層循環,以及它們在字母矩陣、數字三角形方面的應用;第三部分為遞推與枚舉,介紹遞推、疊代和枚舉的解題方法,並舉例說明如何應用;第四部分為進制轉換、數據編碼和位運算,舉例說明位運算在加密方面的應用;第五部分為字符串,分為 C 語言風格的字符串和 C++ 風格的字符串;第六部分為集合、字典和其他,介紹集合、字典及算法的概念,同時也初步介紹函數的概念。 本書的適讀人群為自學編程的學生,以及從事中小學生編程教育的老師,特別適合準備參加GESP 考試的學生。 "
作者簡介
沈根成,1995年畢業於復旦大學數學系,獲得復旦大學優秀畢業生稱號,後面試直升至東華大學攻讀碩士學位。1998年碩士畢業後,在軟件行業工作20余年,在多家跨國公司歷任開發工程師、技術經理、部門經理等職位,精通 C、C++、Java 等編程語言。2024年初,嘗試青少年編程培訓工作,對中小學生的學習特點有充分的了解,對編程培訓也有自己獨特的見解。
目錄大綱
目錄
CONTENTS
· 二級 ·
第一部分 編程輔助工具
第1章 計算機網絡與存儲 / 4
1.1 計算機網絡 / 4
1.1.1 資源共享 / 4
1.1.2 信息傳遞 / 5
1.1.3 拓撲結構 / 5
1.1.4 網絡分類 / 7
1.1.5 互聯網 / 7
1.1.6 因特網協議 / 8
1.2 計算機地址 / 8
1.2.1 IP地址 / 9
1.2.2 域名地址 / 10
1.3 數據的存儲 / 11
1.3.1 RAM、ROM、Cache / 11
1.3.2 存儲介質 / 12
1.3.3 存儲單位 / 13
課後作業 / 13
延伸閱讀:128位的二進制數到底有多少個 / 13
第2章 程序設計語言與流程圖 / 15
2.1 程序設計語言 / 15
2.1.1 機器語言 / 16
2.1.2 匯編語言 / 16
2.1.3 高級語言 / 16
2.1.4 C++語言的特性 / 17
2.1.5 代碼質量 / 17
2.2 流程圖 / 18
2.2.1 順序結構的流程圖 / 19
2.2.2 分支結構的流程圖 / 19
2.2.3 循環結構的流程圖 / 20
課後作業 / 22
第3章 數據類型轉換 / 24
3.1 為什麼需要數據類型轉換 / 24
3.2 強制類型轉換 / 25
3.3 隱式類型轉換 / 25
3.3.1 賦值時的隱式類型轉換 / 25
3.3.2 表達式中的隱式類型轉換 / 26
3.3.3 兩種隱式類型轉換同時發生 / 28
3.4 數值越界 / 28
3.5 除數為0 / 29
課後作業 / 30
延伸閱讀:數值越界的本質 / 31
第4章 字符編碼與ASCII編碼系統 / 33
4.1 字符編碼的概念 / 33
4.2 ASCII編碼 / 33
4.2.1 ASCII編碼的字符集 / 34
4.2.2 ASCII編碼字符與數字的對應關系 / 34
4.2.3 ASCII編碼表的規律 / 38
4.2.4 ASCII編碼的應用 / 39
4.3 其他編碼 / 41
4.3.1 定長編碼 / 42
4.3.2 不定長編碼 / 42
4.4 實現你自己的編碼 / 43
課後作業 / 43
第5章 初級數學函數 / 45
5.1 科學記數法 / 45
5.2 數學庫函數 / 46
5.2.1 絕對值函數 / 46
5.2.2 取整函數 / 46
5.2.3 冪函數 / 48
5.2.4 平方根函數 / 48
5.3 隨機數 / 50
5.3.1 隨機數函數 / 50
5.3.2 隨機數種子函數 / 51
5.4 最值函數 / 52
課後作業 / 53
延伸閱讀:“宏”的本質 / 54
第6章 代碼的時間效率 / 55
6.1 時間效率 / 55
6.2 素數判斷的幾種解法比較 / 55
6.3 完全平方數判斷的幾種解法比較 / 57
課後作業 / 60
編程輔助工具總結 / 61
知識點總結 / 61
課後作業 / 65
第二部分 數組與嵌套 / 67
第7章 一維數組 / 68
7.1 什麼叫數組 / 68
7.2 定義數組 / 68
7.3 數組的初始化 / 69
7.4 數組所占的空間 / 70
7.5 訪問數組元素 / 70
7.5.1 為什麼下標從0開始 / 71
7.5.2 可以直接對數組賦值嗎 / 71
7.6 遍歷數組 / 72
7.7 數組的應用 / 73
課後作業 / 74
第8章 多層分支 / 76
8.1 switch的妙用 / 76
8.2 多層分支的概念 / 78
8.3 給整數分類 / 79
8.4 數字重排 / 80
8.5 連環進位 / 82
課後作業 / 84
第9章 多層循環 / 86
9.1 雷劈數判斷 / 86
9.2 自冪數判斷 / 88
9.3 自守數判斷 / 90
課後作業 / 92
第10章 字形矩陣 / 94
10.1 輸出字母矩陣 / 94
10.2 輸出字母三角形 / 97
10.3 輸出數字等腰三角形 / 99
10.4 輸出漢字圖案 / 101
課後作業 / 102
數組與嵌套總結 / 105
知識點總結 / 105
課後作業 / 106
第三部分 遞推與枚舉 / 109
第11章 遞推 / 110
11.1 什麼叫遞推 / 110
11.2 遞推問題的解答方法 / 110
11.3 用遞推法求解斐波那契數列 / 115
11.4 用遞推法求階乘 / 118
11.5 遞推法和數組法的區別 / 119
課後作業 / 120
延伸閱讀:斐波那契數列和黃金分割率的關系 / 121
第12章 遞推應用 / 123
12.1 爬樓梯問題 / 123
12.2 整數構建 / 124
12.3 回文數判斷 / 127
12.4 位增數判斷 / 128
課後作業 / 129
第13章 疊代 / 131
13.1 疊代問題的解答方法 / 131
13.2 黑洞數495 / 131
13.3 角谷猜想 / 133
13.4 求平方根 / 134
課後作業 / 135
第14章 枚舉 / 136
14.1 用枚舉解題的方法 / 136
14.2 韓信點兵 / 136
14.3 完全平方數 / 138
14.4 百雞問題 / 139
課後作業 / 142
遞推與枚舉總結 / 144
知識點總結 / 144
課後作業 / 146
二級綜合練習 / 149
· 三級 ·
第四部分 進制轉換、數據編碼和位運算 / 161
第15章 N進制數與十進制數的轉換 / 162
15.1 二進制數轉十進制數 / 162
15.1.1 整數部分 / 162
15.1.2 小數部分 / 163
15.2 八進制數轉十進制數 / 164
15.3 十六進制數轉十進制數 / 164
15.4 十進制數轉二進制數 / 165
15.4.1 整數部分 / 165
15.4.2 小數部分 / 165
15.5 浮點數的不精確性 / 166
15.6 十進制數轉八進制數和十六進制數 / 167
15.7 任意進制數與十進制數的互轉 / 167
課後作業 / 167
第16章 N進制數之間互轉 / 169
16.1 十六進制數轉二進制數 / 169
16.2 二進制數轉十六進制數 / 169
16.3 八進制與二進制互轉 / 170
16.4 八進制與十六進制互轉 / 170
16.5 不同進制的數的比較 / 170
16.6 用代碼進行進制轉換 / 171
16.7 用進制控制符進行進制轉換 / 175
課後作業 / 175
第17章 數據編碼 / 177
17.1 數據編碼的概念 / 177
17.2 原碼 / 177
17.3 反碼 / 179
17.4 補碼 / 179
17.4.1 從十進制數求補碼的步驟 / 180
17.4.2 從補碼求十進制數的步驟 / 181
17.4.3 二進制常數 / 181
17.5 機器數 / 182
17.6 無符號數 / 182
17.6.1 無符號數的取值範圍 / 182
17.6.2 無符號數的二進制表示 / 182
17.6.3 無符號數與有符號數的轉換 / 183
課後作業 / 184
延伸閱讀:補碼的本質 / 184
第18章 位運算 / 187
18.1 位運算的概念 / 187
18.2 4個“定位”運算符 / 187
18.2.1 “按位與”運算& / 187
18.2.2 “按位或”運算| / 188
18.2.3 “異或”運算^ / 189
18.2.4 “按位非”運算~ / 189
18.2.5 復合形式 / 190
18.3 4個“定位”運算符的特性 / 190
18.3.1 數值的特性 / 190
18.3.2 交換性和結合性 / 191
18.3.3 優先級 / 192
18.4 位運算的應用 / 192
18.4.1 “按位與”運算的應用 / 192
18.4.2 “異或”運算的應用 / 194
18.4.3 “按位非”運算的應用 / 194
課後作業 / 196
第19章 移位運算 / 199
19.1 左移運算<< / 199
19.2 右移運算>> / 200
19.3 復合形式 / 201
19.4 移位運算符的優先級 / 201
19.5 利用位運算實現數據加密 / 203
19.5.1 使用“異或”運算加密 / 203
19.5.2 使用移位運算加密 / 205
課後作業 / 207
進制轉換、數據編碼和位運算總結 / 209
知識點總結 / 209
課後作業 / 213
第五部分 字符串 / 215
第20章 再談一維數組 / 216
20.1 數組的長度 / 216
20.2 數組的初始化 / 216
20.3 數組越界訪問 / 217
20.4 動態獲取數組的長度 / 220
20.5 求數組元素的最值 / 220
20.6 數組應用 / 221
20.6.1 平衡序列 / 221
20.6.2 小格的儲蓄 / 223
課後作業 / 224
延伸閱讀:怎麼求復合條件相反的條件 / 226
第21章 C語言風格的字符串 / 227
21.1 C語言風格的字符串的表示 / 227
21.2 C 語言風格的字符串的長度 / 228
21.3 C語言風格的字符串的輸入 / 230
21.4 C語言風格的字符串函數 / 231
21.4.1 字符串比較函數 / 232
21.4.2 字符串復制函數 / 233
21.4.3 字符串轉整數 / 233
21.4.4 大小寫轉換函數 / 234
課後作業 / 234
第22章 C++風格的字符串 / 236
22.1 定義C++風格的字符串 / 236
22.2 C++風格的字符串的輸入 / 236
22.3 string的函數 / 237
22.3.1 長度函數 / 237
22.3.2 字符串比較 / 237
22.3.3 字符串復制 / 238
22.3.4 字符串拼接 / 238
22.3.5 字符串查找 / 238
22.3.6 字符串替換 / 239
22.3.7 字符串插入 / 239
22.3.8 取子字符串 / 239
22.3.9 用下標訪問字符 / 240
22.4 兩種字符串混合使用 / 241
課後作業 / 242
延伸閱讀:面向對象的編程語言的特性 / 244
第23章 字符串應用 / 245
23.1 字母求和 / 245
23.2 字符串轉整數 / 246
23.3 進制判斷 / 247
23.4 打印數字 / 249
23.5 回文拼接 / 251
23.6 拆分字符串 / 253
課後作業 / 256
字符串總結 / 258
知識點總結 / 258
課後作業 / 259
第六部分 集合、字典和其他 / 263
第24章 集合 / 264
24.1 什麼是集合 / 264
24.2 定義set變量 / 266
24.3 使用set / 266
24.3.1 插入元素 / 266
24.3.2 求元素的個數 / 267
24.3.3 其他函數 / 267
24.3.4 遍歷 set / 269
課後作業 / 269
第25章 字典 / 272
25.1 什麼是字典 / 272
25.2 定義map變量 / 273
25.3 使用map / 274
25.3.1 添加鍵值對 / 274
25.3.2 讀取鍵值 / 274
25.3.3 判斷鍵是否存在 / 275
25.3.4 其他函數 / 276
25.3.5 遍歷 map / 278
課後作業 / 279
第26章 倒推 / 282
26.1 倒推問題的解答方法 / 282
26.2 猴子摘桃子 / 283
26.3 小貓分魚 / 284
26.4 小格存錢 / 287
課後作業 / 288
第27章 算法 / 290
27.1 算法的概念和特征 / 290
27.2 算法的描述 / 291
27.3 算法的優劣 / 292
27.3.1 空間復雜度 / 292
27.3.2 時間復雜度 / 293
27.4 入門算法 / 294
27.4.1 枚舉法 / 294
27.4.2 模擬法 / 294
27.5 基礎算法之遞推法 / 295
27.6 解答編程題的流程 / 295
課後作業 / 299
第28章 函數初探 / 300
28.1 函數的概念 / 300
28.1.1 函數的組成部分 / 300
28.1.2 函數的調用 / 301
28.1.3 參數傳遞 / 302
28.2 定義自己的函數 / 302
28.2.1 閏年判斷 / 303
28.2.2 求三角形的面積 / 304
28.3 實際應用 / 304
28.3.1 單位轉換 / 304
28.3.2 密碼合規檢測 / 307
課後作業 / 309
延伸閱讀:頭文件的本質 / 310
集合、字典和其他總結 / 312
知識點總結 / 312
課後作業 / 314
三級綜合練習 / 317



