內容簡介
本書全面、系統地介紹了C語言的基礎知識,以及如何使用C語言進行程式開發。書中的內容涉及面廣,從基本操作到進階技巧和高級技術,再到項目開發,幾乎涉及C語言開發過程中的所有重要知識。本書講解時提供了大量的實例,供讀者實戰演練。另外,本書附贈15小時高品質同步教學視頻,對書中的重點和難點內容做了詳細講解,便於讀者更加高效、直觀地學習。該視頻錄音清晰,畫面清楚,講解到位,可以讓讀者感受身臨實際教學課堂,聆聽老師講解的教學效果。全書共21章,分為3篇。第1篇為C語言基礎知識,涉及的主要內容有C語言概述、C語言與算法、函式、常量、基本數據類型、運算符、表達式、變數、流程控制、數組、指針、構造數據類型和預處理命令等。第2篇為C語言進階技巧,涉及的主要內容有字元及字元串處理、記憶體處理、檔案處
圖書目錄
第1篇 C語言基礎知識
第1章 C語言概述( 教學視頻:35分鐘) 2
1.1 關於程式設計 2
1.1.1 了解程式設計 2
1.1.2 了解計算機語言 3
1.1.3 計算機語言的分類 3
1.2 C語言概述 5
1.2.1 C語言的歷史發展 5
1.2.2 C語言的基本特點 6
1.3 C語言的開發環境 7
1.3.1 編輯器、編譯器和連結器 7
1.3.2 集成開發環境 7
1.4 Turbo C的使用 7
1.5 Microsoft Visual C++ 6.0的使用 11
1.6 Hello World程式 16
1.7 A+B程式 17
1.8 程式錯誤和調試 18
1.9 小結 20
1.10 習題 20
第2章 C語言與算法( 教學視頻:39分鐘) 22
2.1 算法的基本概念 22
2.1.1 算法基礎 22
2.1.2 算法特性 23
2.1.3 算法的使用舉例 23
2.2 算法描述 25
2.2.1 自然語言 25
2.2.2 流程圖 25
2.2.3 3種基本結構 26
2.2.4 N-S流程圖 28
2.2.5 偽代碼 29
2.3 小結 30
2.4 習題 30
第3章 C語言的構成——函式( 教學視頻:69分鐘) 31
3.1 函式概述 31
3.1.1 庫函式 31
3.1.2 自定義函式 32
3.2 函式的定義和調用 34
3.2.1 簡單函式的定義 35
3.2.2 簡單函式的調用 37
3.3 函式的參數 40
3.3.1 帶參數的函式定義 40
3.3.2 帶參數的函式調用 40
3.3.3 形式參數與實際參數 44
3.4 函式的返回值 46
3.4.1 帶返回值的函式定義 46
3.4.2 帶返回值的函式調用 48
3.5 開發實踐 49
3.6 小結 52
3.7 習題 52
第4章 常量、基本數據類型、運算符和表達式( 教學視頻:61分鐘) 58
4.1 常量與變數 58
4.1.1 常量與符號常量 59
4.1.2 變數 60
4.2 數據類型 61
4.2.1 整型數據 61
4.2.2 實型數據 69
4.2.3 字元型數據 73
4.2.4 枚舉型數據 80
4.2.5 基本類型數據的輸入和輸出函式(scanf()/printf()) 83
4.3 運算符和表達式 91
4.3.1 算數運算符和表達式 92
4.3.2 賦值運算符和表達式 94
4.3.3 關係運算符和表達式 97
4.3.4 邏輯運算符和表達式 98
4.3.5 條件運算符和表達式 99
4.3.6 逗號運算符和表達式 100
4.4 數據類型轉換 101
4.4.1 隱式類型轉換 101
4.4.2 強制類型轉換 104
4.5 小結 104
4.6 習題 105
第5章 變數( 教學視頻:35分鐘) 113
5.1 變數的定義與使用 113
5.1.1 變數的定義和賦值 113
5.1.2 變數的命名規範 115
5.2 變數的作用範圍 115
5.2.1 局部變數 116
5.2.2 全局變數 116
5.3 變數的存儲類型 118
5.3.1 變數的3個屬性 119
5.3.2 自動變數 123
5.3.3 暫存器變數 124
5.3.4 具有代碼塊作用域的靜態變數 125
5.3.5 具有外部連結的靜態變數 126
5.3.6 具有內部連結的靜態變數 130
5.3.7 存儲類型說明符 131
5.4 開發實踐 131
5.5 小結 133
5.6 習題 133
第6章 流程控制( 教學視頻:70分鐘) 135
6.1 C語句概述 135
6.2 順序結構程式 137
6.3 選擇結構程式 138
6.3.1 單分支if語句 138
6.3.2 雙分支if語句 140
6.3.3 多分支else-if語句 141
6.3.4 if語句的嵌套使用 143
6.3.5 switch語句的使用 144
6.4 循環結構程式 147
6.4.1 while語句的使用 147
6.4.2 do…while語句的使用 150
6.4.3 for語句的使用 152
6.4.4 三種循環語句對比 156
6.4.5 嵌套循環 157
6.4.6 continue語句和break語句 158
6.5 開發實踐 161
6.6 小結 163
6.7 習題 163
第7章 數組( 教學視頻:47分鐘) 174
7.1 數組的概述 174
7.2 一維數組 174
7.2.1 一維數組的定義 175
7.2.2 數組元素的訪問 175
7.2.3 一維數組的初始化 177
7.2.4 關於“下標越界”問題 179
7.2.5 一維數組程式舉例 180
7.3 二維數組 183
7.3.1 二維數組的定義及初始化 184
7.3.2 二維數組元素的訪問 184
7.3.3 二維數組的初始化 186
7.3.4 二維數組程式舉例 187
7.4 開發實踐 188
7.5 小結 191
7.6 習題 191
第8章 指針( 教學視頻:77分鐘) 201
8.1 指針概述 201
8.2 指針與變數 201
8.2.1 指針變數的定義 204
8.2.2 取地址運算符(&) 204
8.2.3 取值運算符(*) 205
8.2.4 指針變數賦值 207
8.3 指針與函式 210
8.3.1 指針作為函式參數 210
8.3.2 指針作為返回值 213
8.3.3 指向函式的指針 214
8.3.4 指向函式的指針作函式參數 216
8.4 指針與數組 219
8.4.1 指向數組元素的指針 219
8.4.2 指針的算術運算與數組運算 220
8.4.3 使用指針處理數組元素 224
8.4.4 數組名作為指針 228
8.4.5 指針數組 228
8.4.6 指向指針數據的指針 232
8.5 指針與多維數組 233
8.5.1 處理多維數組的元素 233
8.5.2 處理多維數組的行 236
8.5.3 命令行參數 237
8.6 開發實踐 239
8.7 小結 243
8.8 習題 244
第9章 構造數據類型( 教學視頻:38分鐘) 260
9.1 結構體 260
9.1.1 建立結構體類型 261
9.1.2 結構體變數的定義及初始化 262
9.1.3 訪問結構體成員 265
9.1.4 結構體數組 267
9.1.5 指向結構體變數的指針 271
9.1.6 指向結構體數組的指針 273
9.1.7 結構體作為函式的參數 276
9.1.8 結構體數組作為參數 280
9.2 共用體 281
9.3 類型定義符typedef 283
9.4 開發實踐 284
9.5 小結 290
9.6 習題 290
第10章 預處理命令( 教學視頻:39分鐘) 300
10.1 預處理器的工作方式 300
10.2 預處理指令 302
10.3 宏定義 303
10.3.1 不帶參數的宏 303
10.3.2 帶參數的宏 306
10.3.3 #運算符 309
10.3.4 ##運算符 309
10.3.5 取消宏定義 310
10.3.6 宏和函式 311
10.3.7 宏定義(#define)和類型定義(typedef) 312
10.3.8 預定義宏 312
10.4 條件編譯 313
10.4.1 #if…#endif指令 313
10.4.2 #if…#else…#endif指令 314
10.4.3 #if…#elif…#endif指令 315
10.4.4 #ifdef…#endif指令 315
10.4.5 #ifndef…#endif指令 316
10.4.6 條件編譯的使用 317
10.5 檔案包含 318
10.6 其他指令 319
10.6.1 #error指令 319
10.6.2 #line指令 319
10.6.3 #pragma指令 320
10.7 開發實踐 320
10.8 小結 321
10.9 習題 322
第11章 再談函式( 教學視頻:42分鐘) 330
11.1 函式的嵌套調用 330
11.2 函式的遞歸調用 332
11.2.1 使用遞歸 333
11.2.2 遞歸的基本原理 334
11.2.3 尾遞歸與循環 335
11.2.4 漢諾塔問題 337
11.2.5 遞歸的優缺點 341
11.3 數組做函式參數 341
11.3.1 數組元素做函式實參 342
11.3.2 數組名做函式參數 343
11.3.3 多維數組名做函式參數 346
11.4 內聯函式 348
11.5 開發實踐 348
11.6 小結 351
11.7 習題 352
第2篇 C語言進階技巧
第12章 字元及字元串處理( 教學視頻:42分鐘) 372
12.1 字元串常量 372
12.1.1 字元串常量概述 372
12.1.2 存儲字元串常量 373
12.1.3 字元串常量的表示 373
12.1.4 字元串常量與字元常量 374
12.2 字元串變數 375
12.2.1 字元數組的定義及初始化 375
12.2.2 字元數組與字元指針 377
12.2.3 指針與字元串 378
12.3 字元串的輸入 379
12.3.1 創建存儲空間 379
12.3.2 gets()函式 380
12.3.3 fgets()函式 381
12.3.4 scanf()函式 382
12.4 字元串的輸出 383
12.4.1 puts()函式 383
12.4.2 fputs()函式 384
12.4.3 printf()函式 385
12.5 字元串處理函式 385
12.5.1 strlen()函式 385
12.5.2 strcat()函式 386
12.5.3 strcmp()函式 387
12.5.4 strcpy()函式 389
12.5.5 其他字元串處理函式 390
12.6 開發實踐 391
12.7 小結 398
12.8 習題 398
第13章 記憶體處理( 教學視頻:39分鐘) 410
13.1 動態存儲分配 410
13.1.1 記憶體分配函式 410
13.1.2 空指針 411
13.2 動態分配字元串 412
13.2.1 使用malloc()函式為字元串分配記憶體 412
13.2.2 在字元串函式中使用動態存儲分配 413
13.3 動態分配數組 414
13.3.1 使用malloc()函式為數組分配記憶體 414
13.3.2 calloc()函式 417
13.3.3 realloc()函式 417
13.4 釋放存儲 418
13.4.1 free()函式 418
13.4.2 “無效指針”問題 419
13.5 鍊表 419
13.5.1 從數組到鍊表 421
13.5.2 聲明結點類型 423
13.5.3 創建結點 423
13.5.4 -->運算符 424
13.5.5 向鍊表中插入結點 424
13.5.6 搜尋鍊表 426
13.5.7 刪除鍊表結點 427
13.5.8 使用鍊表 429
13.6 開發實踐 431
13.7 小結 437
13.8 習題 438
第14章 檔案處理( 教學視頻:28分鐘) 442
14.1 流 442
14.1.1 檔案指針 443
14.1.2 標準流與重定向 443
14.2 與檔案通信 444
14.2.1 什麼是檔案 444
14.2.2 文本檔案與二進制檔案 444
14.3 檔案操作 445
14.3.1 打開檔案 446
14.3.2 關閉檔案 447
14.3.3 為流附加檔案 447
14.3.4 從命令行獲取檔案名稱 448
14.4 格式化的輸入/輸出 448
14.4.1 printf()函式與fprintf()函式 448
14.4.2 scanf()函式與fscanf()函式 449
14.5 字元的輸入/輸出 451
14.5.1 輸出函式 451
14.5.2 輸入函式 452
14.6 行的輸入/輸出 455
14.6.1 輸入函式 455
14.6.2 輸出函式 455
14.7 塊的輸入/輸出 457
14.8 檔案的定位 457
14.8.1 fseek()函式與ftell()函式 458
14.8.2 fgetpos()函式與fsetpos()函式 460
14.8.3 rewind()函式 461
14.9 字元串的輸入/輸出 462
14.10 其他標準I/O函式 462
14.10.1 ungetc()函式 463
14.10.2 fflush()函式 463
14.10.3 setvbuf()函式 464
14.10.4 feof()和ferror()函式 464
14.11 開發實踐 464
14.12 小結 469
14.13 習題 469
第15章 底層程式設計( 教學視頻:27分鐘) 478
15.1 位運算符 478
15.1.1 位邏輯運算符 478
15.1.2 位邏輯運算符的用法 480
15.1.3 移位運算符 483
15.1.4 移位運算符的用法 484
15.2 位欄位 486
15.3 開發實踐 487
15.4 小結 491
15.5 習題 492
第16章 數學計算支持( 教學視頻:20分鐘) 495
16.1 浮點類型的特性 495
16.2 整數類型的大小 496
16.3 數學計算 497
16.3.1 三角函式 498
16.3.2 雙曲函式 499
16.3.3 指數函式和對數函式 499
16.3.4 冪函式 501
16.3.5 就近取整函式、絕對值函式和取余函式 502
16.4 字元處理 503
16.4.1 字元測試函式 503
16.4.2 字元大小寫轉換函式 504
16.5 字元串處理 505
16.5.1 複製函式 505
16.5.2 拼接函式 506
16.5.3 比較函式 508
16.5.4 搜尋函式 509
16.5.5 其他函式 511
16.6 開發實踐 511
16.7 小結 516
16.8 習題 516
第17章 錯誤處理( 教學視頻:18分鐘) 520
17.1 診斷 520
17.2 錯誤 522
17.3 信號處理 523
17.3.1 信號宏 524
17.3.2 signal()函式 524
17.3.3 預定義的信號處理函式 525
17.3.4 raise()函式 525
17.4 非局部跳轉 525
17.5 開發實踐 526
17.6 小結 527
17.7 習題 528
第18章 國際化特性( 教學視頻:8分鐘) 529
18.1 本地化 529
18.1.1 類別 529
18.1.2 setlocale()函式 530
18.1.3 localeconv()函式 530
18.2 多位元組字元和寬字元 532
18.3 開發實踐 533
18.4 小結 534
18.5 習題 534
第3篇 C語言編程實戰
第19章 五子棋遊戲( 教學視頻:32分鐘) 538
19.1 五子棋遊戲簡介 538
19.2 需求分析 539
19.3 系統設計 539
19.4 主模組 540
19.5 棋盤模組 543
19.6 下棋模組 544
19.7 判斷輸贏模組 546
19.8 信息模組 550
19.9 系統界面 551
19.10 本章小結 553
19.11 習題 553
第20章 圖書管理系統( 教學視頻:65分鐘) 562
20.1 需求分析 562
20.2 系統設計 563
20.3 主模組 564
20.4 錄入數據模組 568
20.5 修改圖書模組 570
20.6 查詢圖書模組 573
20.7 刪除圖書模組 578
20.8 檔案模組 580
20.9 圖書管理系統使用說明 582
20.10 本章小結 585
20.11 習題 585
第21章 製作通訊錄( 教學視頻:59分鐘) 594
21.1 需求分析 594
21.2 系統設計 595
21.3 主模組 596
21.4 創建通訊錄模組 598
21.5 排序模組 600
21.6 綜合操作模組 602
21.7 保存通訊錄模組 606
21.8 打開通訊錄模組 607
21.9 刪除模組 608
21.10 退出模組 609
21.11 通訊錄系統使用說明 609
21.12 本章小結 613
21.13 習題 613