內容介紹
本書由淺入深,全面、系統地介紹了C語言的編程技術。全書分6篇共13章,主要內容包括:C語言概述;C語言的數據類型,運算符,表達式和輸入/輸出函式;選擇結構設計;循環結構設計;數組;字元串;函式;指針;新的數據類型;聯合,枚舉和位域;預處理;檔案操作;綜合實例套用。隨書所附光碟包含本書配套實例源檔案、贈送的C語言學習資料和教學視頻。
本書適合所有想全面學習C語言的編程人員及C語言愛好者閱讀。
作品目錄
第1篇C語言開發基礎第1章扎馬步——認識C語言
1.1程式設計語言 3
1.1.1程式設計語言的發展 3
1.1.2C語言的發展 4
1.1.3C語言的特點 4
1.2結構化程式設計 5
1.2.1程式設計的概念 5
1.2.2程式的靈魂—算法 6
1.2.3程式設計三劍客—三大基本結構 10
1.2.4實現“結構化程式設計”的方法 12
1.3C語言程式設計的特點 15
1.3.1C程式實例 15
1.3.2C程式的結構特點 16
1.3.3C語言中的名字規則—標識符 17
1.4C程式變成EXE檔案的過程——編譯、連線和執行 19
1.5編譯和運行C程式的一般步驟 21
1.5.1使用Turbo C 2.0開發 21
1.5.2使用Visual C++ 6.0開發 24
1.6小結 28
1.7習題 28
第2章地形:C語言的血液——數據類型、運算符、表達式和輸入/輸出函式
2.1不可以改變的數據——常量 30
2.1.1常量的定義 30
2.1.2進化版的常量—符號常量 30
2.2可以改變的數據——變數 31
2.2.1變數的定義 31
2.2.2給變數起名字—變數的命名規則 31
2.2.3變數的出生和成長—初始化和賦值 32
2.2.4變數的壽命—作用域 32
2.2.5使用extern聲明變數 34
2.3C語言的細胞——數據類型 35
2.3.1整型(int) 35
2.3.2實型(float) 37
2.3.3字元型(char) 38
2.4運算符和表達式 40
2.4.1運算符和表達式 41
2.4.2賦值運算符和賦值表達式 41
2.4.3算術運算符和算術表達式 42
2.4.4關係運算符和關係表達式 43
2.4.5邏輯運算符和邏輯表達式 44
2.4.6條件運算符和條件表達式 46
2.4.7逗號運算符和逗號表達式 47
2.4.8運算符的優先權 47
2.5不同類型數據之間的轉換 48
2.5.1隱式轉換 48
2.5.2顯式轉換 49
2.6數據的輸入Input 50
2.6.1使用scanf()函式實現數據輸入 50
2.6.2一個字元的輸入函式—getchar() 52
2.7數據的輸出Output 54
2.7.1使用printf()函式實現數據格式輸出 54
2.7.2使用putchar()函式實現字元輸出 57
2.8順序結構程式設計舉例 57
2.9本章知識點綜合套用 59
案例一 59
案例二 60
案例三 62
2.10小結 63
2.11習題 64
第2篇C語言編程入門
第3章迎戰:選擇結構設計
3.1入門——選擇結構簡介 67
3.2選擇結構設計的實現—if語句 67
3.2.1if結構語法 67
3.2.2if結構程式實例 68
3.3選擇結構設計實現—if…else法 70
3.3.1if…else結構語法 70
3.3.2if…else結構程式實例 71
3.4選擇結構設計—多重if法 72
3.4.1多重if結構的語法格式 72
3.4.2多重if結構程式實例 73
3.5選擇結構設計—if嵌套法 74
3.5.1if嵌套結構語法 75
3.5.2if和else配對問題 75
3.5.3if嵌套結構程式實例 76
3.6選擇結構設計—switch法 77
3.6.1switch結構語法 77
3.6.2switch語句的注意事項 78
3.6.3switch的執行過程 79
3.6.4switch結構程式實例 79
3.7switch和多重if的比較 82
3.8選擇結構程式設計舉例 84
3.9本章知識點綜合套用 87
案例一 87
案例二 88
案例三 90
3.10小結 92
3.11習題 92
第4章火攻:循環結構設計
4.1循環結構 96
4.2while循環 97
4.2.1while循環語法及含義 97
4.2.2使用while循環程式舉例 98
4.3do…while循環 100
4.3.1do…while循環結構及含義 100
4.3.2使用do...while循環程式實例 101
4.4for循環 103
4.4.1for循環結構及含義 103
4.4.2for循環的注意事項 105
4.4.3使用for循環程式舉例 106
4.5循環嵌套 107
4.5.1循環嵌套原則 107
4.5.2使用循環嵌套程式舉例 108
4.6三種循環的比較 110
4.7跳轉語句 112
4.7.1使用break語句實現循環程式中的跳轉 112
4.7.2使用continue語句實現程式跳轉 113
4.7.3使用goto語句實現程式跳轉 114
4.8循環結構程式設計舉例 115
4.9本章知識點綜合套用 118
案例一 118
案例二 119
案例三 121
4.10小結 123
4.11習題 124
第3篇數 組 應 用
第5章兵勢一:數組
5.1一維數組 127
5.1.1定義一維數組 127
5.1.2訪問一維數組元素 128
5.1.3初始化一維數組 129
5.1.4數組的存儲形式 132
5.1.5注意事項 133
5.1.6一維數組示例 135
5.2二維數組 138
5.2.1定義二維數組 138
5.2.2訪問二維數組元素 139
5.2.3二維數組的存儲方式 140
5.2.4初始化二維數組 140
5.2.5二維數組示例 142
5.3多維數組 145
5.3.1定義多維數組 145
5.3.2多維數組示例 146
5.4本章知識點綜合套用 147
案例一 147
案例二 149
案例三 151
5.5小結 153
5.6習題 153
第6章兵勢二:字元串
6.1字元數組 157
6.1.1字元數組的定義 157
6.1.2字元數組的初始化 159
6.1.3二維字元數組 160
6.1.4字元數組實例 162
6.2字元串 165
6.2.1字元串常量 166
6.2.2字元串變數 168
6.2.3格式化輸出字元串 169
6.2.4格式化輸入字元串 170
6.3字元串套用示例 171
6.3.1取字元串長度 171
6.3.2統計字元串中的單詞個數 172
6.3.3顛倒單詞順序 174
6.3.4改進的顛倒單詞順序實現 176
6.4本章知識點綜合套用 179
案例一 179
案例二 180
案例三 181
6.5小結 182
6.6習題 183
第4篇函式及指針套用
第7章謀攻:函式
7.1函式的概念 189
7.1.1什麼是函式 189
7.1.2函式的分類 190
7.1.3函式的定義 191
7.1.4main()函式 193
7.2函式的工作過程 194
7.2.1程式結構 194
7.2.2函式執行過程 195
7.3編寫函式 196
7.3.1函式頭 196
7.3.2返回值類型 196
7.3.3參數列表 197
7.3.4函式體 198
7.3.5函式原型 198
7.4函式的參數 199
7.4.1形參和實參 200
7.4.2參數傳遞過程 200
7.4.3函式參數的“值調用” 200
7.4.4引用調用 202
7.4.5數組作為函式參數 204
7.4.6指針作為函式參數 208
7.4.7main()函式的參數 209
7.5函式調用 210
7.5.1函式調用方式 210
7.5.2被調函式的說明 211
7.5.3函式的返回值 212
7.6幾種典型的函式調用形式 214
7.6.1賦值調用與引用調用 214
7.6.2嵌套調用 215
7.6.3遞歸調用 219
7.7函式及其變數的作用域 225
7.7.1函式的作用域 225
7.7.2函式的變數作用域 226
7.8本章知識點綜合套用 227
案例一 227
案例二 229
案例三 230
7.9小結 234
7.10習題 234
第8章虛實:指針
8.1記憶體和變數的關係 236
8.1.1計算機記憶體 236
8.1.2變數的存儲 236
8.2指針和簡單變數 238
8.2.1指針的概念 238
8.2.2指針的創建 239
8.2.3指針變數的初始化 240
8.2.4指針變數的引用 241
8.2.5給函式傳遞指針 245
8.3指針變數的賦值 246
8.3.1初始化賦值 246
8.3.2取地址賦值 247
8.3.3指針之間賦值 247
8.3.4數組賦值 247
8.3.5字元串賦值 248
8.3.6函式入口賦值 248
8.4指針和數組的關係 248
8.4.1指針、數組和地址間的關係 248
8.4.2指針變數的運算 250
8.4.3用指針運算元組元素 251
8.5指向多維數組的指針 254
8.5.1理解二維數組的地址 254
8.5.2多維數組的指針表示 257
8.5.3指向多維數組的指針變數 258
8.5.4數組名作為函式的參數 263
8.5.5指向數組的指針小結 267
8.6指針和字元串 267
8.6.1指針表示字元串 267
8.6.2字元串指針作函式參數 269
8.6.3字元數組和字元指針的區別 271
8.7指針數組 272
8.7.1指針數組的概念 272
8.7.2用指針數組處理字元串 275
8.7.3指針數組作函式參數 277
8.8指向指針的指針 278
8.8.1理解指向指針的指針 279
8.8.2二級指針變數與數組 281
8.9指針和函式 286
8.9.1返回指針的函式 286
8.9.2指向函式的指針 288
8.10指針和const變數 291
8.10.1用const控制指針 291
8.10.2const的幾種特殊用法 292
8.11指針總結 294
8.11.1明確分辨各種指針類型 294
8.11.2正確理解指針 294
8.12本章知識點綜合套用 295
案例一 295
案例二 297
案例三 300
8.13小結 303
8.14習題 304
第5篇C語言高級數據類型
第9章用間一:新的數據類型
9.1結構的定義 307
9.2結構變數的定義 308
9.2.1先定義結構,再定義結構變數 308
9.2.2在定義結構的同時,定義結構變數 309
9.2.3直接說明結構變數 309
9.3結構變數的使用 310
9.4結構變數的初始化 311
9.5結構數組 313
9.5.1結構數組的定義和引用 313
9.5.2結構數組的初始化 315
9.5.3結構數組實例 316
9.6結構指針 317
9.6.1定義結構指針 317
9.6.2結構指針的引用 318
9.6.3用指針處理結構數組 320
9.7嵌套結構 322
9.7.1內含數組的結構 322
9.7.2包含指針的結構 323
9.7.3包含結構的結構 323
9.8向函式傳遞結構型參數 327
9.8.1傳遞結構變數的值 327
9.8.2傳遞結構指針到函式 329
9.9本章知識點綜合套用 331
案例一 331
案例二 333
案例三 335
9.10小結 336
9.11習題 336
第10章用間二:聯合、枚舉和位域
10.1聯合體(union) 338
10.1.1定義联合類型 338
10.1.2定義联合變數 339
10.1.3聯合變數成員的引用 339
10.1.4聯合體型變數數組 340
10.1.5聯合體型變數指針 341
10.1.6在結構中嵌套聯合類型 342
10.1.7結構體和聯合體的區別 345
10.2枚舉 346
10.2.1定義枚舉類型 346
10.2.2定義枚舉變數 347
10.2.3枚舉類型變數的賦值 348
10.3類型說明 350
10.4二進制數據存儲 351
10.4.1數據的存儲 352
10.4.2不同數據類型的二進制表示 352
10.5位運算 355
10.5.1位邏輯運算符 355
10.5.2移位運算符 358
10.5.3位運算的複合賦值運算符 359
10.5.4位運算的用途 359
10.6位域 360
10.6.1定義位域結構 360
10.6.2位域變數的聲明 362
10.6.3位域的使用 362
10.6.4位域與聯合的使用 364
10.7本章知識點綜合套用 366
案例一 366
案例二 367
案例三 368
10.8小結 370
10.9習題 370
第11章作戰:預處理
11.1預處理簡介 372
11.1.1預處理功能 372
11.1.2預處理命令 372
11.2宏定義命令 373
11.2.1無參數的宏定義 373
11.2.2帶參數的宏定義 376
11.2.3#undef命令 377
11.2.4預處理操作符#和## 378
11.3檔案包含指令 381
11.4條件編譯指令 382
11.4.1#if、#else、#endif命令 382
11.4.2#elif命令 384
11.4.3#ifdef、#ifndef命令 386
11.4.4使用#defined和#undef 387
11.5其他預處理命令 387
11.5.1預定義的宏名 387
11.5.2重置行號和檔案名稱命令#line 388
11.5.3修改編譯器設定命令#pragma 389
11.5.4產生錯誤信息命令#error 389
11.6內聯函式 390
11.7小結 392
11.8習題 392
第6篇實 戰 篇
第12章白鶴亮翅:檔案操作
12.1打開、關閉和檢測檔案 395
12.1.1打開檔案 395
12.1.2檔案檢查函式 399
12.1.3讀寫檔案數據 399
12.1.4關閉檔案 410
12.2檔案定位函式 410
12.2.1fseek()函式 410
12.2.2ftell()函式 413
12.2.3rewind()函式 414
12.3檔案管理函式的套用 416
12.3.1刪除檔案 416
12.3.2重命名檔案 417
12.4使用臨時檔案 418
12.5非緩衝檔案系統 419
12.5.1open()函式 420
12.5.2close()函式 420
12.5.3create()函式 420
12.5.4read()函式 421
12.5.5write()函式 421
12.5.6lseek()函式 421
12.6小結 422
12.7習題 423
第13章收兵:C語言程式綜合套用
13.1八皇后問題 425
13.2漢諾塔問題 429
13.3循環賽問題 430
13.4猴子選大王 432
13.5三個數的最低公倍數問題 433
13.6背包問題 436
13.7馬遍歷問題 438
13.8流水線作業問題 440
13.9迷宮問題 441
13.10關鍵路徑 443
13.11推箱子小遊戲的大致實現 445
13.12小結 471
13.13習題 471