C語言程式設計案例課堂
作者:劉春茂、李琪
定價:78元
印次:1-1
ISBN:9787302495420
出版日期:2018.06.01
印刷日期:2018.06.08
《C語言程式設計案例課堂》以零基礎講解為宗旨,用實例引導讀者深入學習,採取“基礎入門→核心技術→高級套用→項目開發實戰”的講解模式,深入淺出地講解C語言的各項技術及實戰技能。 《C語言程式設計案例課堂》第Ⅰ篇“基礎入門”主要講解走進C語言的世界、常量與變數、數據類型、輸入和輸出、運算符和表達式、程式流程控制結構等;第Ⅱ篇“核心技術”主要講解數組、算法與流程圖、函式與函式中變數、指針、操作檔案、編譯與預處理指令、使用庫函式等;第Ⅲ篇“高級套用”主要講解位運算,結構體、共用體和枚舉,動態數據結構,數據結構進階,排序等;第Ⅳ篇“項目開發實戰”主要講解開發日曆查閱系統、開發員工信息管理系統、開發迷宮小遊戲。
作者
劉春茂,本科畢業於上海復旦大學,碩士畢業於清華大學。曾在美國IBM公司移動產品開發組從事Android平台套用的開發。
擅長的核心技術
媒體和教育領域個性化信息推薦,網站用戶行為數據挖掘,健康領域非結構化數據處理。
擅長的其他技術
熟悉各種網站和手機(Andorid和iOS)app的開發等,精通Java, C/C++, PHP, Python等流行語言並對Hadoop, MapReduce等大數據框架有深入研究。
目 錄
第I篇 基礎入門
第1章 初識廬山真面目—— 走進C語言的世界 3
1.1 C語言概述 4
1.1.1 C語言的發展史 4
1.1.2 C語言的特點 5
1.1.3 C語言的套用 6
1.2 C語言的常用開發環境 6
1.2.1 Visual C++ 6.0開發環境 7
1.2.2 Turbo C 2.0開發環境 11
1.3 編寫第一個C語言程式 13
1.3.1 C語言編譯機制 13
1.3.2 在Visual C++ 6.0中開發C程式 13
1.3.3 在Turbo C中開發C程式 17
1.4 C語言程式的組成 19
1.4.1 C語言程式整體風貌 19
1.4.2 #include的秘密 19
1.4.3 程式的出入口——main函式 20
1.4.4 數據貨櫃——常量和變數 21
1.4.5 如何輸出程式結果——輸出函式 21
1.4.6 注釋 21
1.4.7 代碼書寫規範 22
1.5 大神解惑 23
1.6 跟我學上機 23
第2章 程式中的變與不變——常量與變數 25
2.1 標識符和關鍵字 26
2.1.1 標識符 26
2.1.2 關鍵字 26
2.2 常量 27
2.2.1 整數常量 27
2.2.2 浮點常量 28
2.2.3 字元常量 28
2.2.4 字元串常量 30
2.2.5 符號常量 30
2.3 變數 31
2.3.1 變數的定義 32
2.3.2變數的聲明 32
2.3.3變數的初始化與賦值 33
2.3.4變數的分類 34
2.4綜合案例——處理學生的期末成績 38
2.5大神解惑 40
2.6跟我學上機 40
第3章程式中的數據種類——數據類型 41
3.1數制 42
3.1.1二進制 42
3.1.2八進制 42
3.1.3十六進制 42
3.1.4數制間的轉換 42
3.2整型數據 45
3.2.1整型數據的存放形式 46
3.2.2整型變數的溢出 47
3.3浮點型數據 48
3.3.1浮點型數據的存放形式 48
3.3.2有效數字 49
3.4字元型數據 50
3.5數據類型的轉換 50
3.5.1隱式轉換 50
3.5.2顯式轉換 52
3.6綜合案例——各種進制的轉換 53
3.7大神解惑 55
3.8跟我學上機 55
第4章用戶與計算機的互動——輸入和輸出 57
4.1標準輸入輸出 58
4.2格式化輸入輸出 58
4.2.1格式化輸出函式 59
4.2.2格式化輸入函式 62
4.3字元輸入輸出 65
4.3.1字元的輸出函式 65
4.3.2字元的輸入函式 66
4.4字元串的輸入輸出 67
4.4.1字元串的輸出函式 67
4.4.2字元串的輸入函式 68
4.5綜合案例——輸入和輸出的綜合套用 69
4.6大神解惑 70
4.7跟我學上機 70
第5章誰來運算元據——運算符和表達式 71
5.1運算符 72
5.1.1運算符的分類 72
5.1.2運算符的優先權和結合性 72
5.2表達式 73
5.3運算符與表達式 74
5.3.1算術運算符與算術表達式 74
5.3.2賦值運算符與賦值表達式 77
5.3.3關係運算符與關係表達式 79
5.3.4邏輯運算符與邏輯表達式 81
5.3.5位運算符與位運算表達式 83
5.3.6條件運算符與條件表達式 85
5.3.7逗號運算符與逗號表達式 86
5.4語句 87
5.4.1表達式語句 87
5.4.2函式調用語句 87
5.4.3控制語句 88
5.4.4複合語句 88
5.4.5空語句 88
5.5綜合案例——關係運算符的套用 89
5.6大神解惑 89
5.7跟我學上機 90
第6章程式的執行方向——程式流程控制結構 91
6.1順序結構 92
6.2選擇結構 93
6.2.1if語句 93
6.2.2if…else語句 94
6.2.3選擇嵌套語句 95
6.2.4switch分支結構語句 99
6.3循環結構 101
6.3.1while語句 101
6.3.2do…while語句 102
6.3.3for語句 103
6.3.4循環語句的嵌套 105
6.4跳轉語句 106
6.4.1break語句 106
6.4.2continue語句 107
6.4.3goto語句 108
6.5綜合案例——製作簡易計算器 109
6.6大神解惑 111
6.7跟我學上機 112
第Ⅱ篇核心技術
第7章特殊的元素集合——數組 115
7.1數組概述 116
7.2一維數組 116
7.2.1一維數組的定義 116
7.2.2一維數組的引用 118
7.2.3一維數組的初始化 119
7.2.4程式實例 121
7.3二維數組 123
7.3.1二維數組的定義 123
7.3.2二維數組的引用 124
7.3.3二維數組的初始化 125
7.3.4多維數組 127
7.3.5程式實例 128
7.4字元數組 131
7.4.1字元數組的定義和初始化 131
7.4.2字元串和字元數組 133
7.4.3字元數組的輸出與輸入 134
7.4.4字元串處理函式 137
7.5綜合案例——矩陣的乘法 141
7.6大神解惑 143
7.7跟我學上機 143
第8章程式描述——算法與流程圖 145
8.1算法概述 146
8.1.1算法的概念 146
8.1.2算法的特性 146
8.1.3算法的優劣 147
8.2流程圖簡介 148
8.2.1傳統流程圖 148
8.2.2N-S流程圖 150
8.3算法的表示 150
8.3.1自然語言表示法 150
8.3.2流程圖表示法 152
8.3.3N-S流程圖表示法 156
8.3.4偽代碼表示法 159
8.3.5計算機語言表示法 162
8.4結構化程式設計方法 163
8.5綜合案例——求解一元二次方程的根 163
8.6大神解惑 166
8.7跟我學上機 166
第9章C語言靈魂——函式與函式中變數 167
9.1函式概述 168
9.1.1函式的概念 168
9.1.2函式的分類 169
9.1.3函式的聲明與定義 171
9.2函式的返回語句 174
9.2.1函式的返回值 175
9.2.2函式的結束標誌 176
9.2.3函式的返回值類型 177
9.3函式的參數 178
9.3.1形式參數與實際參數 178
9.3.2參數的傳遞方式 179
9.4函式的調用 182
9.4.1函式調用的方式 182
9.4.2函式的嵌套調用 185
9.4.3函式的遞歸調用 188
9.5內部函式與外部函式 192
9.5.1內部函式 192
9.5.2外部函式 193
9.6main()函式的參數 195
9.7局部變數和全局變數 196
9.7.1局部變數 196
9.7.2全局變數 198
9.8變數的存儲類別 202
9.8.1動態存儲與靜態存儲 203
9.8.2自動變數 203
9.8.3靜態變數 205
9.8.4暫存器變數 209
9.8.5外部變數 210
9.9綜合案例——求解非線性方程 212
9.10大神解惑 215
9.11跟我學上機 217
第10章靈活調用記憶體地址——指針 219
10.1指針概述 220
10.1.1地址與指針 220
10.1.2指針變數 221
10.1.3指針變數的引用 223
10.2指針與函式 226
10.2.1指針變數作為函式參數 226
10.2.2函式返回指針 229
10.2.3指向函式的指針 231
10.3指針與數組 233
10.3.1數組元素的指針 234
10.3.2指針的運算 234
10.3.3通過指針引用數組元素 235
10.3.4指向數組的指針變數作為函式參數 238
10.3.5通過指針對多維數組進行引用 244
10.4指針與字元串 250
10.4.1字元指針 250
10.4.2使用字元指針作函式參數 253
10.4.3字元數組與字元指針變數的區別 256
10.5指針數組和多重指針 258
10.5.1指針數組 258
10.5.2指向指針的指針 262
10.6綜合案例——使用指針運算元組 267
10.7大神解惑 272
10.8跟我學上機 275
第11章數據存儲——操作檔案 277
11.1檔案概述 278
11.1.1檔案類型 278
11.1.2檔案指針 279
11.1.3檔案的緩衝區 280
11.2檔案的打開與關閉 281
11.2.1檔案的打開 281
11.2.2檔案的關閉 282
11.3檔案的讀寫 283
11.3.1字元的讀寫 283
11.3.2字元串的讀寫 287
11.3.3數據塊的讀寫 291
11.3.4格式化讀寫函式 295
11.4檔案定位與檔案的隨機讀寫 298
11.4.1檔案頭定位函式rewind() 299
11.4.2當前讀寫位置函式ftell() 300
11.4.3隨機定位函式fseek() 301
11.5檔案檢測函式 304
11.5.1檔案結束判斷函式feof() 304
11.5.2檔案讀寫錯誤檢測函式ferror() 305
11.5.3檔案錯誤標誌清除函式clearerr() 307
11.6綜合案例——檔案的綜合操作 308
11.7大神解惑 316
11.8跟我學上機 316
第12章未雨綢繆——編譯與預處理指令 317
12.1預處理指令 318
12.2宏定義 318
12.2.1變數式宏定義 318
12.2.2宏定義的嵌套 321
12.2.3宏定義的作用範圍 322
12.2.4帶參數的宏定義 323
12.2.5宏定義的多行表示 327
12.3檔案包含 327
12.4條件編譯 329
12.4.1條件編譯命令 329
12.4.2調試中使用DEBUG宏 332
12.4.3檔案的嵌套包含與條件編譯 333
12.5綜合案例——求解圓、矩形以及三角形的面積 334
12.6大神解惑 335
12.7跟我學上機 335
第13章提高開發效率——使用庫函式 337
13.1標準C庫函式 338
13.2數學函式“math.h” 338
13.2.1求冪函式與開平方函式 338
13.2.2指數函式與對數函式 339
13.2.3三角函式 340
13.2.4絕對值函式 341
13.2.5取整函式與取余函式 342
13.3字元串函式“string.h” 343
13.3.1字元串長度函式 343
13.3.2字元串連線函式 344
13.3.3字元串複製函式 345
13.3.4字元串大小寫轉換函式 346
13.3.5字元串查找函式 347
13.3.6字元串比較函式 348
13.4字元函式“ctype.h” 349
13.4.1字元的類型判斷函式 349
13.4.2字元大小寫轉換函式 351
13.5其他函式 352
13.5.1隨機函式 352
13.5.2日期時間函式 353
13.5.3結束程式函式 354
13.6綜合案例——創建報數遊戲 355
13.7大神解惑 356
13.8跟我學上機 357
第III篇高級套用
第14章內部數據操作——位運算 361
14.1位(bit)與位元組(byte)的關係 362
14.2位運算符 362
14.2.1按位與運算符(&) 362
14.2.2按位或運算符(|) 363
14.2.3按位異或運算符(^) 364
14.2.4按位取反運算符(~) 365
14.2.5左移運算符(<<) 366
14.2.6右移運算符(>>) 367
14.2.7位複合賦值運算符 368
14.3循環移位 368
14.3.1循環左移 369
14.3.2循環右移 370
14.4位段 371
14.4.1位段的定義 371
14.4.2位段中數據的引用 371
14.5綜合案例——將十進制數轉換為二進制數 373
14.6大神解惑 374
14.7跟我學上機 375
第15章靈活定義數據類型——結構體、共用體和枚舉 377
15.1結構體概述 378
15.1.1結構體類型 378
15.1.2定義結構體變數 379
15.1.3初始化結構體變數 381
15.1.4結構體變數的引用 381
15.2結構體數組 383
15.2.1定義結構體數組 383
15.2.2結構體數組的初始化 384
15.2.3結構體數組元素的引用 385
15.2.4結構體數組套用實例 386
15.3結構體指針 388
15.3.1指向結構體變數的指針 388
15.3.2指向結構體數組的指針 390
15.3.3結構體變數作為函式參數 391
15.3.4指向結構體變數的指針作為函式參數 393
15.3.5結構體作為函式的返回值 394
15.4共用體 395
15.4.1共用體的定義 395
15.4.2共用體變數的定義 396
15.4.3共用體變數的初始化以及引用 397
15.5枚舉 399
15.5.1定義枚舉類型 400
15.5.2定義枚舉類型變數 400
15.6綜合案例——創建學生信息結構體 402
15.7大神解惑 403
15.8跟我學上機 404
第16章動態存儲分配——動態數據結構 405
16.1動態存儲分配概述 406
16.1.1malloc()函式 406
16.1.2calloc()函式 407
16.1.3realloc()函式 408
16.1.4free()函式 409
16.2鍊表概述 410
16.2.1鍊表結點的定義 411
16.2.2鍊表的建立 411
16.2.3鍊表的遍歷 412
16.2.4鍊表結點的插入 413
16.2.5鍊表結點的刪除 417
16.3綜合案例——綜合套用鍊表 420
16.4大神解惑 421
16.5跟我學上機 422
第17章邏輯結構——數據結構進階 423
17.1數據結構概述 424
17.2線性表 425
17.3棧 426
17.3.1棧的基本操作 427
17.3.2順序棧 427
17.3.3鏈式棧 429
17.4佇列 431
17.4.1佇列的基本運算 432
17.4.2順序佇列 432
17.4.3鏈式佇列 436
17.5二叉樹 441
17.5.1二叉樹的定義 441
17.5.2二叉樹的遍歷 442
17.6查找 442
17.6.1順序查找 442
17.6.2折半查找 444
17.7綜合案例——使用棧轉換數據的進制 446
17.8大神解惑 447
17.9跟我學上機 448
第18章整理數據的妙招——排序 449
18.1排序概述 450
18.2插入排序 450
18.2.1直接插入排序 450
18.2.2希爾排序 452
18.3選擇排序 453
18.3.1簡單選擇排序 453
18.3.2堆排序 455
18.4交換排序 457
18.4.1冒泡排序 457
18.4.2快速排序 458
18.5歸併排序 460
18.6基數排序 462
18.7大神解惑 464
18.8跟我學上機 465
第IV篇項目開發實戰
第19章項目實訓1——開發日曆查閱系統 469
19.1需求分析 470
19.2功能分析 470
19.3開發前準備工作 472
19.4系統代碼編寫 476
19.4.1查詢年曆函式showCalendarOfYear() 476
19.4.2查詢月曆函式showCalendarOfMonth() 477
19.4.3日期查詢模組 478
19.5系統運行 485
19.6項目總結 486
第20章項目實訓2——開發員工信息管理系統 487
20.1需求分析 488
20.2功能分析 489
20.3開發前準備工作 490
20.4系統代碼編寫 491
20.4.1main.c檔案 491
20.4.2employee.c檔案 495
20.5系統運行 499
20.6項目總結 500
第21章項目實訓3——開發迷宮小遊戲 501
21.1需求分析 502
21.2功能分析 502
21.3開發前準備工作 504
21.4系統代碼編寫 505
21.4.1main.c檔案 505
21.4.2mazeGame.c檔案 507
21.5系統運行 513
21.6項目總結 514