全書共15章,分為3篇。第1篇為程式的基石——數據,介紹了C語言的概況及其處理的數據的種類,包括整型、實型和字元型等;第2篇為程式的本質——處理數據,介紹了C語言提供的處理數據的各種方法,包括運算符、表達式、語句及其結構等;第3篇為處理大量數據,介紹了C語言提供的對於大量數據的高級處理方法,包括數組、指針、結構和檔案操作等。
基本介紹
- 書名:明明白白學通C語言(二維碼版)
- 作者:唐峻、高旭光、李淳
- ISBN:9787302395744
- 類別:計算機
- 定價:69.8元
- 出版社:清華大學出版社
- 出版時間:2015.06.01
- 裝幀:平裝
- 開本:16開
主要內容,目 錄,第1篇 程式的基石——數據,第2篇 程式的本質——處理數據,第3篇 處理大量數據,
主要內容
本書是一本與眾不同的C語言圖書,全書以全新的模式來分析和講解C語言,以期帶給讀者不同的編程學習體驗。本書創造性地將智慧型手機巧妙地套用到了C語言的學習中,而且還以二維碼的方式提供了書中的示例代碼和習題答案,便於讀者可以隨時隨地拿出手機進行C語言的學習和編程訓練。另外,本書遵循記憶曲線,每節都安排了練習題,讀者可以隨學隨練,從而以最少的時間快速掌握所學的內容。

全書共15章,分為3篇。第1篇為程式的基石——數據,介紹了C語言的概況及其處理的數據的種類,包括整型、實型和字元型等;第2篇為程式的本質——處理數據,介紹了C語言提供的處理數據的各種方法,包括運算符、表達式、語句及其結構等;第3篇為處理大量數據,介紹了C語言提供的對於大量數據的高級處理方法,包括數組、指針、結構和檔案操作等。
本書非常適合年輕的群體閱讀,書中每個知識點的講解都是非常簡單明了,讀者只要認真閱讀,定能明白編程的種種奧秘。本書也適合忘性大的讀者閱讀,因為每節都安排了練習題,當讀者動手操作完這些練習題後,也肯定就記住了該節的知識點。另外,本書也是一本不需要死記硬背的C語言圖書,書中將每個知識點為什麼出現,解決什麼問題,如何解決,都清晰地展現了出來。綜上所述,本書的確可以讓讀者明明白白學通C語言。
目 錄
第1篇 程式的基石——數據
第1章 C語言概述 2
1.0 寫在最前面的——如何使用本書 2
1.1 語言 3
1.1.1 “語言”的定義 3
1.1.2 計算機語言發展歷程 4
1.1.3 C語言 4
1.2 編程方法 5
1.2.1 數據處理示例 5
1.2.2 第一步:分析問題 5
1.2.3 第二步:構想實現方法 5
1.2.4 第三步:編寫程式代碼 6
1.3 開發環境 7
1.3.1 電腦上的開發環境 7
1.3.2 手機上的開發環境 10
1.4 編寫第一個C語言的程式 10
1.4.1 在電腦上編寫第一個程式 11
1.4.2 在手機上編寫第一個程式 15
1.5 EGE——簡易圖形庫 16
1.6 如何學習C語言 17
1.6.1 技巧一:多看、多想、多練習 17
1.6.2 技巧二:多溝通、多擴展視野 18
1.7 小結 19
第2章 數據的表示 20
2.1 計算機中的數據表示 20
2.1.1 二進制 20
2.1.2 整數 21
2.1.3 小數 22
2.1.4 文本 24
2.1.5 練習 26
2.2 程式中的數據表示 26
2.2.1 整數 26
2.2.2 小數 30
2.2.3 文本 31
2.2.4 練習 33
2.3 數據的分類——數據類型 34
2.3.1 整數類型 34
2.3.2 浮點類型 35
2.3.3 字元類型 37
2.4 小結 37
2.5 習題 37
第3章 指代數據 39
3.1 為什麼要指代數據 39
3.1.1 變化的數據 39
3.1.2 未知的數據 40
3.2 指代的名稱 40
3.2.1 名稱的命名規範 40
3.2.2 不能使用的名稱——關鍵字 41
3.3 讓名稱更有效——見名知意 41
3.3.1 不使用拼音命名 41
3.3.2 英文命名方式 42
3.4 指代數據需要考慮的問題 43
3.4.1 範圍 43
3.4.2 精度 43
3.5 程式中的指代 44
3.5.1 從問題中找到需要指代的數據 44
3.5.2 如何在程式中指代 45
3.6 特殊的指代——不變的量 46
3.6.1 為什麼要指代不變的量 46
3.6.2 常數 47
3.6.3 常量 47
3.7 小結 48
3.8 習題 48
第2篇 程式的本質——處理數據
第4章 運算符和表達式 52
4.1 關聯變數和數據 52
4.1.1 引入“=” 52
4.1.2 變數的初始化 53
4.1.3 表達式 54
4.1.4 類型匹配 54
4.1.5 練習 57
4.2 運算符一覽 57
4.3 算術運算符 58
4.3.1 概述 58
4.3.2 除法“/” 61
4.3.3 取余“%” 62
4.3.4 練習 64
4.4 複合運算符 64
4.4.1 概述 64
4.4.2 複合運算符出現的意義 65
4.4.3 優先權 65
4.4.4 練習 66
4.5 自增自減運算符 66
4.5.1 概述 66
4.5.2 自增自減運算符出現的意義 67
4.5.3 優先權 68
4.5.4 練習 69
4.6 小結 69
4.7 習題 69
第5章 語句 70
5.1 輸入輸出I/O 70
5.1.1 格式化輸入scanf() 70
5.1.2 scanf()的使用說明 71
5.1.3 其他輸入方式 76
5.1.4 格式化輸出printf() 77
5.1.5 printf()的使用說明 79
5.1.6 其他輸出方式 81
5.1.7 練習 83
5.2 常見語句 85
5.2.1 賦值語句 85
5.2.2 空語句 85
5.2.3 複合語句 86
5.3 變數的作用域 86
5.3.1 局部變數 87
5.3.2 全局變數 88
5.3.3 練習 89
5.4 語句執行順序 89
5.4.1 代碼手段 89
5.4.2 工具手段 91
5.4.3 流程圖 93
5.5 小結 93
5.6 習題 94
第6章 選擇結構 95
6.1 順序執行遇到的麻煩 95
6.1.1 順序執行的程式 95
6.1.2 無法順序執行 96
6.1.3 構想解決方案 97
6.2 條件判斷依據 97
6.3 構建單一條件 98
6.3.1 關係運算 98
6.3.2 左右運算元類型不一致 99
6.3.3 關係運算符優先權 100
6.3.4 練習 102
6.4 構建多個條件 102
6.4.1 邏輯運算 102
6.4.2 邏輯運算符優先權 104
6.4.3 短路的邏輯運算符 105
6.4.4 練習 106
6.5 構建選擇路徑之if 107
6.5.1 流程圖 107
6.5.2 if結構 107
6.5.3 if-else結構 110
6.5.4 if嵌套結構 112
6.5.5 練習 121
6.6 構建選擇路徑之switch 122
6.6.1 switch結構 122
6.6.2 比較if結構和switch結構 127
6.6.3 練習 129
6.7 小結 130
6.8 習題 130
第7章 循環結構 132
7.1 重複執行的語句 132
7.1.1 什麼是重複執行 132
7.1.2 執行2~3次 133
7.1.3 執行有限次 133
7.1.4 執行不確定次 134
7.2 for循環 135
7.2.1 概述 135
7.2.2 逗號表達式 136
7.2.3 循環執行相同的語句 137
7.2.4 循環執行類似的語句 139
7.2.5 練習 142
7.3 其他循環 144
7.3.1 while循環 144
7.3.2 do-while循環 146
7.3.3 不同循環機制間的比較 147
7.3.4 練習 150
7.4 跳出循環 152
7.4.1 continue語句 152
7.4.2 break語句 154
7.4.3 goto語句 157
7.4.4 練習 160
7.5 循環中的循環——嵌套 161
7.5.1 嵌套實例一 161
7.5.2 嵌套實例二 164
7.5.3 嵌套實例三 166
7.5.4 練習 167
7.6 小結 167
7.7 習題 168
第8章 函式 172
8.1 循環無法解決的重複 172
8.1.1 循環的經典套用和局限 172
8.1.2 循環結構無法解決的重複問題 173
8.1.3 練習 174
8.2 完全重複——無參函式 175
8.2.1 定義無參函式 175
8.2.2 函式的返回值 176
8.2.3 使用無參函式 176
8.2.4 返回值的類型轉換 177
8.2.5 函式多return語句處理 179
8.2.6 聲明無參函式 180
8.2.7 函式體中的變數 181
8.2.8 練習 183
8.3 不完全重複——有參函式 186
8.3.1 定義有參函式 186
8.3.2 聲明有參函式 188
8.3.3 練習 190
8.4 函式體中有函式 192
8.4.1 調用其他函式——嵌套函式 192
8.4.2 調用函式本身——遞歸函式 195
8.4.3 練習 203
8.5 庫函式 205
8.5.1 如何使用庫函式 205
8.5.2 檔案包含的擴展套用 206
8.5.3 兩種包含方式的不同 207
8.5.4 分類 209
8.5.5 庫函式套用示例——猜大小 210
8.5.6 練習 214
8.6 小結 215
8.7 習題 215
第3篇 處理大量數據
第9章 同類型數據的集合——數組 222
9.1 大量數據的處理 222
9.2 基本數組 223
9.2.1 定義數組 223
9.2.2 使用數組 225
9.2.3 初始化數組 225
9.2.4 為數組賦值 227
9.2.5 數組的簡單套用 228
9.3 數組排序 232
9.3.1 冒泡排序 232
9.3.2 選擇排序 235
9.3.3 練習 238
9.4 二維數組 240
9.4.1 二維數組的本質——嵌套的數組 240
9.4.2 定義二維數組 241
9.4.3 使用二維數組 242
9.4.4 初始化二維數組 242
9.4.5 特殊的初始化方式 243
9.4.6 為二維數組賦值 244
9.4.7 二維數組的套用 244
9.4.8 練習 246
9.5 多維數組 247
9.6 小結 249
9.7 習題 249
第10章 指針 252
10.1 指針及其使用 252
10.1.1 指針是什麼 252
10.1.2 定義指針變數 252
10.1.3 為指針變數賦值 254
10.1.4 通過指針訪問數據 255
10.1.5 使用scanf()給指針賦值 256
10.1.6 練習 257
10.2 處理所指向的數據 258
10.2.1 四則運算 258
10.2.2 自增自減運算 258
10.2.3 指向常量的指針 259
10.2.4 定義指針為常量 260
10.3 指向一維數組的指針 262
10.3.1 為指針賦數組數據的地址 262
10.3.2 使用數組名為指針賦值 263
10.3.3 指向數組的指針的加減運算 264
10.3.4 指向同一數組的指針 264
10.3.5 指向二維數組的指針 266
10.4 保存指針的數組 269
10.4.1 定義指針數組 269
10.4.2 二維數組的特性 270
10.4.3 練習 271
10.5 指針在函式中的套用 273
10.5.1 指針作為函式參數 274
10.5.2 指針作為函式返回值 276
10.5.3 指向函式的指針 278
10.5.4 練習 281
10.6 二級指針 284
10.6.1 概述 285
10.6.2 在二維數組中的套用 286
10.6.3 練習 287
10.7 小結 288
10.8 習題 288
第11章 結構 292
11.1 結構概述 292
11.1.1 為什麼要有結構 292
11.1.2 結構的構造及其變數的賦值 294
11.1.3 使用typedef簡化結構類型名 297
11.1.4 練習 298
11.2 結構的使用 300
11.2.1 結構與指針 300
11.2.2 結構與數組 303
11.2.3 結構與函式 305
11.2.4 練習 308
11.3 結構的套用——鍊表 311
11.3.1 結構的成員是指向本結構的指針 312
11.3.2 數組與鍊表 314
11.3.3 鍊表概述 316
11.3.4 創建動態鍊表 317
11.3.5 練習 324
11.4 鍊表操作 327
11.4.1 插入結點到鍊表 327
11.4.2 刪除鍊表中的結點 336
11.4.3 鍊表操作綜合套用 341
11.4.4 練習 349
11.5 小結 354
11.6 習題 354
第12章 聯合與枚舉 356
12.1 結構遇到的困擾 356
12.1.1 引起困惑的小示例 356
12.1.2 困惑什麼 357
12.1.3 構想的解決方案 358
12.2 聯合概述 358
12.2.1 構造聯合類型 358
12.2.2 定義联合類型的變數 359
12.2.3 引用聯合類型變數成員 360
12.2.4 聯合類型變數的賦值 360
12.2.5 練習 361
12.3 聯合類型變數的特殊性 361
12.3.1 通過示例來發現 362
12.3.2 數據去哪兒了 362
12.3.3 看似不相干的成員變數 362
12.3.4 總結:聯合類型變數的特殊性 363
12.3.5 解決結構遇到的困惑 364
12.3.6 練習 368
12.4 聯合類型變數的簡單使用 369
12.4.1 使用於函式的聯合類型變數 369
12.4.2 指向聯合類型變數的指針 371
12.5 枚舉 372
12.5.1 枚舉概述 373
12.5.2 枚舉類型的使用 375
12.5.3 枚舉類型套用 378
12.5.4 練習 382
12.6 小結 382
12.7 習題 383
第13章 字元串 387
13.1 概述 387
13.1.1 了解字元串 387
13.1.2 字元串數據的存儲 387
13.1.3 字元串的賦值 389
13.1.4 練習 390
13.2 字元串的輸出和輸入 391
13.2.1 字元串的輸出 391
13.2.2 字元串的輸入 392
13.2.3 練習 394
13.3 指向字元串的指針 396
13.3.1 指針操作 396
13.3.2 二維字元數組與字元指針數組 398
13.3.3 main()的參數 399
13.3.4 練習 404
13.4 常見的字元串操作 405
13.4.1 “賦值” 405
13.4.2 “加法” 406
13.4.3 修改 407
13.4.4 “比較” 408
13.4.5 其他操作 410
13.4.6 練習 415
13.5 小結 420
13.6 習題 420
第14章 檔案 422
14.1 兩個亟待解決的問題 422
14.1.1 不得不再次運行程式 422
14.1.2 不得不重新輸入數據 423
14.2 檔案概述 424
14.2.1 檔案 424
14.2.2 存儲為檔案的數據形式 425
14.2.3 程式讀寫檔案數據的過程 425
14.3 檔案的打開和關閉 427
14.3.1 操作檔案前的準備 427
14.3.2 打開檔案 428
14.3.3 關閉檔案 432
14.3.4 練習 433
14.4 檔案讀寫操作 435
14.4.1 必備基礎知識 435
14.4.2 寫入數據 436
14.4.3 讀取數據 442
14.4.4 解決問題一:避免再次運行程式 449
14.4.5 練習 450
14.5 輔助功能 452
14.5.1 位置指針重定位 452
14.5.2 檢測檔案操作狀態 457
14.5.3 解決問題二:避免重新輸入數據 460
14.5.4 練習 465
14.6 二進制檔案的位操作 468
14.6.1 位操作需求 468
14.6.2 實現位操作的方法——位運算 470
14.6.3 位運算符的使用方法 471
14.6.4 位操作實現 478
14.6.5 練習 483
14.7 小結 485
14.8 習題 485
第15章 預編譯 490
15.1 概述 490
15.1.1 預編譯指令 490
15.1.2 練習 490
15.2 宏 491
15.2.1 為什麼需要宏 491
15.2.2 不帶參數的宏 492
15.2.3 帶參數的宏 496
15.2.4 取消宏 499
15.2.5 標準宏對象 499
15.2.6 練習 500
15.3 條件編譯 502
15.3.1 為什麼需要條件編譯 502
15.3.2 #if指令 503
15.3.3 #ifdef指令 504
15.3.4 #ifndef指令 505
15.3.5 練習 505
15.4 檔案包含 506
15.4.1 概述 506
15.4.2 定義自己的庫函式 507
15.4.3 總結 512
15.5 小結 512
15.6 習題 51