本書在《C語言程序設(shè)計案例式教程》的基礎(chǔ)上進行了完善、補充和修訂,內(nèi)容更加豐富、翔實,結(jié)構(gòu)層次更加清晰、合理。本書共11章,第1章主要介紹C語言概述、C語言開發(fā)環(huán)境的搭建和C語言程序的編譯機制等;第2章和第3章主要介紹C語言的基礎(chǔ)知識,包括關(guān)鍵字、標識符、常量、變量、數(shù)據(jù)類型、類型轉(zhuǎn)換、運算符與表達式等;第4~9章主要介紹C語言的核心知識,包括結(jié)構(gòu)化程序設(shè)計、數(shù)組、函數(shù)、指針、字符串、結(jié)構(gòu)體等;第10章和第11章主要介紹C語言的其他知識,包括預(yù)處理、文件管理。
本書配套有教學(xué)PPT、題庫、教學(xué)視頻、源代碼、教學(xué)設(shè)計等資源。同時,為了幫助初學(xué)者及時解決學(xué)習(xí)過程中遇到的問題,作者提供了免費的在線答疑平臺。
本書是C語言的入門教材,可作為高等教育本、?圃盒S嬎銠C相關(guān)專業(yè)C語言程序設(shè)計課程的教材,也可作為程序愛好者的自學(xué)讀物。
1. 本書最大的賣點在于采用純案例式的教學(xué)方法,用具體、形象的案例一點一滴地教會讀者各個知識點,全書涵蓋了C 語言程序設(shè)計的常用技術(shù),提供了63 個趣味案例、6 個階段案例、19 道經(jīng)典思考題。
2. 本書提供免費教學(xué)資源,包括10 個精美教學(xué)PPT、723 道測試題、長達15小時的教學(xué)視頻等。
黑馬程序員,成立于2006年,它是傳智教育旗下高端IT教育品牌,由中國Java培訓(xùn)先行者張孝祥老師發(fā)起,聯(lián)合全球最大的中文IT社區(qū)CSDN、中關(guān)村軟件園共同創(chuàng)辦的一家專業(yè)教育機構(gòu)。辦學(xué)至今,我們一直堅守著“為千萬人少走彎路而著書,為中華軟件之崛起而講課”的辦學(xué)理念,堅持培養(yǎng)優(yōu)秀軟件應(yīng)用工程師的宏偉目標,在累計培養(yǎng)的十萬余名學(xué)員中,其中90%的學(xué)員均已在北、上、廣等一線城市高薪就業(yè),特別是“黑馬程序員”的平均就業(yè)薪資已達到8K以上。為了迎合軟件市場的需求,我們陸續(xù)開設(shè)了Java、網(wǎng)頁平面、PHP、.Net、iOS、C/C++、Android等9個專業(yè)方向的課程,并且未來將逐漸開設(shè)其他專業(yè)方向的課程。隨著傳智播客的日益壯大,除了北京總部,我們在上海、廣州、武漢、成都、深圳等地也創(chuàng)立了直營分支機構(gòu),傳智播客儼然已成為了國內(nèi)最具專業(yè)口碑的IT教育機構(gòu)。
第 1章 初識C語言 1
1.1 C語言概述 1
1.1.1 C語言的發(fā)展歷史 1
1.1.2 C語言的標準 2
1.1.3 C語言的特點 2
1.1.4 C語言的應(yīng)用領(lǐng)域 3
1.2 C語言開發(fā)環(huán)境的搭建 3
1.3 第 一個C語言程序 6
1.4 C語言程序的編譯機制 9
本章小結(jié) 10
本章習(xí)題 11
第 2章 C語言的基礎(chǔ)知識 12
【案例2-1】 我愛C語言 12
案例描述 12
知識需求 12
知識講解 12
1.printf()函數(shù) 12
2.scanf()函數(shù) 15
案例實現(xiàn) 16
【案例2-2】 計算圓的面積和周長 16
案例描述 16
知識需求 17
知識講解 17
1.關(guān)鍵字 17
2.標識符 19
3.常量 20
4.變量 21
案例實現(xiàn) 22
【案例2-3】 全國計算機等級考試信息的
錄入 22
案例描述 22
知識需求 23
知識講解 23
1.字符類型 23
2.整型 24
3.浮點型 24
4.布爾型 25
案例實現(xiàn) 25
【案例2-4】 密碼破譯 26
案例描述 26
知識需求 26
知識講解 27
ASCII 27
案例實現(xiàn) 27
【案例2-5】 混合運算 27
案例描述 27
知識需求 28
知識講解 28
隱式類型轉(zhuǎn)換 28
案例實現(xiàn) 29
【案例2-6】 小明考試 29
案例描述 29
知識需求 30
知識講解 30
顯式類型轉(zhuǎn)換 30
案例實現(xiàn) 31
本章小結(jié) 32
本章習(xí)題 32
第3章 運算符與表達式 34
【案例3-1】 算術(shù)運算 34
案例描述 34
知識需求 34
知識講解 35
1.運算符與表達式 35
2.算術(shù)運算符與算術(shù)表達式 35
3.賦值運算符與賦值表達式 36
案例實現(xiàn) 37
【案例3-2】 魚與熊掌不可兼得 38
案例描述 38
知識需求 38
知識講解 39
1.關(guān)系運算符與關(guān)系表達式 39
2.條件運算符與條件表達式 39
案例實現(xiàn) 40
【案例3-3】 優(yōu)先級 40
案例描述 40
知識需求 41
知識講解 41
1.邏輯運算符與邏輯表達式 41
2.運算符的優(yōu)先級 42
案例實現(xiàn) 43
【案例3-4】 交換 44
案例描述 44
知識需求 44
知識講解 44
位運算符 44
案例實現(xiàn) 46
【案例3-5】 有容乃大 47
案例描述 47
知識需求 48
知識講解 48
sizeof運算符 48
案例實現(xiàn) 48
本章小結(jié) 49
本章習(xí)題 49
第4章 結(jié)構(gòu)化程序設(shè)計 51
【案例4-1】 畫流程圖 51
案例描述 51
知識需求 51
知識講解 52
1.算法 52
2.流程圖 52
案例實現(xiàn) 53
【案例4-2】 判斷閏年 54
案例描述 54
知識需求 54
知識講解 54
1.if語句 54
2.if…else語句 55
3.if…else if…else語句 55
案例實現(xiàn) 56
【案例4-3】 安全生產(chǎn) 57
案例描述 57
知識需求 57
知識講解 57
1.switch語句 57
2.跳轉(zhuǎn)語句 59
案例實現(xiàn) 59
【案例4-4】 計算1到100的和 60
案例描述 60
知識需求 60
知識講解 61
1.while語句 61
2.do…while語句 61
案例實現(xiàn) 61
【案例4-5】 物不知數(shù) 62
案例描述 62
知識需求 63
知識講解 63
for語句 63
案例實現(xiàn) 63
【案例4-6】 九九乘法表 64
案例描述 64
知識需求 65
知識講解 65
循環(huán)嵌套 65
案例實現(xiàn) 66
【案例4-7】 百錢百雞 67
案例描述 67
案例實現(xiàn) 67
【案例4-8】 完美數(shù) 68
案例描述 68
案例實現(xiàn) 69
【案例4-9】 回文素數(shù) 70
案例描述 70
案例實現(xiàn) 70
【案例4-10】 親密數(shù) 71
案例描述 71
案例實現(xiàn) 72
本章小結(jié) 73
本章習(xí)題 73
第5章 數(shù)組 75
【案例5-1】 士兵報數(shù) 75
案例描述 75
知識需求 76
知識講解 76
1.數(shù)組的概念 76
2.一維數(shù)組的定義與初始化 76
3.一維數(shù)組元素的引用 77
案例實現(xiàn) 77
【案例5-2】 最大值與最小值 78
案例描述 78
案例實現(xiàn) 78
【案例5-3】 學(xué)生成績排序 79
案例描述 79
知識需求 79
知識講解 79
1.冒泡排序 79
2.選擇排序 81
3.插入排序 82
案例實現(xiàn) 84
【案例5-4】 縱橫圖 85
案例描述 85
知識需求 86
知識講解 86
1.二維數(shù)組的定義與初始化 86
2.二維數(shù)組元素的訪問 87
3.二維數(shù)組的內(nèi)存分配 88
案例實現(xiàn) 89
【案例5-5】 楊輝三角 91
案例描述 91
案例實現(xiàn) 92
【案例5-6】 矩陣轉(zhuǎn)置 93
案例描述 93
案例實現(xiàn) 94
【案例5-7】 斐波那契數(shù)列 95
案例描述 95
案例實現(xiàn) 95
本章小結(jié) 96
本章習(xí)題 97
第6章 函數(shù) 98
【案例6-1】 祖國生日快樂 98
案例描述 98
知識需求 99
知識講解 99
1.函數(shù)的概念 99
2.函數(shù)的定義 99
3.函數(shù)的調(diào)用過程 100
4.函數(shù)的調(diào)用方式 101
案例實現(xiàn) 102
【案例6-2】 簡易計算器 102
案例描述 102
知識需求 103
知識講解 103
1.函數(shù)名 103
2.參數(shù)列表 103
3.返回值類型 104
案例實現(xiàn) 105
【案例6-3】 漢諾塔 107
案例描述 107
知識需求 107
知識講解 108
遞歸函數(shù) 108
案例實現(xiàn) 109
【案例6-4】 0.99與1.01的差別 110
案例描述 110
案例實現(xiàn) 110
【案例6-5】 遠水不救近火 111
案例描述 111
知識需求 111
知識講解 112
1.局部變量 112
2.全局變量 112
案例實現(xiàn) 113
【案例6-6】 數(shù)據(jù)去重 114
案例描述 114
知識需求 114
知識講解 114
數(shù)組作為函數(shù)參數(shù) 114
案例實現(xiàn) 115
【案例6-7】 體測成績的判定 116
案例描述 116
知識需求 117
知識講解 117
1.多個文件之間的變量引用 117
2.多個文件之間的函數(shù)調(diào)用 118
案例實現(xiàn) 120
本章小結(jié) 126
本章習(xí)題 126
第7章 指針 128
【案例7-1】 交換內(nèi)存數(shù)據(jù) 128
案例描述 128
知識需求 129
知識講解 129
1.認識計算機內(nèi)存 129
2.指針的概念 130
3.指針變量的定義與引用 131
案例實現(xiàn) 133
【案例7-2】 3個數(shù)的排序 133
案例描述 133
知識需求 134
知識講解 134
1.指針作為函數(shù)參數(shù) 134
2.指針的交換 134
案例實現(xiàn) 135
【案例7-3】 用戶畫像 136
案例描述 136
知識需求 137
知識講解 137
1.指針的運算 137
2.數(shù)組名與指針的關(guān)系 138
3.一維數(shù)組指針 139
案例實現(xiàn) 140
【案例7-4】 快速排序 141
案例描述 141
案例實現(xiàn) 141
【案例7-5】 模擬Excel表格的功能 143
案例描述 143
知識需求 144
知識講解 144
1.二維數(shù)組指針 144
2.函數(shù)指針 145
案例實現(xiàn) 145
【案例7-6】 問卷調(diào)查 147
案例描述 147
知識需求 148
知識講解 148
1.動態(tài)數(shù)組的概念 148
2.內(nèi)存申請 148
3.內(nèi)存釋放 149
4.內(nèi)存操作 149
案例實現(xiàn) 150
【案例7-7】 點名冊 151
案例描述 151
知識需求 151
知識講解 151
1.通過指針引用字符數(shù)組 151
2.指針數(shù)組 152
3.二級指針 154
案例實現(xiàn) 155
【案例7-8】 圍棋 156
案例描述 156
案例實現(xiàn) 156
本章小結(jié) 160
本章習(xí)題 160
第8章 字符串 162
【案例8-1】 取名器 162
案例描述 162
知識需求 163
知識講解 163
1.字符數(shù)組 163
2.字符串 164
3.字符串與指針 164
案例實現(xiàn) 166
【案例8-2】 員工入職 167
案例描述 167
知識需求 167
知識講解 167
1.gets()函數(shù) 167
2.puts()函數(shù) 168
案例實現(xiàn) 169
【案例8-3】 統(tǒng)計單詞的個數(shù) 170
案例描述 170
案例實現(xiàn) 170
【案例8-4】 分隔字符串 171
案例描述 171
知識需求 172
知識講解 172
字符串長度計算函數(shù) 172
案例實現(xiàn) 172
【案例8-5】 回文詩 173
案例描述 173
案例實現(xiàn) 173
【案例8-6】 你中有我 174
案例描述 174
知識需求 175
知識講解 175
字符串查找函數(shù) 175
案例實現(xiàn) 176
【案例8-7】 文件替換 176
案例描述 176
知識需求 177
知識講解 177
1.字符串連接函數(shù) 177
2.字符串復(fù)制函數(shù) 178
案例實現(xiàn) 179
【案例8-8】 點名冊的排序 180
案例描述 180
知識需求 180
知識講解 180
字符串比較函數(shù) 180
案例實現(xiàn) 181
【案例8-9】 密碼 182
案例描述 182
知識需求 183
知識講解 183
單個字符操作函數(shù) 183
案例實現(xiàn) 184
【案例8-10】 去除字符串兩端的空格 187
案例描述 187
案例實現(xiàn) 187
【案例8-11】 回文字符串 188
案例描述 188
案例實現(xiàn)(1) 188
案例實現(xiàn)(2) 189
本章小結(jié) 191
本章習(xí)題 191
第9章 結(jié)構(gòu)體 193
【案例9-1】 名片制作 193
案例描述 193
知識需求 194
知識講解 194
1.結(jié)構(gòu)體類型的定義 194
2.結(jié)構(gòu)體變量的定義 195
3.結(jié)構(gòu)體變量的初始化 196
4.結(jié)構(gòu)體變量的存儲方式 196
5.結(jié)構(gòu)體變量成員的訪問 197
案例實現(xiàn) 198
【案例9-2】 員工生日福利 200
案例描述 200
知識需求 200
知識講解 200
1.訪問嵌套結(jié)構(gòu)體變量的成員 200
2.嵌套結(jié)構(gòu)體的內(nèi)存管理 201
案例實現(xiàn) 202
【案例9-3】 計算學(xué)生平均成績 203
案例描述 203
知識需求 203
知識講解 203
1.結(jié)構(gòu)體數(shù)組的定義與初始化 203
2.結(jié)構(gòu)體數(shù)組的訪問 204
案例實現(xiàn) 205
【案例9-4】 打漁曬網(wǎng) 206
案例描述 206
知識需求 206
知識講解 206
1.結(jié)構(gòu)體變量作為函數(shù)參數(shù) 206
2.結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù) 207
3.結(jié)構(gòu)體指針作為函數(shù)參數(shù) 207
4.typedef關(guān)鍵字 207
案例實現(xiàn) 208
【案例9-5】 角色與權(quán)限 209
案例描述 209
知識需求 209
知識講解 209
1.共用體類型的定義 209
2.共用體變量的定義 210
3.共用體變量的初始化和引用 211
案例實現(xiàn) 212
【案例9-6】 學(xué)生成績管理系統(tǒng) 213
案例描述 213
案例實現(xiàn) 213
本章小結(jié) 224
本章習(xí)題 224
第 10章 預(yù)處理 227
【案例10-1】 環(huán)保購物袋 227
案例描述 227
知識需求 228
知識講解 228
1.不帶參數(shù)的宏 228
2.取消宏 229
案例實現(xiàn) 229
【案例10-2】 交換數(shù)組元素 230
案例描述 230
知識需求 231
知識講解 231
帶參數(shù)的宏 231
案例實現(xiàn) 232
【案例10-3】 包裝輸出 233
案例描述 233
知識需求 233
知識講解 233
文件包含 233
案例實現(xiàn) 234
【案例10-4】 32還是64? 235
案例描述 235
知識需求 235
知識講解 235
#if、#else和#endif指令 235
案例實現(xiàn) 235
【案例10-5】 勸學(xué) 236
案例描述 236
知識需求 236
知識講解 237
1.#ifdef 237
2.#ifndef 237
案例實現(xiàn) 240
【案例10-6】 拒絕除以0 241
案例描述 241
知識需求 241
知識講解 241
1.斷言 241
2.斷言與debug 241
案例實現(xiàn) 242
本章小結(jié) 243
本章習(xí)題 243
第 11章 文件管理 245
【案例11-1】 打開電子書 245
案例描述 245
知識需求 246
知識講解 246
1.計算機中的流 246
2.文件的概念 246
3.文件的分類 247
4.文件指針 247
5.文件的打開與關(guān)閉 248
案例實現(xiàn) 250
【案例11-2】 輸出文件內(nèi)容 250
案例描述 250
知識需求 250
知識講解 251
1.文件位置指針 251
2.單字符讀寫文件 251
3.單行讀寫文件 252
案例實現(xiàn) 253
【案例11-3】 班級通訊錄 254
案例描述 254
案例實現(xiàn) 254
【案例11-4】 檔案存儲 255
案例描述 255
知識需求 256
知識講解 256
1.fread()函數(shù) 256
2.fwrite()函數(shù) 256
案例實現(xiàn) 256
【案例11-5】 評判數(shù)學(xué)試卷 258
案例描述 258
知識需求 259
知識講解 259
1.fscanf()函數(shù) 259
2.fprintf()函數(shù) 259
案例實現(xiàn) 260
【案例11-6】 圖書管理系統(tǒng) 262
案例描述 262
案例實現(xiàn) 262
本章小結(jié) 271
本章習(xí)題 271
附錄:ASCII表 273