內容簡介
本書通過大量實例及一個完整項目案例,幫助讀者更好地鞏固所學知識,提升能力;隨書附贈的《小白實戰手冊》中給出了3個流行且實用的案例的詳細開發流程,力求讓學習者能學以致用,真正獲得開發經驗;附贈的光碟中給出視頻講解、實例及項目源碼、代碼查錯器、練一練和動手糾錯答案等,方便讀者學習;書中設定了130多個二維碼,掃描二維碼觀看視頻講解,解決學習疑難;不易理解的專業術語、代碼難點只需手機掃描文字下方的e學碼獲得更多擴展解釋,隨時掃除學習障礙。此外,登錄明日學院網站還可以獲得更多學習資源和技術支持。
圖書與《小白實戰手冊》+光碟+二維碼+e學碼+明日學院,實現立體化、全方位的教學模式,拉低編程門檻,讓零基礎者輕鬆跨入編程領域。
目錄
第1篇基礎知識
第1章C語言概述.2
1.1 C語言的發展史.3
1.1.1 程式語言簡述3
1.1.2 C語言的發展與套用.4
1.2 C語言的特點.5
1.3 Visual C++ 6.0開發環境6
1.3.1 Visual C++6.0的下載與安裝.6
1.3.2 Visual C++6.0創建C檔案.10
1.4 一個簡單的C程式14
1.5 一個完整的C程式18
1.6 C語言程式的格式21
1.7 小結.22
第2章算法.23
2.1 算法的基本概念.24
2.1.1 算法的特性.24
2.1.2 算法的優劣.25
2.2 算法的描述.26
2.2.1 自然語言.26
2.2.2 流程圖.27
2.2.3 N-S流程圖31
2.3 難點解答.34
2.3.1 當型循環和直到型循環有什麼不同?.34
2.3.2 如何設計一個好的算法?.34
2.4 小結.34
第3章C語言基礎35
3.1 關鍵字.36
3.2 標識符.36
3.3 數據類型.38
3.4 常量.39
3.4.1 整型常量.39
3.4.2 實型常量.42
3.4.3 字元型常量.42
3.4.4 轉義字元.47
3.4.5 符號常量.47
3.5 變數.48
3.5.1 整型變數.49
3.5.2 實型變數.50
3.5.3 字元型變數.52
3.6 變數的存儲類別.55
3.6.1 auto變數.55
3.6.2 static變數.56
3.6.3 register變數.57
3.6.4 extern變數.57
3.7 混合運算.58
3.8 難點解答.59
3.8.1 變數的賦值和初始化.59
3.8.2 如何合理定義變數的類型?.59
3.9 小結.60
3.10 動手糾錯60
第4章運算符與表達式.61
4.1 表達式.62
4.2 賦值運算符與賦值表達式.62
4.2.1 變數賦初值.63
4.2.2 自動類型轉換.65
4.2.3 強制類型轉換.66
4.3 算術運算符與算術表達式.67
4.3.1 算術運算符.67
4.3.2 算術表達式.68
4.3.3 優先權與結合性.69
4.3.4 自增/自減運算符70
4.4 關係運算符與關係表達式.73
4.4.1 關係運算符.73
4.4.2 關係表達式.74
4.4.3 優先權與結合性.74
4.5 邏輯運算符與邏輯表達式.76
4.5.1 邏輯運算符.76
4.5.2 邏輯表達式.76
4.5.3 優先權與結合性.77
4.6 位邏輯運算符與位邏輯表達式.78
4.6.1 位邏輯運算符.78
4.6.2 位邏輯表達式.79
4.7 逗號運算符與逗號表達式.79
4.8 複合賦值運算符.81
4.9 難點解答.82
4.9.1 自增前綴與自增後綴的區別(例如:++i,i++)82
4.9.2 逗號表達式的要領.82
4.10 小結83
4.11 動手糾錯.84
第5章常用的數據輸入/輸出函式.85
5.1 語句.86
5.2 字元數據輸入/輸出86
5.2.1 字元數據輸出.86
5.2.2 字元數據輸入.88
5.3 字元串輸入/輸出89
5.3.1 字元串輸出函式.89
5.3.2 字元串輸入函式.91
5.4 格式輸出函式.92
5.5 格式輸入函式.96
5.6 難點解答.99
5.6.1 putchar()、puts()和printf()三個函式的區別.99
5.6.2 getchar()、gets()和scanf()三個函式的區別.99
5.7 小結100
5.8 動手糾錯100
第6章選擇結構程式設計.101
6.1 if語句.102
6.2 if語句的基本形式102
6.2.1 if語句形式102
6.2.2 if…else語句形式106
6.2.3 else if語句形式.111
6.3 if語句的嵌套114
6.4 條件運算符117
6.5 switch語 句.118
6.5.1 switch語句的基本形式118
6.5.2 多路開關模式的switch語句122
6.6 if…else語句和switch語句的區別124
6.7 難點解答.126
6.7.1 if…else和else if語句的區別.126
6.7.2 if和if…else語句的區別126
6.8 小結127
6.9 動手糾錯127
第7章循環控制.129
7.1 循環語句130
7.2 while語句.130
7.3 do…while語句.134
7.4 for語句.136
7.4.1 for語句使用.136
7.4.2 for循環的變體.140
7.4.3 for語句中的逗號套用.142
7.5 3種循環語句的比較.142
7.6 循環嵌套143
7.6.1 循環嵌套的結構143
7.6.2 循環嵌套實例144
7.7 轉移語句147
7.7.1 break語句.147
7.7.2 continue語句148
7.7.3 goto語句149
7.8 難點解答151
7.8.1 continue和break語句的區別.151
7.8.2 while和do…while語句的區別151
7.9 小結152
7.10 動手糾錯.152
第2篇核心技術
第8章數組154
8.1 一維數組155
8.1.1 一維數組的定義和引用155
8.1.2 一維數組初始化157
8.1.3 一維數組套用160
8.2 二維數組161
8.2.1 二維數組的定義和引用161
8.2.2 二維數組初始化.162
8.2.3 二維數組套用165
8.3 字元數組167
8.3.1 字元數組的定義和引用167
8.3.2 字元數組初始化168
8.3.3 字元數組的結束標誌170
8.3.4 字元數組的輸入和輸出171
8.3.5 字元數組套用172
8.4 多維數組174
8.5 數組的排序算法174
8.5.1 選擇法排序174
8.5.2 冒泡法排序177
8.5.3 交換法排序179
8.5.4 插入法排序182
8.5.5 折半法排序184
8.5.6 排序算法的比較187
8.6 字元串處理函式188
8.6.1 字元串複製188
8.6.2 字元串連線190
8.6.3 字元串比較191
8.6.4 字元串大小寫轉換193
8.6.5 獲得字元串長度194
8.7 數組套用196
8.7.1 反轉輸出字元串196
8.7.2 輸出系統日期和時間197
8.8 難點解答.199
8.8.1 數組下標越界199
8.8.2 為什麼使用數組199
8.9 小結200
8.10 動手糾錯.200
第9章函式201
9.1 函式概述202
9.2 函式的定義202
9.2.1 函式定義的形式202
9.2.2 定義與聲明204
9.3 返回語句205
9.3.1 無返回值函式.205
9.3.2 返回值206
9.4 函式參數208
9.4.1 形式參數與實際參數208
9.4.2 數組作函式參數210
9.4.3 main函式的參數215
9.5 函式的調用216
9.5.1 函式的調用方式216
9.5.2 嵌套調用219
9.5.3 遞歸調用222
9.6 內部函式和外部函式224
9.6.1 內部函式225
9.6.2 外部函式226
9.7 局部變數和全局變數227
9.7.1 局部變數.228
9.7.2 全局變數231
9.8 函式套用234
9.9 難點解答240
9.9.1 怎樣區分聲明和定義240
9.9.2 為什麼每個程式都有main函式?為什麼不用聲明就可以使用?240
9.10 小結.241
9.11 動手糾錯.241
第10章指針.243
10.1 指針相關概念.244
10.1.1 地址與指針.244
10.1.2 變數與指針.245
10.1.3 指針變數.245
10.1.4 指針自增自減運算.250
10.2 數組與指針.252
10.2.1 一維數組與指針.252
10.2.2 二維數組與指針.255
10.2.3 字元串與指針.259
10.2.4 字元串數組.261
10.3 指向指針的指針.263
10.4 指針變數作函式參數.265
10.5 返回指針值的函式.275
10.6 指針數組作main函式的參數.277
10.7 難點解答.279
10.7.1 為什麼使用指針,指針的優點.279
10.7.2 指針的初始化問題.279
10.8 小結.279
10.9 動手糾錯.279
第3篇高級套用
第11章結構體與鍊表.282
11.1 結構體.283
11.1.1 結構體類型的概念.283
11.1.2 結構體變數的定義.284
11.1.3 結構體變數的引用.285
11.1.4 結構體類型的初始化.287
11.2 結構體數組.288
11.2.1 定義結構體數組.289
11.2.2 初始化結構體數組.290
11.3 結構體指針.292
11.3.1 指向結構體變數的指針.292
11.3.2 指向結構體數組的指針.295
11.3.3 結構體作為函式參數.297
11.4 包含結構的結構.301
11.5 鍊表.302
11.5.1 鍊表概述.303
11.5.2 創建動態鍊表.304
11.5.3 輸出鍊表.306
11.6 鍊表相關操作.310
11.6.1 鍊表的插入操作.310
11.6.2 鍊表的刪除操作.312
11.7 難點解答.317
11.7.1 結構體怎樣賦值.317
11.7.2 鍊表與數組.317
11.8 小結.318
11.9 動手糾錯.318
第12章共用體與枚舉類型.319
12.1 共用體.320
12.1.1 共用體的概念.320
12.1.2 共用體變數的引用.321
12.1.3 共用體變數的初始化322
12.1.4 共用體類型的數據特點323
12.2 枚舉類型.324
12.3 難點解答.326
12.3.1 共用體和結構體的區別.326
12.3.2 枚舉類型什麼時候使用?.326
12.4 小結.326
12.5 動手糾錯326
第13章位運算.327
13.1 位與位元組.328
13.2 位運算操作符.328
13.2.1 “與”運算符.329
13.2.2 “或”運算符.330
13.2.3 “取反”運算符.332
13.2.4 “異或”運算符.333
13.2.5 “左移”運算符.335
13.2.6 “右移”運算符.336
13.3 循環移位.338
13.4 位段.341
13.4.1 位段的概念與定義.341
13.4.2 位段相關說明.342
13.5 難點解答343
13.5.1 &與&&有什麼不同?343
13.5.2 |與||的區別344
13.6 小結.344
13.7 動手糾錯.344
第14章預處理.345
14.1 宏定義.346
14.1.1 不帶參數的宏定義.346
14.1.2 帶參數的宏定義.348
14.2 #include指令349
14.3 條件編譯.351
14.3.1 #if命令351
14.3.2 #ifdef及#ifndef命令354
14.3.3 #undef命令.356
14.3.4 #line命令357
14.3.5 #pragma命令357
14.4 小結.358
14.5 動手糾錯.358
第15章檔案.359
15.1 檔案概述.360
15.2 檔案基本操作.360
15.2.1 檔案指針.361
15.2.2 檔案的打開.361
15.2.3 檔案的關閉.362
15.3 檔案的讀寫.363
15.3.1 fputc()函式363
15.3.2 fgetc()函式364
15.3.3 fputs()函式365
15.3.4 fgets()函式366
15.3.5 fprintf()函式367
15.3.6 fscanf()函式.368
15.3.7 fread()和fwrite()函式370
15.4 檔案的定位.372
15.4.1 fseek()函式373
15.4.2 rewind()函式.374
15.4.3 ftell()函式376
15.5 難點解答.379
15.5.1 怎樣運行本章程式.379
15.5.2 為什麼程式後都有fclose()函式.379
15.6 小結.379
15.7 動手糾錯.380
第16章存儲管理381
16.1 記憶體組織方式.382
16.1.1 記憶體的組織方式.382
16.1.2 堆與棧.382
16.2 動態管理.385
16.2.1 malloc()函式.385
16.2.2 calloc()函式.386
16.2.3 realloc()函式388
16.2.4 free()函式.389
16.3 記憶體丟失.390
16.4 難點解答.391
16.4.1 malloc()函式分配記憶體為什麼常寫(int*)?.391
16.4.2 malloc()、calloc()、realloc()函式的區別?391
16.5 小結.391
16.6 動手糾錯.391
第17章網路套接字編程393
17.1 計算機網路基礎.394
17.1.1 IP位址.394
17.1.2 OSI七層參考模型394
17.1.3 地址解析.395
17.1.4 域名系統.396
17.1.5 TCP/IP協定.397
17.1.6 連線埠.399
17.1.7 套接字的引入.399
17.1.8 網路位元組順序.400
17.2 套接字概述.400
17.2.1 套接字概述.400
17.2.2 TCP的套接字的socket編程401
17.2.3 UDP的套接字的socket編程402
17.3 套接字函式.403
17.3.1 套接字函式介紹.403
17.3.2 基於TCP的網路聊天程式409
17.4 難點解答.415
17.4.1 TCP與UDP的比較.415
17.4.2 如何實現網路通信.415
17.5 小結.416
17.6 動手糾錯.416
第4篇項目實戰
第18章學生成績管理系統418
18.1 需求分析.419
18.2 系統設計.419
18.3 功能設計.420
18.3.1 功能選擇界面.420
18.3.2 錄入學生成績信息.422
18.3.3 查詢學生成績信息.424
18.3.4 刪除學生成績信息.425
18.3.5 修改學生成績信息.427
18.3.6 插入學生成績信息.429
18.3.7 統計學生人數.431
18.4 小結.431