內容簡介
《C語言從入門到精通(精粹版)》以零基礎講解為宗旨,用實例引導讀者學習,深入淺出地介紹了C語言的相關知識和實戰技能。
《C語言從入門到精通(精粹版)》第Ⅰ篇【基礎知識】主要講解C語言的基礎知識、C程式的組成、字元集、標識符和關鍵字、變數、數制、數據類型、運算符和表達式、順序結構與選擇結構、循環結構與轉向語句、輸入和輸出、數組以及字元數組等;第Ⅱ篇【算法套用】主要講解算法與流程圖、基礎算法、C世界中的高級算法、數學在程式設計中的套用、算法設計的常用思路以及算法競賽實例等;第Ⅲ篇【核心技術】主要介紹函式、函式中的變數、檔案、庫函式、位運算、結構體和聯合體以及數據結構等;第Ⅳ篇【高級套用】主要介紹指針、指針與數組、指針與函式、指針與字元串、指針與結構體以及指針的高級套用與技巧等;第Ⅴ篇【趣味題解】主要介紹K-均值聚類算法、哥德巴赫猜想、猴子選大王遊戲、迷宮求解、背包問題求解、火車車廂重排、
哈夫曼編碼、
八皇后問題、商人過河遊戲、K階斐波那契序列以及最短路徑等。
《C語言從入門到精通(精粹版)》提供了與圖書內容全程同步的教學錄像。此外,還贈送了大量相關學習資料,以便讀者擴展學習。
《C語言從入門到精通(精粹版)》適合任何想學習C語言的讀者,無論您是否從事計算機相關行業,是否接觸過C語言,均可通過學習快速掌握C語言的開發方法和技巧。
圖書目錄
第0章 學習攻略
0.1 編程的魔力002
0.2 C語言的來源及特點002
0.3 讓計算機開口說話004
0.4 C語言的用途005
0.5 學習C語言的方法005
第 1章 步入C的世界—Hello C
1.1 C語言的開發環境009
1.1.1 C語言常用的開發環境009
1.1.2 VC++開發環境的安裝009
1.1.3 Turbo C 2.0開發環境的安裝012
1.2 認識常用開發環境013
1.2.1 認識VC++開發環境013
1.2.2 認識Turbo開發環境014
1.3 開始C編程—我的第 1個C程式015
1.3.1 程式編寫及運行流程015
1.3.2 在Visual C++ 6.0中開發C程式016
1.3.3 在Turbo C中開發C程式018
1.4 高手點撥020
1.5 實戰練習020
第 2章 C程式的組成
2.1 簡單例子022
2.2 聲明區022
2.2.1 頭檔案022
2.2.2 函式聲明023
2.2.3 變數聲明024
2.3 主函式025
2.4 函式定義區026
2.5 注釋026
2.6 代碼的規矩027
2.7 高手點撥027
2.8 實戰練習028
第3章 C語言的基本構成元素—字元集、標識符和關鍵字
3.1 標識符和關鍵字030
3.1.1 標識符030
3.1.2 關鍵字030
3.2 常量030
3.2.1 什麼是常量030
3.2.2 常量的聲明032
3.3 常量的類別032
3.3.1 數值常量032
3.3.2 字元常量033
3.3.4 符號常量034
3.4 綜合套用—常量指針與指針常量036
3.5 高手點撥036
3.6 實戰練習037
第4章 變數
4.1 變數040
4.1.1 什麼是變數040
4.1.2 變數的定義與聲明041
4.2 變數的類別041
4.2.1 局部變數041
4.2.2 形式參數042
4.2.3 全局變數043
4.3 變數的存儲類型045
4.3.1 自動變數045
4.3.2 靜態變數045
4.3.3 外部變數046
4.3.4 暫存器變數047
4.4 變數的賦值和初始化048
4.5 綜合套用—根據變數的不同決定運行的結果050
4.6 高手點撥052
4.7 實戰練習052
第5章 計算機如何識數—數制
5.1 二進制054
5.2 八進制055
5.3 十進制055
5.4 十六進制055
5.5 數制間的轉換056
5.6 綜合套用—數制轉換057
5.7 高手點撥057
5.8 實戰練習058
第6章 數據的種類—數據類型
6.1 數據類型的分類060
6.1.1 基本數據類型060
6.1.2 構造數據類型060
6.1.3 指針數據類型060
6.1.4 空類型061
6.2 整型061
6.3 字元型063
6.4 浮點型065
6.5 類型轉換067
6.5.1 隱式轉換067
6.5.2 顯式轉換069
6.6 綜合套用—類型轉換070
6.7 高手點撥070
6.8 實戰練習071
第7章 C世界中的加減乘除—運算符和表達式
7.1 C中的運算符和表達式074
7.1.1 運算符074
7.1.2 表達式074
7.2.1 算術運算符075
7.2.2 算術表達式075
7.2.3 套用舉例075
7.3.1 關係運算符077
7.3.2 關係表達式077
7.3.3 套用舉例077
7.4.1 邏輯運算符078
7.4.2 邏輯表達式079
7.4.3 套用舉例079
7.6.1 賦值運算符082
7.6.2 賦值表達式082
7.6.3 套用舉例083
7.7 自增、自減運算符084
7.9 位運算符086
7.9.1 按位與運算符086
7.9.2 按位或運算符087
7.9.3 按位異或運算符087
7.9.4 按位取反運算符088
7.9.8 位運算套用090
7.10 優先權與結合性093
7.10.4 賦值運算符的優先權與結合性094
7.11 綜合套用—根據輸入值計算結果094
7.12 高手點撥095
7.13 實戰練習095
第8章 順序結構與選擇結構
8.1 程式流程概述098
8.2 語句098
8.2.1 基本賦值語句098
8.2.2 表達式語句099
8.2.3 基本輸入/輸出語句099
8.2.4 控制語句101
8.2.5 空語句和複合語句101
8.3 順序結構與語句102
8.4 選擇結構103
8.4.1 選擇結構103
8.4.2 單分支選擇結構—if語句103
8.4.3 雙分支選擇結構—if-else語句106
8.4.4 多分支選擇結構—if-else的嵌套形式107
8.4.5 多分支選擇結構—switch語句111
8.5 綜合套用—根據不同的利潤計算獎金113
8.6 高手點撥114
8.7 實戰練習115
第9章 C程式的流程—循環結構與轉向語句
9.1 循環結構與語句118
9.1.1 循環結構118
9.1.2 當型循環語句—for語句119
9.1.3 當型循環語句—while語句122
9.1.4 直到型循環語句—do-while語句123
9.1.5 循環的嵌套125
9.2 轉向語句128
9.2.3 continue語句131
9.3 綜合套用—簡單計算器132
9.4 高手點撥134
9.5 實戰練習134
第 10章 用戶與計算機的互動—輸入和輸出
10.1 標準輸入/輸出136
10.2 格式化輸入/輸出136
10.2.1 格式化輸出函式—printf()136
10.2.2 格式控制字元138
10.2.3 格式化輸入函式—scanf()142
10.3 字元輸入/輸出144
10.3.1 字元輸出函式—putchar()144
10.3.2 字元輸入函式—getchar()146
10.4 字元串輸入/輸出146
10.4.1 字元串輸出函式—puts()146
10.4.2 字元串輸入函式—gets()147
10.5 高手點撥148
10.6 實戰練習148
第 11章 數組
11.1 數組概述152
11.2 一維數組152
11.2.1 一維數組的定義152
11.2.2 一維數組的初始化155
11.2.3 一維數組元素的操作156
11.2.4 數組作為參數傳遞158
11.2.5 一維數組的套用舉例160
11.3 二維數組162
11.3.1 二維數組的定義162
11.3.2 二維數組的初始化163
11.3.3 二維數組元素的操作163
11.3.4 二維數組的套用舉例164
11.4 多維數組165
11.5 綜合套用—楊輝三角166
11.6 高手點撥167
11.7 實戰練習168
第 12章 字元數組
12.1 字元數組概述170
12.2 字元數組170
12.2.1 字元數組的初始化170
12.2.2 字元數組的引用170
12.2.3 字元數組的輸入與輸出171
12.3 字元串172
12.3.1 字元串和字元數組172
12.3.2 字元串的輸入/輸出174
12.3.3 字元串套用舉例175
12.4 綜合套用—自動分類字元177
12.5 高手點撥178
12.6 實戰練習179
第 13章 程式的靈魂—算法與流程圖
13.1 算法基礎183
13.1.1 算法的概念183
13.1.2 算法的特性183
13.1.3 簡單算法舉例—解方程184
13.2 流程圖的基礎185
13.2.1 流程圖中的元素及含義185
13.2.2 流程圖的繪製186
13.3 如何表示一個算法188
13.3.1 用自然語言表示算法188
13.3.2 用流程圖表示算法190
13.3.3 用傳統流程圖表示3種基本結構192
13.3.4 用N-S圖表示算法193
13.3.5 用偽代碼表示算法195
13.3.6 用計算機語言表示算法195
13.5 綜合套用—求解一元二次方程197
13.6 高手點撥199
13.7 實戰練習200
第 14章 基礎算法
14.1 排序算法202
14.1.1 桶排序法202
14.2 棧、佇列、鍊表算法206
14.2.1 佇列206
14.2.2 棧209
14.2.3 鍊表211
14.2.4 模擬鍊表216
14.3 枚舉算法218
14.4 搜尋算法220
14.4.1 深度優先搜尋220
14.4.2 廣度最佳化搜尋220
14.5 圖的遍歷算法221
14.5.1 深度和廣度的區別221
14.5.2 圖的深度最佳化遍歷221
14.5.3 圖的廣度最佳化遍歷223
14.6 綜合套用—寶島探險225
14.7 高手點撥227
14.8 實戰練習228
第 15章 C世界中的高級算法
15.1 模擬算法230
15.2 簡單動態規劃231
15.3 用遞歸實現回溯算法233
15.4 最短路徑算法236
15.4.1 只有五行的算法—Floyd-Warshall236
15.4.2 Dijkstra 算法—單源最短邊237
15.4.3 Bellman-Ford—解決負權邊237
15.4.4 Bellman-Ford的佇列最佳化238
15.4.5 最短路徑算法對比分析238
15.5 樹算法240
15.5.2 堆算法241
15.5.3 並查集241
15.6 綜合套用—鏢局運鏢243
15.7 高手點撥245
15.8 實戰練習246
第 16章 數學在程式設計中的套用
16.1 常用數學函式248
16.4 加法原理與乘法原理252
16.5 排列與組合253
16.6 綜合套用—圓排列、可重集排列254
16.7 高手點撥255
16.8 實戰練習256
第 17章 算法設計的常用思路
17.1 分治算法258
17.3 貪心算法261
17.4 回溯算法263
17.5 高手點撥265
17.6 實戰練習265
第 18章 算法競賽實例
18.1 衡量程式質量的標準268
18.2 Hilbert曲線269
18.3 驗證四色問題271
18.4 n女王問題273
18.5 跳馬問題274
18.6 生成全部排列及其套用276
18.7 貪吃蛇遊戲278
18.8 快速排序283
18.9 幻方284
18.10 高精度計算288
18.11 高手點撥289
18.12 實戰練習290
第 19章 函式
19.1 函式概述293
19.1.1 什麼是函式293
19.1.2 函式的分類294
19.2 函式的定義294
19.3 函式的返回值及類型297
19.3.1 函式的返回值297
19.3.2 函式的類型298
19.4 函式的參數及傳遞方式300
19.4.1 函式的參數301
19.4.2 函式參數的傳遞方式302
19.5 函式的調用303
19.5.1 函式調用方式304
19.5.2 函式的聲明305
19.5.3 函式的嵌套調用307
19.5.4 函式的遞歸調用308
19.6 內部函式和外部函式312
19.6.1 內部函式312
19.6.2 外部函式313
19.7 main()函式314
19.8 綜合套用—用截弦法求方程的根315
19.9 高手點撥316
19.10 實戰練習318
第 20章 函式中的變數
20.1 局部變數與全局變數320
20.1.1 局部變數320
20.1.2 全局變數321
20.2 變數的存儲類別323
20.2.1 自動類型(auto)324
20.2.2 暫存器類型(register)324
20.2.3 靜態類型(static)325
20.2.4 外部類型(extern)327
20.3 綜合套用—日期判斷328
20.4 高手點撥329
20.5 實戰練習330
第 21章 檔案
21.1 檔案概述332
21.1.1 檔案類型332
21.1.2 C如何操作檔案—檔案指針332
21.1.3 檔案緩衝區333
21.2 檔案的打開和關閉333
21.2.1 檔案的打開—fopen()函式333
21.2.2 檔案的關閉—fclose()函式334
21.2.3 檔案結束檢測—feof()函式335
21.3 檔案的順序讀寫335
21.3.1 文本檔案中字元的輸入/輸出335
21.3.2 文本檔案中字元串的輸入/輸出337
21.3.3 格式化輸入/輸出339
21.3.4 二進制檔案的輸入/輸出—數據塊讀寫340
21.4 檔案的隨機讀寫342
21.5 綜合套用—檔案操作343
21.6 高手點撥345
21.7 實戰練習346
第 22章 庫函式概覽
22.1 標準C庫函式348
22.2 數學函式348
22.2.2 冪函式和開平方函式349
22.2.3 指數函式和對數函式350
22.2.4 三角函式350
22.2.5 取整函式和取余函式350
22.3 字元串處理函式351
22.3.1 字元串長度函式351
22.3.2 字元串連線函式352
22.3.3 字元串複製函式353
22.3.4 字元串比較函式353
22.3.5 字元串查找函式354
22.3.6 字元串填充函式355
22.4 字元處理函式356
22.4.1 字元類型判斷函式356
22.4.2 字元大小寫轉換函式357
22.5 轉換和存儲管理函式358
22.5.1 轉換函式358
22.5.2 存儲管理函式359
22.6 隨機函式360
22.6.1 初識隨機函式360
22.6.2 使用隨機函式361
22.7 日期和時間處理函式362
22.8 診斷函式363
22.10 其他函式365
22.10.1 exit()函式366
22.10.2 qsort()函式366
22.11 綜合套用—猜數字遊戲367
22.12 高手點撥369
22.13 實戰練習370
第 23章 合理利用記憶體—位運算
23.1 二進制數372
23.1.1 二進制372
23.1.2 無符號數和有符號數372
23.2 位運算符372
23.2.1 按位與運算符373
23.2.2 按位或運算符373
23.2.3 按位異或運算符374
23.2.4 按位取反運算符375
23.2.7 位運算賦值運算符376
23.2.8 位運算套用377
23.3 位域379
23.4 綜合套用—數制轉換380
23.5 高手點撥381
23.6 實戰練習382
第 24章 結構體和聯合體
24.1 結構體384
24.1.2 定義結構體變數385
24.1.3 初始化結構體變數386
24.1.4 結構體變數的引用387
24.2 結構體數組388
24.2.1 定義結構體數組388
24.2.2 初始化結構體數組390
24.2.3 結構體數組元素的引用390
24.3 結構體與函式392
24.3.1 結構體作為函式的參數392
24.3.2 結構體作為函式的返回值394
24.4 聯合體395
24.4.1 聯合體類型395
24.4.2 聯合體變數的定義396
24.4.3 聯合體變數的初始化397
24.4.4 聯合體變數的引用399
24.5 結構體和聯合體的區別與聯繫400
24.6 綜合套用—計算學生成績400
24.7 高手點撥402
24.8 實戰練習403
第 25章 數據管理者—數據結構
25.1 數據結構概述406
25.2 線性表406
25.2.1 順序表407
25.2.2 單鍊表410
25.3 棧416
25.3.1 棧的基本運算416
25.3.2 順序棧的類型定義417
25.3.3 鏈式棧的類型定義417
25.4 佇列417
25.4.1 佇列的基本運算418
25.4.2 順序佇列類型定義418
25.4.3 鏈佇列類型定義419
25.5 二叉樹419
25.6 查找420
25.6.1 順序查找420
25.6.2 折半查找422
25.7 排序423
25.8 綜合套用—鍊表的反轉427
25.9 高手點撥430
25.10 實戰練習439
第 26章 記憶體的捷徑—指針
26.1 指針概述443
26.1.1 指針的類型443
26.1.2 指針所指向的類型443
26.1.3 指針的值443
26.1.4 指針所占記憶體443
26.2 指針的算術運算444
26.2.1 指針與整數的運算444
26.2.2 指針與指針的運算445
26.3 運算符&和*446
26.4 指針表達式447
26.5 綜合套用—使用指針進行排序448
26.6 高手點撥449
26.7 實戰練習450
第 27章 指針與數組
27.1 數組指針452
27.2 數組指針作為函式參數452
27.3 指針與字元數組453
27.4 指針數組與指針的指針454
27.5 綜合套用—報數遊戲456
27.6 高手點撥457
27.7 實戰練習457
第 28章 指針與函式
28.1 函式指針460
28.1.1 函式指針的定義460
28.1.2 函式指針的賦值461
28.1.3 通過函式指針調用函式461
28.2 指針函式462
28.3 指向函式的指針作為函式參數463
28.4 綜合套用—日期的輸出465
28.5 高手點撥466
28.6 實戰練習466
第 29章 指針與字元串
29.1 字元串指針468
29.1.1 創建字元串468
29.1.2 處理字元串469
29.1.3 輸出字元串472
29.2 字元串指針作為函式參數472
29.3 字元指針變數與字元數組的區別474
29.4 綜合套用—“回文”問題474
29.5 實戰練習476
第30章 指針與結構體
30.1 結構體指針478
30.1.1 定義結構體指針478
30.1.2 初始化結構體指針478
30.1.3 使用指針訪問成員478
30.1.4 給結構體指針賦值479
30.2 指向結構體變數的指針480
30.3 指向結構體數組的指針481
30.4 綜合套用—創建簡單鍊表482
30.5 高手點撥484
30.6 實戰練習484
第31章 指針的高級套用與技巧
31.1 指向指針的指針486
31.2 void操作487
31.3 記憶體操作489
31.4 指針的傳遞491
31.5 綜合套用—數值的降序排列492
31.6 高手點撥493
31.7 實戰練習494
第32章 K-均值聚類算法
32.1 問題描述497
32.2 問題分析及實現497
32.2.1 問題分析497
32.2.2 問題實現497
32.2.3 程式運行499
32.3 開發過程常見問題及解決500
第33章 哥德巴赫猜想
33.1 問題描述502
33.2 問題分析及實現502
33.2.1 問題分析502
33.2.2 問題實現502
33.2.3 程式運行504
33.3 開發過程常見問題及解決504
第34章 猴子選大王遊戲
34.1 問題描述506
34.2 問題分析及實現506
34.2.1 問題分析506
34.2.2 問題實現506
34.2.3 程式運行507
34.3 開發過程常見問題及解決508
第35章 迷宮求解
35.1 問題描述510
35.2 問題分析及實現510
35.2.1 問題分析510
35.2.2 問題實現510
35.2.3 程式運行513
35.3 開發過程常見問題及解決514
第36章 背包問題求解
36.1 問題描述516
36.2 問題分析及實現516
36.2.1 問題分析516
36.2.2 問題實現516
36.2.3 程式運行518
36.3 開發過程常見問題及解決518
第37章 火車車廂重排
37.1 問題描述520
37.2 問題分析及實現520
37.2.1 問題分析520
37.2.2 問題實現520
37.2.3 程式運行522
37.3 開發過程常見問題及解決522
38.1 問題描述524
38.2 問題分析及實現524
38.2.1 問題分析524
38.2.2 問題實現524
38.2.3 程式運行526
38.3 開發過程常見問題及解決526
39.1 問題描述528
39.2 問題分析及實現528
39.2.1 問題分析528
39.2.2 問題實現528
39.2.3 程式運行530
39.3 開發過程常見問題及解決530
第40章 商人過河遊戲
40.1 問題描述532
40.2 問題分析及實現532
40.2.1 問題分析532
40.2.2 問題實現532
40.2.3 程式運行535
40.3 開發過程常見問題及解決536
第41章 K階斐波那契序列的實現
41.1 問題描述538
41.2 問題分析及實現538
41.2.1 問題分析538
41.2.2 問題實現538
41.2.3 程式運行539
41.3 開發過程常見問題及解決540
第42章 最短路徑的實現
42.1 問題描述542
42.2 問題分析及實現542
42.2.1 問題分析542
42.2.2 問題實現542
42.2.3 程式運行543
42.3 開發過程常見問題及解決544