《C語言開發實戰寶典》是2011年清華大學出版社出版的圖書,作者是劉彬彬、李偉明。
基本介紹
- 書名:C語言開發實戰寶典
- 作者:劉彬彬、李偉明
- ISBN:9787302242512
- 頁數:592
- 出版社:清華大學出版社
- 出版時間:2011年1月1日
- 裝幀:平裝
- 開本:16
- 版次:第1版
內容簡介,目錄,
內容簡介
《C語言開發實戰寶典》從初學者的角度講述了使用visual c++ 6.0(以及部分turbo c)進行程式開發應該掌握的各項技術,突出“基礎”、“全面”、“深入”,同時就像書名所暗示的一樣,強調“實戰”效果(只掌握和理解技術,而沒有實際套用,等於沒有掌握技術)。《C語言開發實戰寶典》分為3篇,共21章。在“基礎知識篇”中,在介紹技術的同時,每一章均提供了相應的實例,同時在各章的結尾安排有實戰,通過幾個小型項目來綜合套用本章所講解的知識,做到理論聯繫實際。接著,在“範例演練篇”中,安排了幾章的範例使讀者鞏固所學的知識。最後,在“項目實戰篇”中提供了5個完 整的項目實例,講述了從前期規劃、設計流程圖,到項目最終實施的整個實現過程。《C語言開發實戰寶典》適合有志於從事軟體開發的初學者、高校計算機相關專業學生和畢業生,也可作為軟體開發人員的參考手冊,或者高校的教學參考書。
目錄
基礎知識篇
第1章 c語言開發環境 1
1.1 本章知識體系 4
1.2 程式設計師的成長之路 4
1.3 c語言的重要性 5
1.4 如何學好c語言 5
1.5 c語言常用開發工具簡介 6
1.5.1 turbo c 7
1.5.2 visual c++ 6.0 7
1.5.3 c++ builder(bcb) 7
1.5.4 cygwin 7
1.5.5 dev-c++ 7
1.5.6 source insight 8
1.6 了解visual c++集成開發環境 8
1.6.1 開發環境布局 8
1.6.2 選單 8
1.6.3 工具列 15
1.6.4 工作區視窗 16
1.6.5 代碼編輯視窗 16
1.6.6 輸出視窗 16
.1.7 如何在turbo c 2.0下運行c源程式 17
1.8 了解gcc開發編譯器 19
1.9 dev-c++ 19
1.9.1 dev-c++概述 19
1.9.2 dev-c++的使用 19
1.10 eclipse for c/c++ 21
1.10.1 eclipse概述 21
1.10.2 eclipse的使用 22
1.11 實戰 24
1.11.1 猴子吃桃 24
1.11.2 陽陽買蘋果 25
1.12 疑難解惑 26
1.12.1 為什麼說c語言可移植性好 26
1.12.2 c語言的套用領域有哪些 26
1.12.3 如何提高c語言的編程效率 27
1.13 小結 27
第2章 c語言開發基礎 29
2.1 本章知識體系 30
2.2 編碼規範要記牢 30
2.2.1 注釋的合理使用 30
2.2.2 程式中的{}要對齊 31
2.2.3 合理使用空格使代碼更規範 32
2.2.4 換行使代碼更清晰 32
2.3 語言要素 33
2.3.1 關鍵字 33
2.3.2 標識符 33
2.4 常量 34
2.4.1 整型常量 34
2.4.2 實型常量 36
2.4.3 字元型常量 36
2.4.4 字元串常量 37
2.5 變數 38
2.5.1 什麼是變數 38
2.5.2 變數的聲明 39
2.6 數據類型 39
2.6.1 什麼是數據類型 39
2.6.2 整型 40
2.6.3 實型 42
2.6.4 字元型 42
2.6.5 枚舉類型 44
2.7 使用typedef定義類型 45
2.8 變數的存儲類型 47
2.8.1 了解變數的存儲類型 47
2.8.2 使用auto關鍵字聲明自動變數 48
2.8.3 使用static關鍵字聲明靜態變數 48
2.8.4 使用register關鍵字聲明暫存器變數 51
2.8.5 使用extern關鍵字聲明外部變數 52
2.8.6 使用static關鍵字聲明靜態外部變數 55
2.9 混合運算 55
2.10 實戰 57
2.10.1 十進制轉換為二進制 57
2.10.2 求100~200之間的素數 58
2.11 疑難解惑 60
2.11.1 聲明變數和定義變數 60
2.11.2 限定詞const 60
2.11.3 字元串常量為什麼用“\0”作為結束符 61
2.12 小結 61
第3章 運算符與表達式 63
3.1 本章知識體系 64
3.2 運算符與表達式 64
3.2.1 賦值運算符與表達式 64
3.2.2 加減乘除新認識 67
3.2.3 關係源自比較 68
3.2.4 邏輯出真假 69
3.2.5 逗號運算符與表達式 71
3.2.6 運算符的優先權 72
3.3 自增、自減操作符 73
3.3.1 認識自增、自減操作符 73
3.3.2 自增、自減操作符的副作用 74
3.4 位運算 74
3.4.1 “或”運算符 74
3.4.2 “與”運算符 76
3.4.3 “取反”運算符 77
3.4.4 “異或”運算符 78
3.4.5 “左移”運算符 79
3.4.6 “右移”運算符 80
3.5 實戰 81
3.5.1 最大公約數及最低公倍數 81
3.5.2 循環移位 82
3.6 疑難解惑 84
3.6.1 表達式“a=b”和“a= =b”一樣嗎? 84
3.6.2 如何區分“,”是運算符還是分隔設定 84
3.6.3 c語言中有哪些簡化的運算表達式 86
3.7 小結 86
第4章 語句 87
4.1 本章知識體系 88
4.2 語句的構成 88
4.2.1 表達式語句 89
4.2.2 函式調用語句 89
4.2.3 控制語句 90
4.2.4 複合語句 91
4.2.5 空語句 91
4.3 如何實現字元數據輸入/輸出 91
4.3.1 字元數據輸出 91
4.3.2 字元數據輸入 92
4.4 格式輸入/輸出 93
4.4.1 格式輸出函式 93
4.4.2 格式輸入函式 98
4.5 程式的控制結構 101
4.5.1 順序結構 101
4.5.2 分支結構 101
4.5.3 循環結構 102
4.6 if語句 103
4.6.1 if語句的介紹 103
4.6.2 if語句的嵌套 107
4.7 條件運算符 108
4.8 switch語句 109
4.8.1 switch語句的基本形式 109
4.8.2 剖析if和switch語句 112
4.9 while與do-while語句 113
4.9.1 當型循環語句while 113
4.9.2 直到型循環語句do-while 116
4.9.3 while與do-while的異同 118
4.10 for語句 119
4.10.1 初識for語句 119
4.10.2 for語句的變體 121
4.10.3 for語句的嵌套 123
4.11 跳轉語句 125
4.11.1 continue語句跳出本次循環 125
4.11.2 break語句跳出循環 126
4.11.3 用於返回數據的return語句 127
4.11.4 goto語句 128
4.12 實戰 129
4.12.1 整數加減法練習 129
4.12.2 一元錢兌換方案 130
4.13 疑難解惑 132
4.13.1 c語言提供的跳轉語句各有什麼特點 132
4.13.2 循環嵌套時應該注意什麼 132
4.13.3 如何提高循環語句的執行效率 132
4.14 小結 133
第5章 數組 135
5.1 本章知識體系 136
5.2 一維數組 136
5.2.1 如何定義和引用一維數組 136
5.2.2 一維數組初始化 137
5.2.3 一維數組套用 139
5.3 二維數組 140
5.3.1 如何定義和引用二維數組 140
5.3.2 二維數組初始化 141
5.3.3 二維數組套用 143
5.4 多維數組 144
5.5 字元數組 144
5.5.1 如何定義和使用字元數組 144
5.5.2 字元數組初始化 145
5.5.3 字元數組的結束標誌 147
5.5.4 字元數組的輸入和輸出 148
5.5.5 字元數組套用 151
5.6 實戰 152
5.6.1 逆序存放數據 152
5.6.2 相鄰元素之和 154
5.7 疑難解惑 155
5.7.1 數組下標必須從0開始嗎 155
5.7.2 數組名作函式參數與數組元素作函式參數有什麼不同之處 155
5.7.3 '\0'和"\0"有什麼區別 155
5.8 小結 156
第6章 函式 157
6.1 本章知識體系 158
6.2 函式概述 158
6.3 函式的定義 160
6.3.1 無參函式 160
6.3.2 有參函式 161
6.3.3 空函式 161
6.4 返回語句 162
6.4.1 從函式返回 162
6.4.2 返回值 162
6.5 函式參數 163
6.5.1 形式參數與實際參數 163
6.5.2 數組作函式參數 165
6.5.3 main參數 170
6.6 函式的調用 171
6.6.1 函式調用方式 171
6.6.2 嵌套調用 172
6.6.3 遞歸調用 174
6.7 內部函式和外部函式 177
6.7.1 內部函式 177
6.7.2 外部函式 177
6.8 局部變數和全局變數 179
6.8.1 局部變數 179
6.8.2 全局變數 180
6.9 實戰 182
6.9.1 求字元串中字元的個數 182
6.9.2 打漁曬網問題 183
6.10 疑難解惑 185
6.10.1 在調用時不使用函式的返回值會產生什麼現象 185
6.10.2 c語言中函式的調用方式有哪幾種 186
6.10.3 函式定義時容易犯哪些錯誤 186
6.11 小結 187
第7章 指針 189
7.1 本章知識體系 190
7.2 指針相關概念 190
7.2.1 地址與指針 190
7.2.2 指針變數 191
7.2.3 指針的賦值 192
7.2.4 指針的引用 193
7.3 指針運算 194
7.4 一維數組與指針 196
7.5 指針訪問二維數組 200
7.6 字元和指針 203
7.6.1 使用字元指針 203
7.6.2 字元指針數組 205
7.7 指向指針的指針 206
7.8 函式型指針 208
7.9 實戰 210
7.9.1 用指針實現數據交換 210
7.9.2 使用指針實現整數排序 212
7.10 疑難解惑 213
7.10.1 指針類型和指針所指向的類型是一樣的嗎 213
7.10.2 指針運算與取地址運算符有何聯繫 214
7.10.3 空指針有何意義 214
7.11 小結 214
第8章 結構體和共用體 215
8.1 本章知識體系 216
8.2 結構體 216
8.2.1 結構體類型的概念 216
8.2.2 結構體變數的定義 217
8.2.3 結構體類型的幾點說明 219
8.2.4 結構體變數的引用 220
8.2.5 結構體變數的初始化 220
8.3 結構體數組 221
8.3.1 定義結構體數組 221
8.3.2 初始化結構體數組 222
8.4 結構體指針 224
8.4.1 指向結構體變數的指針 224
8.4.2 指向結構體數組的指針 225
8.4.3 結構體作函式參數 226
8.5 包含結構的結構 229
8.6 鍊表 230
8.6.1 什麼是鍊表 230
8.6.2 創建動態鍊表 232
8.6.3 鍊表相關操作 234
8.7 共用體 240
8.7.1 什麼是共用體 240
8.7.2 共用體變數的定義和引用 240
8.7.3 共用體類型的初始化 241
8.8 實戰 242
8.8.1 約瑟夫環 242
8.8.2 計算開機時間 244
8.9 疑難解惑 246
8.9.1 定義結構體對結構體成員的類型是否有限制 246
8.9.2 成員運算符(.)和指向結構體成員的運算符(-])有何區別 246
8.9.3 結構體和聯合體有什麼區別和聯繫 246
8.10 小結 247
第9章 檔案 249
9.1 本章知識體系 250
9.2 檔案概述 250
9.3 檔案基本操作 251
9.3.1 檔案的打開 251
9.3.2 檔案的關閉 252
9.4 檔案的讀寫 253
9.4.1 fputc函式 253
9.4.2 fgetc函式 254
9.4.3 fread函式和fwrite函式 255
9.5 檔案的定位 257
9.5.1 rewind函式 257
9.5.2 ftell函式 259
9.5.3 fseek函式 259
9.6 出錯檢測 261
9.6.1 ferror函式 261
9.6.2 clearerr函式 263
9.7 實戰 264
9.7.1 讀取磁碟檔案 264
9.7.2 將數據寫入磁碟檔案 265
9.8 疑難解惑 266
9.8.1 標準檔案和一般檔案有什麼區別 266
9.8.2 c語言的常用庫檔案包含哪些 266
9.8.3 為什麼檔案打開以後要及時關閉 268
9.9 小結 268
第10章 預處理 269
10.1 本章知識體系 270
10.2 不帶參數的宏定義 270
10.3 帶參數的宏定義 272
10.4 #include命令 273
10.5 條件編譯 276
10.5.1 #if命令 276
10.5.2 #ifdef及#ifndef命令 279
10.5.3 #undef命令 280
10.5.4 #line命令 280
10.5.5 #pragma命令 281
10.6 實戰 282
10.6.1 利用宏計算兩個數的乘積 282
10.6.2 利用宏求3個數中的最小數 282
10.7 疑難解惑 283
10.7.1 c語言中包括哪些預處理功能 283
10.7.2 使用宏時需要注意些什麼 284
10.7.3 檔案包含可以嵌套嗎 284
10.8 小結 284
第11章 存儲管理 285
11.1 本章知識體系 286
11.2 記憶體組織方式 286
11.2.1 記憶體組織方式 286
11.2.2 堆與棧 286
11.3 分配記憶體函式(malloc和calloc) 289
11.3.1 malloc函式 289
11.3.2 calloc函式 290
11.4 修改已分配記憶體(relloc函式) 291
11.5 釋放記憶體——free函式 292
11.6 誰偷了我的記憶體 293
11.7 實戰 294
11.7.1 為具有3個元素的數組分配記憶體 294
11.7.2 為二維數組動態分配記憶體並釋放 294
11.8 疑難解惑 296
11.8.1 什麼是“記憶體泄露” 296
11.8.2 記憶體耗盡了怎么辦 296
11.8.3 常見的記憶體管理錯誤有哪些 296
11.9 小結 297
範例演練篇
第12章 排序 301
12.1 選擇排序 302
12.1.1 範例功能演示 302
12.1.2 開發思路指引 302
12.1.3 專家難點解析 303
12.1.4 設計過程詳解 304
12.1.5 範例開發手記 305
12.1.6 進階與提高 305
12.2 冒泡排序 306
12.2.1 範例功能演示 306
12.2.2 開發思路指引 306
12.2.3 專家難點解析 307
12.2.4 設計過程詳解 308
12.2.5 範例開發手記 309
12.2.6 進階與提高 309
12.3 插入排序 310
12.3.1 範例功能演示 310
12.3.2 開發思路指引 310
12.3.3 專家難點解析 311
12.3.4 設計過程詳解 312
12.3.5 範例開發手記 313
12.3.6 進階與提高 313
12.4 希爾排序 314
12.4.1 範例功能演示 314
12.4.2 開發思路指引 315
12.4.3 專家難點解析 315
12.4.4 設計過程詳解 316
12.4.5 範例開發手記 317
12.4.6 進階與提高 318
12.5 快速排序 319
12.5.1 範例功能演示 319
12.5.2 開發思路指引 319
12.5.3 專家難點解析 320
12.5.4 設計過程詳解 321
12.5.5 範例開發手記 322
12.5.6 進階與提高 323
第13章 查找 325
13.1 順序查找 326
13.1.1 範例功能演示 326
13.1.2 開發思路指引 326
13.1.3 專家難點解析 326
13.1.4 設計過程詳解 327
13.1.5 範例開發手記 328
13.1.6 進階與提高 328
13.2 折半查找 329
13.2.1 範例功能演示 330
13.2.2 開發思路指引 330
13.2.3 專家難點解析 330
13.2.4 設計過程詳解 331
13.2.5 範例開發手記 332
13.2.6 進階與提高 332
13.3 分塊查找 334
13.3.1 範例功能演示 334
13.3.2 開發思路指引 334
13.3.3 專家難點解析 335
13.3.4 設計過程詳解 336
13.3.5 範例開發手記 337
13.3.6 進階與提高 338
13.4 哈希查找 339
13.4.1 範例功能演示 339
13.4.2 開發思路指引 340
13.4.3 專家難點解析 340
13.4.4 設計過程詳解 342
13.4.5 範例開發手記 344
13.4.6 進階與提高 344
第14章 數據壓縮 349
14.1 rle算法實現數據壓縮 350
14.1.1 範例功能演示 350
14.1.2 開發思路指引 350
14.1.3 專家難點解析 351
14.1.4 設計過程詳解 351
14.1.5 範例開發手記 353
14.1.6 進階與提高 353
14.2 lzw算法實現數據壓縮 355
14.2.1 範例功能演示 355
14.2.2 開發思路指引 355
14.2.3 專家難點解析 355
14.2.4 設計過程詳解 356
14.2.5 範例開發手記 359
14.2.6 進階與提高 359
第15章 圖形編程 363
15.1 繪製折線圖 364
15.1.1 範例功能演示 364
15.1.2 開發思路指引 364
15.1.3 專家難點解析 364
15.1.4 設計過程詳解 366
15.1.5 範例開發手記 367
15.1.6 進階與提高 368
15.2 餅狀圖 370
15.2.1 範例功能演示 370
15.2.2 開發思路指引 370
15.2.3 專家難點解析 370
15.2.4 設計過程詳解 372
15.2.5 範例開發手記 373
15.2.6 進階與提高 373
15.3 條形圖 375
15.3.1 範例功能演示 375
15.3.2 開發思路指引 375
15.3.3 專家難點解析 375
15.3.4 設計過程詳解 377
15.3.5 範例開發手記 379
15.3.6 進階與提高 379
15.4 畫玫瑰花 381
15.4.1 範例功能演示 381
15.4.2 開發思路指引 381
15.4.3 專家難點解析 381
15.4.4 設計過程詳解 382
15.4.5 範例開發手記 387
15.4.6 進階與提高 387
15.5 選單界面設計 388
15.5.1 範例功能演示 389
15.5.2 開發思路指引 389
15.5.3 專家難點解析 389
15.5.4 設計過程詳解 390
15.5.5 範例開發手記 396
15.5.6 進階與提高 396
第16章 檔案的高級套用 399
16.1 創建檔案 400
16.1.1 範例功能演示 400
16.1.2 開發思路指引 400
16.1.3 專家難點解析 400
16.1.4 設計過程詳解 401
16.1.5 範例開發手記 402
16.1.6 進階與提高 402
16.2 檔案的複製 403
16.2.1 範例功能演示 403
16.2.2 開發思路指引 403
16.2.3 專家難點解析 403
16.2.4 設計過程詳解 404
16.2.5 範例開發手記 405
16.2.6 進階與提高 405
16.3 刪除檔案 406
16.3.1 範例功能演示 407
16.3.2 開發思路指引 407
16.3.3 專家難點解析 407
16.3.4 設計過程詳解 408
16.3.5 範例開發手記 409
16.3.6 進階與提高 409
16.4 重命名檔案 412
16.4.1 範例功能演示 412
16.4.2 開發思路指引 412
16.4.3 專家難點解析 412
16.4.4 設計過程詳解 413
16.4.5 範例開發手記 413
16.4.6 進階與提高 414
16.5 檔案加密 415
16.5.1 範例功能演示 415
16.5.2 開發思路指引 416
16.5.3 專家難點解析 416
16.5.4 設計過程詳解 417
16.5.5 範例開發手記 418
16.5.6 進階與提高 418
項目實戰篇
第17章 五子棋遊戲開發 423
17.1 概述 424
17.2 需求分析 424
17.3 系統設計 424
17.3.1 設計目標 424
17.3.2 開發及運行環境 424
17.4 程式預覽 424
17.5 graphics.h檔案 425
17.6 設計思路 429
17.7 預處理 429
17.7.1 檔案引用 429
17.7.2 宏定義 429
17.8 聲明變數 430
17.9 函式聲明 430
17.10 主要功能實現 430
17.10.1 主函式 430
17.10.2 開始遊戲 432
17.10.3 繪製棋盤 433
17.10.4 繪製棋子 433
17.10.5 清除棋子 434
17.10.6 遊戲過程 434
17.10.7 判斷勝負結果 440
17.11 開發總結 442
第18章 商品信息管理系統(txt) 443
18.1 概述 444
18.1.1 需求分析 444
18.1.2 功能結構圖 444
18.2 預處理 444
18.2.1 檔案引用 444
18.2.2 宏定義 445
18.3 聲明結構體 445
18.4 函式聲明 445
18.5 功能選擇界面 446
18.5.1 功能概述 446
18.5.2 主函式 446
18.5.3 自定義選單功能函式 447
18.6 錄入商品信息 448
18.7 查詢商品信息 452
18.8 刪除商品信息 454
18.9 修改商品信息 456
18.10 插入商品信息 458
18.11 統計商品數 461
18.12 開發總結 462
第19章 網路通信編程 463
19.1 網路通信系統概述 464
19.1.1 開發背景 464
19.1.2 需求分析 464
19.1.3 功能結構圖 464
19.2 技術攻關 465
19.2.1 tcp/ip協定 465
19.2.2 ip地址 466
19.2.3 數據包格式 467
19.2.4 建立連線 469
19.2.5 套接字型檔函式 470
19.3 網路通信系統主程式 473
19.4 點對點通信 477
19.5 伺服器中轉通信 484
19.6 程式調試與錯誤處理 491
19.7 開發總結 494
第20章 聯繫人管理系統(嵌入式) 497
20.1 聯繫人管理系統概述 498
20.1.1 系統分析 498
20.1.2 總體設計 498
20.2 技術攻關 499
20.2.1 嵌入式 499
20.2.2 超級終端通信 500
20.2.3 燒寫與編譯 504
20.3 聯繫人管理系統主程式 511
20.4 添加聯繫人模組 516
20.5 查找聯繫人模組 518
20.6 刪除聯繫人模組 521
20.7 瀏覽聯繫人模組 523
20.8 聯繫人詳情 527
20.9 程式調試與錯誤處理 529
20.10 開發總結 533
第21章 圖書管理系統(mysql) 535
21.1 概述 536
21.1.1 需求分析 536
21.1.2 開發工具選擇 536
21.2 系統設計 536
21.2.1 系統目標 536
21.2.2 系統功能結構 537
21.2.3 系統預覽 537
21.2.4 開發及運行環境 540
21.3 資料庫設計 540
21.3.1 安裝mysql資料庫 540
21.3.2 啟動mysql資料庫 547
21.3.3 創建資料庫 548
21.3.4 數據表結構 549
21.4 c語言開發資料庫程式的流程 549
21.5 c語言操作mysql資料庫 552
21.5.1 mysql常用資料庫操作函式 552
21.5.2 連線mysql數據 554
21.5.3 查詢圖書表記錄 555
21.5.4 插入圖書表記錄 557
21.5.5 修改圖書表記錄 558
21.5.6 刪除圖書表記錄 560
21.6 檔案引用 560
21.7 變數和函式定義 561
21.8 主要功能模組設計 562
21.8.1 顯示主選單信息 562
21.8.2 顯示所有圖書信息 564
21.8.3 添加圖書信息 567
21.8.4 修改圖書信息 574
21.8.5 刪除圖書信息 581
21.8.6 查詢圖書信息 587
21.9 程式調試及錯誤處理 590
21.9.1 解決創建數據表為一個檔案的問題 590
21.9.2 在創建數據表時,最後一句結尾沒有標點 591
21.9.3 無法啟動mysql服務 592
21.10 項目開發總結 592