C語言從入門到精通, 5/e
內容描述
《C語言從入門到精通(第5版)》從初學者的角度出發,以通俗易懂的語言、豐富多彩的實例,詳細介紹了使用C語言進行程序開發需要掌握的各方面知識。全書分為4篇,共18章,內容包括C語言概述、算法、數據類型、運算符與表達式、常用的數據輸入/輸出函數、選擇結構程序設計、循環控制、數組、函數、指針、結構體和共享體、位運算、預處理、文件、存儲管理、網絡套接字編程、單詞背記闖關游戲和防空大戰游戲。書中所有知識都結合具體實例進行介紹,涉及的程序代碼給出了詳細的註釋,讀者可以輕松領會C語言程序開發的精髓,快速提高開發技能。
目錄大綱
第1篇 基礎知識
第1章 C語言概述 2
視頻講解:69分鐘
1.1 C語言的發展史 2
1.1.1 程序語言簡述 2
1.1.2 C語言的歷史 3
1.2 C語言的特點 4
1.3 一個簡單的C程序 4
1.4 一個完整的C程序 7
1.5 C語言程序的格式 11
1.6 C語言開發環境 12
1.6.1 Visual C++ 6.0 12
1.6.2 Visual Studio 2019 19
1.7 實踐與練習 24
第2章 算法 27
視頻講解:17分鐘
2.1 算法的基本概念 27
2.1.1 算法的特性 27
2.1.2 算法的優劣 29
2.2 算法描述 29
2.2.1 自然語言 29
2.2.2 流程圖 30
2.2.3 N-S流程圖 33
2.3 實踐與練習 35
第3章 數據類型 37
視頻講解:52分鐘
3.1 編程規範 37
3.2 關鍵字 38
3.3 標識符 39
3.4 數據類型 40
3.5 常量 41
3.5.1 整型常量 41
3.5.2 實型常量 42
3.5.3 字符型常量 43
3.5.4 轉義字符 45
3.5.5 符號常量 46
3.6 變量 46
3.6.1 整型變量 47
3.6.2 實型變量 49
3.6.3 字符型變量 51
3.7 變量的存儲類別 53
3.7.1 auto變量 53
3.7.2 static變量 53
3.7.3 register變量 54
3.7.4 extern變量 55
3.8 混合運算 56
3.9 實踐與練習 57
第4章 運算符與表達式 59
視頻講解:40分鐘
4.1 表達式 59
4.2 賦值運算符與賦值表達式 61
4.2.1 變量賦初值 61
4.2.2 自動類型轉換 62
4.2.3 強制類型轉換 63
4.3 算術運算符與算術表達式 64
4.3.1 算術運算符 64
4.3.2 算術表達式 65
4.3.3 優先級與結合性 66
4.3.4 自增/自減運算符 66
4.4 關係運算符與關係表達式 68
4.4.1 關係運算符 68
4.4.2 關係表達式 68
4.4.3 優先級與結合性 69
4.5 邏輯運算符與邏輯表達式 71
4.5.1 邏輯運算符 71
4.5.2 邏輯表達式 71
4.5.3 優先級與結合性 72
4.6 逗號運算符與逗號表達式 73
4.7 複合賦值運算符 74
4.8 運算符的優先級總結 76
4.9 實踐與練習 77
第5章 常用的數據輸入/輸出函數 79
視頻講解:24分鐘
5.1 語句 79
5.2 字符數據的輸入/輸出 79
5.2.1 字符輸出函數 80
5.2.2 字符輸入函數 80
5.3 字符串輸入/輸出 82
5.3.1 字符串輸出函數 82
5.3.2 字符串輸入函數 84
5.4 格式輸出函數 85
5.5 格式輸入函數 88
5.6 順序程序設計應用 92
5.7 實踐與練習 94
第6章 選擇結構程序設計 96
視頻講解:37分鐘
6.1 if語句 96
6.2 if語句的基本形式 97
6.2.1 if語句形式 97
6.2.2 if…else語句形式 100
6.2.3 else if語句形式 103
6.3 if的嵌套形式 107
6.4 條件運算符 110
6.5 switch語句 111
6.5.1 switch語句的基本形式 111
6.5.2 多路開關模式的switch語句 115
6.6 if…else語句和switch語句的區別 118
6.7 實踐與練習 120
第7章 循環控制 122
視頻講解:45分鐘
7.1 循環語句 122
7.2 while語句 123
7.3 do…while語句 125
7.4 for語句 127
7.4.1 for語句使用 127
7.4.2 for循環的變體 130
7.4.3 for語句中的逗號應用 132
7.5 3種循環語句的比較 134
7.6 循環嵌套 134
7.6.1 循環嵌套的結構 134
7.6.2 循環嵌套實例 135
7.7 轉移語句 137
7.7.1 goto語句 137
7.7.2 break語句 139
7.7.3 continue語句 140
7.8 實踐與練習 142
第2篇 核心技術
第8章 數組 146
視頻講解:87分鐘
8.1 一維數組 146
8.1.1 一維數組的定義和引用 146
8.1.2 一維數組的初始化 148
8.1.3 一維數組的應用 150
8.2 二維數組 151
8.2.1 二維數組的定義和引用 151
8.2.2 二維數組的初始化 152
8.2.3 二維數組的應用 153
8.3 字符數組 155
8.3.1 字符數組的定義和引用 155
8.3.2 字符數組的初始化 156
8.3.3 字符數組的結束標誌 157
8.3.4 字符數組的輸入和輸出 158
8.3.5 字符數組的應用 159
8.4 多維數組 160
8.5 數組的排序算法 160
8.5.1 選擇法排序 161
8.5.2 冒泡法排序 162
8.5.3 交換法排序 164
8.5.4 插入法排序 166
8.5.5 折半法排序 168
8.5.6 排序算法的比較 170
8.6 數組應用 171
8.6.1 反轉輸出字符串 171
8.6.2 輸出系統日期和時間 172
8.6.3 字符串的加密和解密 173
8.7 實踐與練習 176
第9章 函數 178
視頻講解:80分鐘
9.1 函數概述 178
9.2 函數的定義和聲明 180
9.2.1 函數的定義 180
9.2.2 函數的聲明 182
9.3 函數參數 183
9.3.1 形式參數與實際參數 183
9.3.2 數組作函數參數 184
9.4 函數的調用和返回 187
9.4.1 函數的調用 187
9.4.2 函數的返回 189
9.4.3 函數的嵌套調用 190
9.4.4 函數的遞歸調用 191
9.5 內部函數和外部函數 194
9.5.1 內部函數 194
9.5.2 外部函數 195
9.6 局部變量和全局變量 197
9.6.1 局部變量 197
9.6.2 全局變量 199
9.7 函數應用 201
9.7.1 數學函數 201
9.7.2 字符判別與轉換函數 204
9.7.3 字符串處理函數 206
9.8 實踐與練習 212
第10章 指針 214
視頻講解:65分鐘
10.1 指針的相關概念 214
10.1.1 地址與指針 214
10.1.2 變量與指針 215
10.1.3 指針變量 216
10.1.4 指針的自增、自減運算 219
10.2 數組與指針 220
10.2.1 一維數組與指針 220
10.2.2 二維數組與指針 223
10.2.3 字符串與指針 226
10.2.4 指針數組 228
10.3 指向指針的指針 229
10.4 指針變量作函數參數 232
10.5 返回指針值的函數 240
10.6 指針數組作main函數的參數 241
10.7 實踐與練習 243
第3篇 高級應用
第11章 結構體和共用體 246
視頻講解:62分鐘
11.1 結構體 246
11.1.1 結構體類型的聲明 247
11.1.2 結構體變量的定義 247
11.1.3 結構體變量的引用 249
11.1.4 結構體類型的初始化 251
11.2 結構體數組 252
11.2.1 定義結構體數組 252
11.2.2 初始化結構體數組 254
11.3 結構體指針 256
11.3.1 指向結構體變量的指針 256
11.3.2 指向結構體數組的指針 258
11.3.3 結構體作為函數參數 260
11.4 嵌套的結構體 262
11.5 鍊錶 264
11.5.1 鍊錶概述 264
11.5.2 創建動態鍊錶 265
11.5.3 輸出鍊錶 267
11.6 鍊錶的相關操作 270
11.6.1 插入結點 271
11.6.2 刪除結點 272
11.7 共用體 276
11.7.1 共用體的概念 276
11.7.2 共用體變量的引用 277
11.7.3 共用體變量的初始化 278
11.7.4 共用體類型的數據特點 279
11.8 枚舉類型 279
11.9 實踐與練習 281
第12章 位運算 284
視頻講解:28分鐘
12.1 位與字節 284
12.2 位運算操作符 284
12.2.1 按位與運算符 285
12.2.2 按位或運算符 286
12.2.3 按位取反運算符 287
12.2.4 按位異或運算符 288
12.2.5 左移運算符 289
12.2.6 右移運算符 290
12.3 循環移位 292
12.4 位段 294
12.4.1 位段的概念與定義 294
12.4.2 位段相關說明 295
12.5 實踐與練習 297
第13章 預處理 299
視頻講解:24分鐘
13.1 宏定義 299
13.1.1 不帶參數的宏定義 300
13.1.2 帶參數的宏定義 301
13.2 #include命令 302
13.3 條件編譯 304
13.3.1 #if命令 304
13.3.2 #ifdef及#ifndef命令 306
13.3.3 #undef命令 307
13.3.4 #line命令 307
13.3.5 #pragma命令 308
13.4 實踐與練習 309
第14章 文件 311
視頻講解:44分鐘
14.1 文件概述 311
14.2 文件基本操作 312
14.2.1 文件指針 312
14.2.2 文件的打開 312
14.2.3 文件的關閉 313
14.3 文件的讀寫 314
14.3.1 fputc函數 314
14.3.2 fgetc函數 315
14.3.3 fputs函數 316
14.3.4 fgets函數 316
14.3.5 fprintf函數 317
14.3.6 fscanf函數 318
14.3.7 fread和fwrite函數 319
14.4 文件的定位 322
14.4.1 fseek函數 322
14.4.2 rewind函數 323
14.4.3 ftell函數 325
14.5 實踐與練習 327
第15章 存儲管理 330
視頻講解:18分鐘
15.1 內存組織方式 330
15.1.1 數據的存放方式 330
15.1.2 堆與棧 331
15.2 動態管理 333
15.2.1 malloc函數 333
15.2.2 calloc函數 334
15.2.3 realloc函數 335
15.2.4 free函數 336
15.3 內存洩露與內存丟失 337
15.4 實踐與練習 338
第16章 網絡套接字編程 340
視頻講解:33分鐘
16.1 計算機網絡基礎 340
16.1.1 IP地址 340
16.1.2 OSI七層參考模型 341
16.1.3 地址解析 342
16.1.4 域名解析 342
16.1.5 TCP/IP協議 343
16.1.6 端口 345
16.1.7 套接字的引入 345
16.1.8 網絡字節順序 345
16.2 套接字基礎 345
16.2.1 套接字概述 346
16.2.2 TCP套接字的socket編程 346
16.2.3 UDP套接字的socket編程 347
16.3 套接字函數 347
16.3.1 套接字常用函數介紹 347
16.3.2 基於TCP的網絡聊天程序 353
16.4 實踐與練習 359
第4篇 項目實戰
第17章 單詞背記闖關 364
視頻講解:41分鐘
17.1 需求分析 364
17.2 系統設計 364
17.2.1 系統目標 364
17.2.2 構建開發環境 365
17.2.3 系統功能結構 365
17.2.4 業務流程圖 366
17.2.5 系統預覽 366
17.3 技術準備 367
17.3.1 文件的基本操作 367
17.3.2 文件的讀寫操作 369
17.4 公共類設計 370
17.5 預處理模塊設計 370
17.5.1 模塊概述 370
17.5.2 代碼實現 370
17.6 歡迎界面設計 371
17.6.1 模塊概述 371
17.6.2 代碼實現 372
17.7 積分規則界面設計 373
17.7.1 模塊概述 373
17.7.2 代碼實現 374
17.8 顯示遊戲最高分設計 375
17.8.1 模塊概述 375
17.8.2 代碼實現 375
17.9 系統邏輯設計 376
17.9.1 模塊概述 376
17.9.2 代碼實現 376
17.10 顯示結果界面設計 379
17.10.1 模塊概述 379
17.10.2 代碼實現 379
第18章 防空大戰遊戲 382
視頻講解:29分鐘
18.1 需求分析 382
18.2 系統設計 383
18.2.1 系統目標 383
18.2.2 構建開發環境 383
18.2.3 系統功能結構 383
18.2.4 業務流程圖 383
18.2.5 系統預覽 384
18.3 技術準備 385
18.3.1 EasyX圖形庫的下載與安裝 385
18.3.2 EasyX庫的主要函數 387
18.4 公共類設計 388
18.4.1 創建graphics.h頭文件 388
18.4.2 源文件公設計 391
18.5 遊戲主窗體設計 392
18.5.1 模塊概述 392
18.5.2 創建防空導彈 392
18.5.3 創建炸彈 393
18.5.4 創建飛機 394
18.5.5 加載圖片 394
18.5.6 繪圖設計 395
18.6 碰撞檢測設計 396
18.6.1 模塊概述 396
18.6.2 代碼實現 396
18.7 開始遊戲設計 396
18.7.1 模塊概述 396
18.7.2 加載音樂 397
18.7.3 飛機隨機出現 398
18.7.4 按鍵設計 401
18.7.5 生命值和得分統計 401
18.7.6 遊戲結束界面 402
18.7.7 重新開始遊戲 402
18.8 為遊戲應用添加圖標 403
18.8.1 添加圖標概述 403
18.8.2 實現步驟 403
附錄 ASCII表 405
作者介紹
明日科技,全稱是吉林省明日科技有限公司,是一家專業從事軟件開發、教育培訓以及軟件開發教育資源整合的高科技公司,其編寫的教材非常注重選取軟件開發中的必需、常用內容,同時也很注重內容的易學、方便性以及相關知識的拓展性,深受讀者喜愛。
其教材多次榮獲“全行業優秀暢銷品種”“全國高校出版社優秀暢銷書”等獎項,多個品種長期位居同類圖書銷售排行榜的前列。