關(guān)于我們
書單推薦
新書推薦
|
C編程從入門到實(shí)踐
本書循序漸進(jìn)、由淺入深地講解了C語言開發(fā)的技術(shù)。全書共25章。本書不僅介紹了C語言的基礎(chǔ)和核心知識(如開發(fā)工具、語法、運(yùn)算符、表達(dá)式、輸入/輸出、流程控制、數(shù)組、字符串、函數(shù)),還講解了C語言中的重點(diǎn)和難點(diǎn)(如指針、結(jié)構(gòu)體、共用體和枚舉、鏈表、位運(yùn)算、預(yù)編譯、文件操作、調(diào)試、內(nèi)存管理、高級編程技術(shù)、算法、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)編程技術(shù)等)。此外,本書還通過4個(gè)綜合實(shí)例,介紹了C語言在綜合項(xiàng)目中的應(yīng)用。全書內(nèi)容以“技術(shù)解惑”和“范例演練”貫穿全書,引領(lǐng)讀者全面掌握C語言。
本書不但適用C語言的初學(xué)者,也適合有一定C語言基礎(chǔ)的讀者學(xué)習(xí),還可以作為大專院校相關(guān)專業(yè)的師生用書和培訓(xùn)學(xué)校的教材。
《C編程從入門到實(shí)踐》融合了入門類、范例類和項(xiàng)目實(shí)戰(zhàn)類圖書的內(nèi)容。最大特色是實(shí)現(xiàn)了入門知識、實(shí)例演示、范例演練、技術(shù)解惑、綜合實(shí)戰(zhàn)5大部分的融合。對于實(shí)戰(zhàn)知識,不是點(diǎn)到為止地講解,而是深入地探討。用“紙質(zhì)書+配套資料(視頻和源程序)+網(wǎng)絡(luò)答疑”的方式,提供了“入門+范例+項(xiàng)目實(shí)戰(zhàn)”的一站式服務(wù),幫助讀者從入門平滑過渡到順利完成項(xiàng)目。
本書特色:
- 以“從入門到精通”的方法寫作,有助于讀者快速入門。
為了使讀者能夠完全看懂本書的內(nèi)容,本書遵循“從入門到精通”的寫法,循序漸進(jìn)地講解C語言的基本知識。
- 破解語言難點(diǎn),以“技術(shù)解惑”貫穿全書,繞過學(xué)習(xí)中的陷阱。
本書不會羅列式講解C語言的知識點(diǎn)。為了幫助讀者學(xué)懂基本知識點(diǎn),每章都會有“技術(shù)解惑”板塊,它能讓讀者知其然又知其所以然,也就是看得明白,學(xué)得通。
- 書中包含大量實(shí)例和范例。
本書通過實(shí)例、范例和綜合實(shí)例,講述C語言中的知識點(diǎn)。每一個(gè)實(shí)例都有兩個(gè)與之相關(guān)的范例。這些實(shí)例及范例有助于讀者鞏固理論知識,達(dá)到舉一反三的效果。
- 通過視頻講解,降低學(xué)習(xí)難度。
對于本書的每一章,均提供了聲圖并茂的教學(xué)視頻,這些視頻能夠引導(dǎo)初學(xué)者快速入門,增強(qiáng)學(xué)習(xí)信心,從而快速理解所學(xué)知識。
- 提供源程序、視頻、PPT,讓學(xué)習(xí)更輕松。
因?yàn)楸緯膬?nèi)容非常多,不可能用一本書的篇幅囊括“入門+范例+項(xiàng)目案例”的內(nèi)容,所以本書配套網(wǎng)站toppr不但包含全書的源代碼,而且提供實(shí)例講解視頻和PPT。
- 用QQ群+網(wǎng)站論壇實(shí)現(xiàn)教學(xué)互動(dòng),形成互幫互學(xué)的朋友圈。
為了方便給讀者答疑,作者特提供了網(wǎng)站論壇、QQ群等交流方式(詳見本書前言部分),并且隨時(shí)在線與讀者互動(dòng),讓大家在互學(xué)互幫中形成一個(gè)良好的編程學(xué)習(xí)氛圍。
王長青,華為通信工程師,現(xiàn)負(fù)責(zé)電信BSS領(lǐng)域相關(guān)產(chǎn)品的詳細(xì)架構(gòu)設(shè)計(jì)和開發(fā)實(shí)施工作。熟悉面向?qū)ο蠹夹g(shù)及UML,15年C和C++開發(fā)經(jīng)驗(yàn),10年C#開發(fā)經(jīng)驗(yàn),熟悉相關(guān)的編譯原理、數(shù)據(jù)結(jié)構(gòu)、算法。精通Unix、Linux操作系統(tǒng),且能熟練使用常用操作命令,并且熟悉該環(huán)境下的C/C++開發(fā)。
目 錄
第1章 C語言之定位 1
1.1 計(jì)算機(jī)應(yīng)用基礎(chǔ) 2
1.1.1 中央處理器 2
1.1.2 位和字節(jié) 2
1.1.3 二進(jìn)制 2
1.1.4 編碼格式 3
1.2 C語言的誕生 4
1.3 第一印象的建立 5
1.4 理解編譯系統(tǒng)—學(xué)習(xí)的第一步 6
1.5 技術(shù)解惑 7
1.5.1 學(xué)習(xí)C語言還有用嗎 7
1.5.2 怎樣學(xué)好C語言 8
1.5.3 學(xué)好C語言的建議 8
1.6 課后練習(xí) 8
第2章 C語言開發(fā)工具詳解 9
2.1 用DOS開發(fā)C程序 10
2.1.1 安裝Turbo C 3.0 10
2.1.2 使用Turbo C 3.0 10
2.2 在Windows環(huán)境下使用
Visual Studio 2017 11
2.2.1 安裝Visual Studio 2017 11
2.2.2 使用Visual Studio 2017開發(fā)一個(gè)C程序 15
2.3 使用輕量級開發(fā)工具DEV C++ 18
2.3.1 安裝DEV C++ 18
2.3.2 使用DEV C++運(yùn)行一個(gè)C程序 20
2.4 使用Vsiual C++ 6.0開發(fā)C程序 20
2.5 使用手機(jī)開發(fā)C程序 22
2.6 技術(shù)解惑 23
2.6.1 安裝Visual Studio 2017時(shí)遇到的常見問題 23
2.6.2 在Windows 7中安裝Visual Studio時(shí)遇到的常見問題 24
2.7 課后練習(xí) 24
第3章 程序員基本素質(zhì)的培養(yǎng) 25
3.1 養(yǎng)成好的命名習(xí)慣 26
3.2 C程序文件結(jié)構(gòu) 26
3.2.1 C程序的組成部分 26
3.2.2 C程序的格式總結(jié) 27
3.3 養(yǎng)成好的C語言編程風(fēng)格 28
3.3.1 隨時(shí)使用縮進(jìn)格式 28
3.3.2 注意大括號的位置 28
3.3.3 函數(shù)的規(guī)則 29
3.3.4 注意注釋 29
3.4 如何成為一名優(yōu)秀的程序員 29
3.5 技術(shù)解惑 31
3.6 課后練習(xí) 31
第4章 C語言語法 32
4.1 標(biāo)識符和關(guān)鍵字 33
4.2 最基本的數(shù)據(jù)類型 33
4.3 常量和變量 34
4.3.1 常量 35
4.3.2 變量 36
4.4 整型數(shù)據(jù) 37
4.4.1 整型常量 38
4.4.2 整型變量 39
4.5 實(shí)型數(shù)據(jù) 41
4.5.1 實(shí)型常量 41
4.5.2 實(shí)型變量 42
4.5.3 實(shí)型常量的類型 43
4.6 字符型數(shù)據(jù) 43
4.6.1 字符常量 43
4.6.2 字符串常量 45
4.6.3 字符變量 46
4.7 初始化變量 47
4.8 整型、實(shí)型和字符型數(shù)據(jù)間的運(yùn)算總結(jié) 47
4.8.1 自動(dòng)轉(zhuǎn)換 47
4.8.2 強(qiáng)制轉(zhuǎn)換 49
4.9 技術(shù)解惑 49
4.9.1 在C語言中無符號整型變量和有符號整型變量
的定義 49
4.9.2 在C語言中字符變量的含義 50
4.9.3 如何理解字符型數(shù)據(jù)的取值范圍 50
4.9.4 怎樣將帶小數(shù)點(diǎn)的字符型數(shù)據(jù)轉(zhuǎn)換成浮點(diǎn)型 50
4.10 課后練習(xí) 51
第5章 運(yùn)算符和表達(dá)式 52
5.1 運(yùn)算符和表達(dá)式的概述 53
5.1.1 運(yùn)算符的種類 53
5.1.2 運(yùn)算符的優(yōu)先級 54
5.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 55
5.2.1 單目運(yùn)算符 55
5.2.2 雙目運(yùn)算符 56
5.3 賦值運(yùn)算符和賦值表達(dá)式 56
5.3.1 基本賦值運(yùn)算符 56
5.3.2 復(fù)合賦值運(yùn)算符 57
5.3.3 賦值表達(dá)式 58
5.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 59
5.4.1 關(guān)系運(yùn)算符 59
5.4.2 關(guān)系表達(dá)式 59
5.5 邏輯運(yùn)算符和邏輯表達(dá)式 60
5.5.1 邏輯運(yùn)算符 60
5.5.2 邏輯表達(dá)式 60
5.6 逗號運(yùn)算符和逗號表達(dá)式 62
5.6.1 逗號運(yùn)算符 62
5.6.2 逗號表達(dá)式 62
5.7 求字節(jié)數(shù)的運(yùn)算符 63
5.8 技術(shù)解惑 64
5.8.1 C語言運(yùn)算符優(yōu)先級的詳情 64
5.8.2 少數(shù)運(yùn)算符在規(guī)定表達(dá)式中的求值順序 65
5.8.3 在C語言中是否可以進(jìn)行混合運(yùn)算 66
5.8.4 在一個(gè)邏輯條件語句中常數(shù)項(xiàng)永遠(yuǎn)在左側(cè) 66
5.8.5 賦值處理的自動(dòng)類型轉(zhuǎn)換 66
5.9 課后練習(xí) 67
第6章 輸入和輸出 68
6.1 C語句的初步知識 69
6.1.1 C語句簡介 69
6.1.2 賦值語句 70
6.2 打通任督二脈—數(shù)據(jù)輸入和輸出 71
6.2.1 putchar函數(shù) 71
6.2.2 getchar函數(shù) 72
6.2.3 printf函數(shù) 73
6.2.4 scanf函數(shù) 76
6.2.5 puts函數(shù) 79
6.2.6 C11標(biāo)準(zhǔn)函數(shù)gets_s 80
6.3 技術(shù)解惑 80
6.3.1 gets_s函數(shù)和scanf函數(shù)的區(qū)別 80
6.3.2 克服gets_s函數(shù)的缺陷 81
6.3.3 C語言的輸入和輸出問題 82
6.4 課后練習(xí) 83
第7章 流程控制 84
7.1 最常見的順序結(jié)構(gòu) 85
7.2 選擇結(jié)構(gòu) 85
7.2.1 單分支結(jié)構(gòu)語句 86
7.2.2 雙分支結(jié)構(gòu)語句 87
7.2.3 多分支結(jié)構(gòu)語句 90
7.2.4 條件運(yùn)算符和條件表達(dá)式 91
7.3 循環(huán)結(jié)構(gòu) 92
7.3.1 for語句 93
7.3.2 while語句 94
7.3.3 do…while語句 96
7.3.4 正確對待goto語句 97
7.3.5 break/continue跳躍 98
7.3.6 死循環(huán)/退出程序 99
7.4 技術(shù)解惑 100
7.4.1 循環(huán)中的低效問題 100
7.4.2 分析C語言循環(huán)語句的效率 101
7.4.3 使用for循環(huán)語句的注意事項(xiàng) 102
7.5 課后練習(xí) 102
第8章 數(shù)組和字符串—數(shù)據(jù)的存在形式 104
8.1 一維數(shù)組 105
8.1.1 定義一維數(shù)組 105
8.1.2 引用一維數(shù)組的元素 105
8.1.3 初始化一維數(shù)組 106
8.2 多維數(shù)組 107
8.2.1 二維數(shù)組的用法 107
8.2.2 多維數(shù)組的用法 110
8.3 字符數(shù)組與字符串 112
8.3.1 字符數(shù)組 112
8.3.2 字符串與字符數(shù)組 113
8.3.3 字符數(shù)組的輸入和輸出 113
8.4 字符串處理函數(shù) 115
8.4.1 測試字符串長度的函數(shù) 115
8.4.2 字符串大小寫轉(zhuǎn)換函數(shù) 115
8.4.3 字符串復(fù)制函數(shù) 116
8.4.4 字符串比較函數(shù) 117
8.4.5 字符串連接函數(shù) 119
8.4.6 其他的字符串函數(shù) 119
8.4.7 將字符串轉(zhuǎn)換成數(shù)值的函數(shù) 120
8.5 字符處理函數(shù) 121
8.5.1 字符檢測函數(shù) 121
8.5.2 字符大小寫轉(zhuǎn)換函數(shù) 122
8.6 技術(shù)解惑 123
8.6.1 數(shù)組的下標(biāo)總是從0開始嗎 123
8.6.2 C語言對數(shù)組的處理非常有效嗎 124
8.6.3 初始化一維數(shù)組的注意事項(xiàng) 124
8.6.4 冒泡排序 125
8.7 課后練習(xí) 125
第9章 函數(shù) 126
9.1 C函數(shù)的基礎(chǔ)知識 127
9.1.1 函數(shù)的分類 127
9.1.2 函數(shù)的定義 128
9.2 函數(shù)聲明和函數(shù)原型 129
9.3 函數(shù)的參數(shù) 131
9.3.1 形參和實(shí)參 131
9.3.2 以數(shù)組名作為函數(shù)的參數(shù) 132
9.3.3 以數(shù)組作為函數(shù)的參數(shù) 133
9.4 函數(shù)的返回值 135
9.5 函數(shù)的調(diào)用 136
9.5.1 函數(shù)調(diào)用的格式 136
9.5.2 函數(shù)的調(diào)用方式 137
9.5.3 被調(diào)函數(shù)的聲明方式 138
9.5.4 對調(diào)用函數(shù)的方式進(jìn)行深入分析 139
9.6 函數(shù)的嵌套調(diào)用和遞歸調(diào)用 140
9.6.1 函數(shù)的嵌套調(diào)用 140
9.6.2 函數(shù)的遞歸調(diào)用 142
9.7 變量的作用域和生存期 145
9.7.1 變量作用域 145
9.7.2 靜態(tài)存儲變量和動(dòng)態(tài)存儲變量 147
9.8 C的內(nèi)部函數(shù)和外部函數(shù) 153
9.8.1 內(nèi)部函數(shù) 153
9.8.2 外部函數(shù) 153
9.9 庫函數(shù) 154
9.10 技術(shù)解惑 156
9.10.1 通過Turbo C深入分析 項(xiàng)目文件 156
9.10.2 要盡量避免不必要的函數(shù)調(diào)用 157
9.10.3 請確保函數(shù)的聲明和定義是靜態(tài)的 158
9.10.4 避免過長的main()函數(shù) 158
9.10.5 函數(shù)的地址也是數(shù)據(jù) 160
9.10.6 說明函數(shù)的時(shí)機(jī) 160
9.10.7 一個(gè)函數(shù)可以有多少個(gè)參數(shù) 161
9.10.8 如果一個(gè)函數(shù)沒有返回值,是否需要加入return
語句 162 9.10.9 在程序退出main函數(shù)之后還有可能執(zhí)行一部分代碼 162 9.10.10 exit()函數(shù)和return語句的差異 162 9.11 課后練習(xí) 162 第10章 指針 164 10.1 基本概念 165 10.2 變量的指針和指向變量的指針變量 165 10.2.1 聲明指針變量 166 10.2.2 指針變量的初始化 166 10.2.3 指針變量的引用 167 10.2.4 關(guān)于指針運(yùn)算符的說明 168 10.2.5 指針變量的運(yùn)算 169 10.2.6 以指針變量作為函數(shù)參數(shù) 170 10.2.7 void類型的指針 173 10.3 指針和數(shù)組 174 10.3.1 數(shù)組元素的指針 174 10.3.2 指向一維數(shù)組元素的指針變量 175 10.3.3 通過指針引用數(shù)組元素 176 10.3.4 以數(shù)組名作為函數(shù)參數(shù) 179 10.4 指針和多維數(shù)組 180 10.4.1 多維數(shù)組的地址 180 10.4.2 指向多維數(shù)組的指針變量 182 10.5 指針和字符串 185 10.5.1 指針訪問字符串 185 10.5.2 以字符串指針作為函數(shù)參數(shù) 186 10.5.3 字符串指針變量與字符數(shù)組的區(qū)別 187 10.6 指針數(shù)組和多級指針 188 10.6.1 指針數(shù)組 188 10.6.2 多級指針的定義和應(yīng)用 189 10.6.3 指向指針的指針 191 10.6.4 main函數(shù)的參數(shù) 191 10.7 指針函數(shù)和函數(shù)指針 192 10.7.1 指針函數(shù) 193 10.7.2 函數(shù)指針 193 10.8 技術(shù)解惑 195 10.8.1 初始化指針時(shí)的注意事項(xiàng) 195 10.8.2 為指針賦值時(shí)的注意事項(xiàng) 196 10.8.3 當(dāng)指針用于數(shù)組時(shí)的注意事項(xiàng) 197 10.8.4 在結(jié)構(gòu)中使用指針時(shí)的注意事項(xiàng) 197 10.8.5 避免不必要的內(nèi)存引用 198 10.8.6 避免懸空指針和野指針 198 10.8.7 數(shù)組下標(biāo)與指針的效率解析 199 10.8.8 使用指針時(shí)的常見錯(cuò)誤 199 10.9 課后練習(xí) 200 第11章 數(shù)據(jù)的熔爐—結(jié)構(gòu)體、共用體和枚舉 202 11.1 結(jié)構(gòu)體 203 11.1.1 定義結(jié)構(gòu)體類型 203 11.1.2 定義結(jié)構(gòu)體類型變量 203 11.1.3 引用結(jié)構(gòu)體變量 205 11.1.4 初始化結(jié)構(gòu)體變量 206 11.2 結(jié)構(gòu)體數(shù)組 207 11.2.1 定義結(jié)構(gòu)體數(shù)組 208 11.2.2 初始化結(jié)構(gòu)體數(shù)組 209 11.2.3 引用結(jié)構(gòu)體數(shù)組 210 11.3 結(jié)構(gòu)體指針 211 11.3.1 定義結(jié)構(gòu)體指針變量 212 11.3.2 初始化結(jié)構(gòu)體指針變量 212 11.3.3 引用結(jié)構(gòu)體指針變量 212 11.3.4 指向結(jié)構(gòu)變量的指針 213 11.3.5 指向結(jié)構(gòu)體數(shù)組的指針 214 11.4 在函數(shù)中使用結(jié)構(gòu)體 214 11.4.1 結(jié)構(gòu)體變量和結(jié)構(gòu)體指針可以作為函數(shù)參數(shù) 215 11.4.2 函數(shù)可以返回結(jié)構(gòu)體類型的值 215 11.5 共用體(聯(lián)合) 217 11.5.1 定義共用體和共用體變量 217 11.5.2 引用和初始化共用體變量 218 11.6 枚舉 219 11.6.1 定義枚舉類型 219 11.6.2 定義枚舉變量 220 11.6.3 引用枚舉變量 220 11.7 typedef定義類型的作用 222 11.7.1 類型定義符typedef的基礎(chǔ) 222 11.7.2 使用typedef 223 11.8 技術(shù)解惑 224 11.8.1 可以省略結(jié)構(gòu)名嗎 224 11.8.2 是否可以定義一種通用數(shù)據(jù)類型以存儲任意類型的數(shù)據(jù) 224 11.8.3 結(jié)構(gòu)和共用體的區(qū)別 224 11.8.4 定義C結(jié)構(gòu)體的問題 225 11.9 課后練習(xí) 225 第12章 鏈表 226 12.1 動(dòng)態(tài)內(nèi)存分配 227 12.1.1 動(dòng)態(tài)內(nèi)存分配的作用 227 12.1.2 實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存分配及管理的方法 227 12.2 鏈表詳解 230 12.2.1 鏈表簡介 230 12.2.2 單向鏈表 231 12.2.3 創(chuàng)建一個(gè)鏈表 233 12.2.4 刪除整個(gè)鏈表 234 12.2.5 在鏈表中插入節(jié)點(diǎn) 234 12.2.6 在鏈表中刪除節(jié)點(diǎn) 235 12.2.7 雙向鏈表 236 12.2.8 循環(huán)鏈表 237 12.3 技術(shù)解惑 238 12.3.1 鏈表的總結(jié) 238 12.3.2 面試題—判斷單鏈表是否有環(huán) 242 12.3.3 面試題—實(shí)現(xiàn)單鏈表逆置 243 12.4 課后練習(xí) 244 第13章 位運(yùn)算 245 13.1 位運(yùn)算符和位運(yùn)算 246 13.1.1 按位與運(yùn)算 246 13.1.2 按位或運(yùn)算 247 13.1.3 按位異或運(yùn)算 247 13.1.4 取反運(yùn)算 248 13.1.5 左移運(yùn)算 248 13.1.6 右移運(yùn)算 249 13.1.7 位運(yùn)算的應(yīng)用實(shí)例 249 13.2 位域 251 13.2.1 位域的定義和位域變量的說明 251 13.2.2 位域的使用 252 13.3 技術(shù)解惑 252 13.3.1 二進(jìn)制補(bǔ)碼的運(yùn)算公式 252 13.3.2 面試題—從某個(gè)數(shù)中取出指定的某些位 252 13.3.3 位域的內(nèi)存對齊原則 253 13.4 課后練習(xí) 253 第14章 預(yù)編譯處理 255 14.1 預(yù)編譯的基礎(chǔ) 256 14.2 宏定義 256 14.2.1 不帶參數(shù)的宏定義 256 14.2.2 帶參數(shù)的宏定義 258 14.2.3 字符串化運(yùn)算符 260 14.2.4 并接運(yùn)算符 260 14.3 文件包含 260 14.4 條件編譯 262 14.4.1 #ifdef… #else…#endif命令 262 14.4.2 #if defined… #else…#endif 263 14.4.3 #ifndef… #else…#endif 263 14.4.4 #if !defined… #else…#endif 264 14.4.5 #ifdef…#elif… #elif…#else… #endif 264 14.5 技術(shù)解惑 265 14.5.1 還有其他預(yù)編譯指令嗎 265 14.5.2 帶參的宏定義和函數(shù)不同 266 14.5.3 C語言中預(yù)處理指令的總結(jié) 266 14.5.4 預(yù)編譯指令的本質(zhì) 267 14.5.5 sizeof(int)在預(yù)編譯階段是不會求值的 267 14.5.6 多行預(yù)處理指令的寫法 267 14.6 課后練習(xí) 267 第15章 文件操作 268 15.1 文件 269 15.1.1 文本文件 269 15.1.2 文件分類 270 15.2 文件指針 270 15.3 文件的打開與關(guān)閉 271 15.3.1 打開文件 271 15.3.2 關(guān)閉文件 273 15.4 文件讀寫 274 15.4.1 字符讀寫函數(shù) 274 15.4.2 字符串讀寫函數(shù) 276 15.4.3 格式化讀寫函數(shù) 278 15.4.4 數(shù)據(jù)塊讀寫函數(shù) 279 15.4.5 其他讀寫函數(shù) 280 15.5 文件的隨機(jī)讀寫 281 15.5.1 fseek函數(shù) 281 15.5.2 rewind函數(shù) 283 15.5.3 ftell函數(shù) 283 15.6 文件管理函數(shù) 284 15.6.1 刪除文件 284 15.6.2 重命名文件 285 15.6.3 復(fù)制文件 285 15.7 文件狀態(tài)檢測函數(shù) 286 15.7.1 feof函數(shù) 287 15.7.2 ferror函數(shù) 287 15.7.3 clearerr函數(shù) 287 15.8 Win32 API中的文件操作函數(shù) 288 15.8.1 創(chuàng)建和打開文件 288 15.8.2 讀取、寫入和刪除文件 289 15.9 技術(shù)解惑 289 15.9.1 文件指針是文件內(nèi)部的位置指針嗎 289 15.9.2 fseek函數(shù)的換行問題 290 15.9.3 怎樣解決gets函數(shù)的溢出問題 290 15.9.4 feof函數(shù)會多讀一個(gè)數(shù)據(jù)嗎 290 15.9.5 流和文件的關(guān)系 290 15.10 課后練習(xí) 291 第16章 錯(cuò)誤和程序調(diào)試 292 16.1 常見錯(cuò)誤分析 293 16.1.1 語法錯(cuò)誤 293 16.1.2 邏輯錯(cuò)誤(語義錯(cuò)誤) 294 16.1.3 內(nèi)存錯(cuò)誤 297 16.2 錯(cuò)誤的檢出與分離 302 16.3 調(diào)試時(shí)的注意事項(xiàng) 303 16.3.1 上機(jī)前要先熟悉程序的運(yùn)行環(huán)境 303 16.3.2 在編程時(shí)要為調(diào)試做好準(zhǔn)備 304 16.4 技術(shù)解惑 304 16.4.1 編譯通過并不代表運(yùn)行正確 304 16.4.2 兩段代碼的編譯差別 305 16.4.3 調(diào)試程序的方法與技巧 305 16.5 課后練習(xí) 307 第17章 內(nèi)存管理 308 17.1 C語言中的內(nèi)存模型 309 17.2 棧和堆 309 17.2.1 棧操作 309 17.2.2 堆操作 310 17.3 動(dòng)態(tài)管理 311 17.3.1 使用函數(shù)malloc動(dòng)態(tài)分配內(nèi)存空間 311 17.3.2 使用函數(shù)calloc分配內(nèi)存空間并初始化 312 17.3.3 使用函數(shù)realloc重新分配內(nèi)存 313 17.3.4 使用函數(shù)free釋放內(nèi)存空間 314 17.4 課后練習(xí) 315 第18章 C語言高級編程技術(shù) 316 18.1 C語言的高級編程技術(shù) 317 18.2 分析文本的屏幕輸出和鍵盤輸入 317 18.2.1 實(shí)現(xiàn)文本的屏幕輸出 317 18.2.2 實(shí)現(xiàn)鍵盤輸入 322 18.2.3 應(yīng)用實(shí)例 323 18.3 分析圖形顯示方式和鼠標(biāo)輸入 324 18.3.1 初始化圖形模式 325 18.3.2 清屏和恢復(fù)顯示函數(shù) 326 18.3.3 建立獨(dú)立圖形程序 327 18.3.4 基本繪圖函數(shù) 327 18.3.5 線性函數(shù) 330 18.3.6 顏色控制函數(shù) 331 18.3.7 填色函數(shù)和畫圖函數(shù) 334 18.3.8 圖形窗口函數(shù) 336 18.3.9 分析圖形方式下的文本輸出函數(shù) 337 18.4 菜單設(shè)計(jì) 340 18.5 課后練習(xí) 343 第19章 算法—抓住程序的靈魂 344 19.1 我們對算法的理解 345 19.1.1 算法是程序的靈魂 345 19.1.2 何謂算法 345 19.1.3 算法的特性 346 19.2 算法表示法—流程圖 347 19.3 枚舉算法 348 19.3.1 枚舉算法的基礎(chǔ) 348 19.3.2 實(shí)戰(zhàn)演練—百錢買百雞 348 19.3.3 實(shí)戰(zhàn)演練—填寫運(yùn)算符 349 19.4 遞推算法 351 19.4.1 遞推算法的基礎(chǔ) 351 19.4.2 實(shí)戰(zhàn)演練—斐波那契數(shù)列 351 19.4.3 實(shí)戰(zhàn)演練—銀行存款 353 19.5 遞歸算法 354 19.5.1 遞歸算法的基礎(chǔ) 354 19.5.2 實(shí)戰(zhàn)演練—漢諾塔 355 19.5.3 實(shí)戰(zhàn)演練—階乘 357 19.6 分治算法 358 19.6.1 分治算法的基礎(chǔ) 358 19.6.2 實(shí)戰(zhàn)演練—大數(shù)相乘 358 19.6.3 實(shí)戰(zhàn)演練—?dú)W洲冠軍杯 比賽日程安排 360 19.7 貪心算法 362 19.7.1 貪心算法的基礎(chǔ) 363 19.7.2 實(shí)戰(zhàn)演練—裝箱 363 19.7.3 實(shí)戰(zhàn)演練—找零方案 365 19.8 試探法算法 366 19.8.1 試探法算法的基礎(chǔ) 366 19.8.2 實(shí)戰(zhàn)演練—八皇后 367 19.8.3 實(shí)戰(zhàn)演練—體彩29選7的組合 368 19.9 迭代算法 370 19.9.1 迭代算法的基礎(chǔ) 370 19.9.2 實(shí)戰(zhàn)演練—求平方根 370 19.10 模擬算法 371 19.10.1 模擬算法的思路 371 19.10.2 實(shí)戰(zhàn)演練—猜數(shù)字游戲 372 19.10.3 實(shí)戰(zhàn)演練—擲骰子 游戲 372 19.11 技術(shù)解惑 374 19.11.1 衡量算法的標(biāo)準(zhǔn) 374 19.11.2 選擇使用枚舉法的時(shí)機(jī) 375 19.11.3 遞推和遞歸的差異 376 19.11.4 分治法解決問題的類型 376 19.11.5 分治算法的機(jī)理 376 19.11.6 貪婪算法并不是解決問題最優(yōu)方案的原因 376 19.11.7 回溯算法是否會影響算法效率 377 19.11.8 遞歸算法與迭代算法的區(qū)別 377 19.12 課后練習(xí) 377 第20章 數(shù)據(jù)結(jié)構(gòu) 379 20.1 使用線性表 380 20.1.1 線性表的特性 380 20.1.2 順序表操作 381 20.1.3 實(shí)戰(zhàn)演練—使用順序表操作函數(shù) 385 20.2 隊(duì)列 386 20.2.1 隊(duì)列的定義 386 20.2.2 實(shí)戰(zhàn)演練—實(shí)現(xiàn)一個(gè)排號程序 387 20.3 !390 20.3.1 棧的定義 390 20.3.2 實(shí)戰(zhàn)演練—實(shí)現(xiàn)棧操作 390 20.4 技術(shù)解惑 392 20.4.1 線性表插入操作的時(shí)間復(fù)雜度 392 20.4.2 線性表刪除操作的時(shí)間復(fù)雜度 392 20.4.3 線性表按值查找操作的時(shí)間復(fù)雜度 392 20.4.4 線性表鏈接存儲操作的11種算法 393 20.4.5 堆和棧的區(qū)別 397 20.5 課后練習(xí) 397 第21章 網(wǎng)絡(luò)編程技術(shù) 398 21.1 OSI 7層網(wǎng)絡(luò)模型 399 21.2 TCP/IP 400 21.2.1 IP 401 21.2.2 TCP 402 21.2.3 UDP 403 21.2.4 ICMP 403 21.3 使用C語言開發(fā)網(wǎng)絡(luò)項(xiàng)目 404 21.3.1 網(wǎng)絡(luò)編程方式 404 21.3.2 網(wǎng)絡(luò)通信的基本流程 404 21.3.3 搭建開發(fā)環(huán)境 405 21.3.4 兩個(gè)常用的數(shù)據(jù)結(jié)構(gòu) 405 21.3.5 Windows套接字的基礎(chǔ) 406 21.4 常用的Winsock函數(shù) 406 21.4.1 WSAStartup函數(shù) 406 21.4.2 socket函數(shù) 407 21.4.3 inet_addr函數(shù) 407 21.4.4 gethostbyname函數(shù) 407 21.4.5 bind函數(shù) 407 21.4.6 connect函數(shù) 407 21.4.7 select函數(shù) 408 21.4.8 recv函數(shù) 408 21.4.9 sendto函數(shù) 408 21.5 MAC地址 408 21.6 NetBIOS編程 409 21.6.1 處理過程 409 21.6.2 NetBIOS命令 410 21.6.3 NetBIOS名字解析 410 21.6.4 NetBEUI 413 21.6.5 NetBIOS的范圍 413 21.6.6 NetBIOS控制塊 413 21.7 實(shí)戰(zhàn)演練—獲取當(dāng)前機(jī)器的MAC地址 413 21.7.1 選擇開發(fā)工具 413 21.7.2 設(shè)計(jì)MFC窗體 414 21.7.3 具體編碼 414 第22章 初入江湖—設(shè)計(jì)游戲項(xiàng)目 421 22.1 游戲功能描述 422 22.2 游戲總體設(shè)計(jì) 422 22.2.1 功能模塊設(shè)計(jì) 422 22.2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 424 22.2.3 構(gòu)成函數(shù)介紹 425 22.3 游戲的具體實(shí)現(xiàn) 426 22.3.1 預(yù)處理 426 22.3.2 主函數(shù) 429 22.3.3 初始化界面處理 430 22.3.4 時(shí)鐘中斷處理 431 22.3.5 成績、速度和幫助處理 431 22.3.6 滿行處理 432 22.3.7 方塊顯示和消除處理 434 22.3.8 方塊判斷處理 435 第23章 風(fēng)云再起—設(shè)計(jì)網(wǎng)絡(luò)項(xiàng)目 438 23.1 系統(tǒng)功能描述 439 23.2 系統(tǒng)總體設(shè)計(jì) 439 23.2.1 功能模塊設(shè)計(jì) 439 23.2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 441 23.2.3 構(gòu)成函數(shù)介紹 442 23.3 系統(tǒng)的具體實(shí)現(xiàn) 442 23.3.1 預(yù)處理 442 23.3.2 初始化處理 444 23.3.3 控制模塊 444 23.3.4 數(shù)據(jù)報(bào)解讀處理 446 23.3.5 Ping測試處理 447 23.3.6 主函數(shù) 449 第24章 爐火純青—學(xué)生成績管理系統(tǒng) 451 24.1 系統(tǒng)總體描述 452 24.1.1 項(xiàng)目開發(fā)的目標(biāo) 452 24.1.2 項(xiàng)目的意義 452 24.1.3 系統(tǒng)功能描述 452 24.2 系統(tǒng)總體設(shè)計(jì) 453 24.2.1 功能模塊設(shè)計(jì) 453 24.2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 454 24.2.3 構(gòu)成函數(shù)介紹 455 24.3 系統(tǒng)的具體實(shí)現(xiàn) 456 24.3.1 預(yù)處理 456 24.3.2 主函數(shù) 457 24.3.3 系統(tǒng)主菜單函數(shù) 458 24.3.4 表格顯示信息 458 24.3.5 信息查找定位 459 24.3.6 格式化輸入數(shù)據(jù) 459 24.3.7 增加學(xué)生記錄 460 24.3.8 查詢學(xué)生記錄 461 24.3.9 刪除學(xué)生記錄 462 24.3.10 修改學(xué)生記錄 463 24.3.11 插入學(xué)生記錄 463 24.3.12 統(tǒng)計(jì)學(xué)生記錄 464 24.3.13 排序處理 465 24.3.14 存儲學(xué)生信息 466 第25章 笑傲江湖—使用C51實(shí)現(xiàn)跑馬燈程序 471 25.1 單片機(jī)C語言基礎(chǔ) 472 25.1.1 單片機(jī)C語言的優(yōu)越性 472 25.1.2 C51的數(shù)據(jù)類型 472 25.1.3 C51數(shù)據(jù)的存儲結(jié)構(gòu) 473 25.1.4 C51運(yùn)算符和表達(dá)式 474 25.1.5 C51的中斷函數(shù) 475 25.2 跑馬燈設(shè)計(jì)實(shí)例 476 25.2.1 基本跑馬燈的實(shí)現(xiàn) 476 25.2.2 矩形波發(fā)生器 479 25.2.3 用定時(shí)器/計(jì)數(shù)器產(chǎn)生矩形波 480 25.3 一個(gè)完整的跑馬燈程序 481 25.3.1 電路設(shè)計(jì) 481 25.3.2 程序設(shè)計(jì) 484
你還可能感興趣
我要評論
|