本書系統(tǒng)、全面地介紹了有關(guān) C 語言程序設(shè)計(jì)所涉及的重要知識(shí)。全書分為基礎(chǔ)篇、提高篇、高級篇和項(xiàng)目篇,共 18 章;A(chǔ)篇包括邁進(jìn) C 語言的大門、C 語言的開發(fā)環(huán)境、初識(shí) C 語言、C 語言基本數(shù)據(jù)類型、數(shù)據(jù)輸入與輸出、運(yùn)算符與表達(dá)式、條件判斷語句、循環(huán)語句。提高篇包括數(shù)組、字符串處理函數(shù)、輸入驗(yàn)證、函數(shù)、指針的使用。高級篇包括復(fù)合數(shù)據(jù)類型及鏈表、預(yù)處理命令、文件操作、內(nèi)存管理。最后,項(xiàng)目篇是開發(fā)一個(gè)俄羅斯方塊游戲。每章內(nèi)容都與實(shí)例緊密結(jié)合,有助于讀者理解知識(shí)、
應(yīng)用知識(shí),達(dá)到學(xué)以致用的目的。
本書附有配套資源,包括源碼及教學(xué)視頻。其中,源碼全部經(jīng)過精心測試,能夠在 Windows XP、Windows 7、Windows 8、Windows 10 系統(tǒng)下編譯和運(yùn)行。
本書可作為大中專院校計(jì)算機(jī)專業(yè)、軟件專業(yè)及相關(guān)專業(yè)的教材,同時(shí)也適合 C 語言愛好者、初級C 語言讀者參考使用。
1.循序漸進(jìn),自學(xué)有道。本書從基礎(chǔ)提高高級項(xiàng)目實(shí)戰(zhàn),符合讀者學(xué)習(xí)路線。
2.關(guān)鍵技術(shù),實(shí)例解析。全書通過實(shí)例的形式,將知識(shí)融入到實(shí)例講解中,使知識(shí)與實(shí)例相輔相成。
3.書課結(jié)合,資源豐富。本書提供了強(qiáng)大的網(wǎng)絡(luò)支持和服務(wù),提供源碼、視頻課程、課件等配套資源。
4.技術(shù)服務(wù)完善。作者團(tuán)隊(duì)提供企業(yè)QQ、論壇、郵箱、客服電話、明日學(xué)院官方網(wǎng)站等多渠道的技術(shù)支持與服務(wù),在線為讀者答疑解惑。
明日科技 一個(gè)擁有軟件開發(fā)和項(xiàng)目實(shí)施方面的資深專家和學(xué)習(xí)型技術(shù)團(tuán)隊(duì),利用積累的專業(yè)知識(shí)和經(jīng)驗(yàn),已開發(fā)出版了從入門到精通軟件開發(fā)實(shí)戰(zhàn)1200例軟件開發(fā)實(shí)戰(zhàn)寶典軟件項(xiàng)目開發(fā)全程實(shí)錄等系列叢書,是國內(nèi)熱銷的編程圖書。
目 錄
前言 xvii
基礎(chǔ)篇
第 1章 邁進(jìn)C語言的大門
1.1 什么是C語言 002
1.2 C語言的特點(diǎn) 004
1.3 C語言能做什么 005
1.3.1 單片機(jī)系統(tǒng)領(lǐng)域 005
1.3.2 應(yīng)用軟件領(lǐng)域 006
1.3.3 嵌入式系統(tǒng)領(lǐng)域 006
1.3.4 游戲領(lǐng)域 007
1.4 C語言與其他語言比較 007
1.4.1 C語言和C 比較 007
1.4.2 C語言和VC 比較 008
1.4.3 C語言和Java比較 009
1.4.4 C語言和Python比較 009
1.5 練習(xí)題 010
第 2章 C語言的開發(fā)環(huán)境
2.1 開發(fā)環(huán)境大全 011
2.2 安裝C語言開發(fā)環(huán)境 013
2.2.1 安裝Visual Studio 2019 013
2.2.2 安裝Visual C 6.0 016
2.3 熟悉C語言開發(fā)環(huán)境 020
2.3.1 Visual Studio 2019開發(fā)環(huán)境 020
2.3.2 Visual C 6.0開發(fā)環(huán)境 026
2.4 C語言程序開發(fā)的步驟 029
2.4.1 使用Visual Studio 2019開發(fā)
C語言程序 030
2.4.2 使用Visual C 6.0開發(fā)
C語言程序 033
2.5 初學(xué)者經(jīng)常遇到的問題 036
2.6 練習(xí)題 039
第3章 初識(shí)C語言
3.1 開篇實(shí)例:《阿甘正傳》
簡歷 041
3.2 C語言程序結(jié)構(gòu) 042
3.2.1 頭文件 043
3.2.2 主函數(shù) 043
3.2.3 函數(shù)體 045
3.2.4 輸出函數(shù):printf()函數(shù) 045
3.2.5 return 0; 046
3.3 注釋 046
3.3.1 單行注釋 046
3.3.2 多行注釋 047
3.3.3 文檔注釋 047
3.4 常量和變量 048
3.4.1 常量 048
3.4.2 變量 049
3.5 關(guān)鍵字與標(biāo)識(shí)符 051
3.5.1 關(guān)鍵字 051
3.5.2 標(biāo)識(shí)符 052
3.6 C語言的編程規(guī)范 055
3.6.1 使用空格 055
3.6.2 使用換行 055
3.6.3 變量、常量命名規(guī)范 056
3.6.4 函數(shù)命名規(guī)范 056
3.7 練習(xí)題 056
第4章 C語言基本數(shù)據(jù)類型
4.1 開篇實(shí)例:暗號 058
4.2 基本數(shù)據(jù)類型概述 059
4.3 整型 060
4.3.1 聲明整型數(shù)據(jù) 060
4.3.2 初始化整型變量 060
4.3.3 其他整型 061
4.3.4 輸出其他整型數(shù)據(jù) 062
4.3.5 整型常量 062
4.4 浮點(diǎn)型 063
4.4.1 聲明浮點(diǎn)型數(shù)據(jù) 063
4.4.2 初始化浮點(diǎn)型變量 065
4.4.3 輸出浮點(diǎn)型數(shù)據(jù) 066
4.4.4 浮點(diǎn)型常量 066
4.5 字符型 067
4.5.1 聲明字符型數(shù)據(jù) 067
4.5.2 初始化字符型變量 068
4.5.3 輸出字符型數(shù)據(jù) 069
4.5.4 字符型常量 070
4.5.5 轉(zhuǎn)義字符 072
4.6 類型轉(zhuǎn)換 073
4.6.1 自動(dòng)類型轉(zhuǎn)換 073
4.6.2 強(qiáng)制類型轉(zhuǎn)換 075
4.7 練習(xí)題 076
第5章 數(shù)據(jù)輸入與輸出
5.1 開篇實(shí)例:繪制《植物大戰(zhàn)僵尸》
中的墻果 078
5.2 字符串的輸入輸出函數(shù) 079
5.2.1 單字符輸入輸出函數(shù):
putchar()和getchar() 079
5.2.2 多字符輸入輸出函數(shù):
puts()和gets() 082
5.3 格式化輸入輸出函數(shù) 084
5.3.1 格式化輸出函數(shù):printf() 084
5.3.2 格式化輸入函數(shù):scanf() 091
5.4 練習(xí)題 096
第6章 運(yùn)算符與表達(dá)式
6.1 開篇實(shí)例:燃燒我的卡路里 098
6.2 運(yùn)算符與表達(dá)式 099
6.2.1 運(yùn)算符 099
6.2.2 表達(dá)式 099
6.3 賦值運(yùn)算符與賦值表達(dá)式 100
6.3.1 賦值運(yùn)算符 100
6.3.2 賦值表達(dá)式 101
6.4 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 101
6.4.1 運(yùn)算符與表達(dá)式 102
6.4.2 -運(yùn)算符與表達(dá)式 102
6.4.3 *運(yùn)算符與表達(dá)式 103
6.4.4 \運(yùn)算符與表達(dá)式 104
6.4.5 %運(yùn)算符與表達(dá)式 104
6.4.6 運(yùn)算符 105
6.4.7 --運(yùn)算符 106
6.4.8 總結(jié) 106
6.4.9 優(yōu)先級與結(jié)合性 107
6.5 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 108
6.5.1 >運(yùn)算符與表達(dá)式 108
6.5.2 >=運(yùn)算符與表達(dá)式 108
6.5.3 <運(yùn)算符與表達(dá)式 109
6.5.4 <=運(yùn)算符與表達(dá)式 110
6.5.5 ==運(yùn)算符與表達(dá)式 110
6.5.6 !=運(yùn)算符與表達(dá)式 111
6.5.7 總結(jié) 112
6.5.8 優(yōu)先級與結(jié)合性 112
6.6 邏輯運(yùn)算符與邏輯表達(dá)式 113
6.6.1 &&運(yùn)算符與表達(dá)式 113
6.6.2 ||運(yùn)算符與表達(dá)式 114
6.6.3 !運(yùn)算符與表達(dá)式 116
6.6.4 總結(jié) 117
6.6.5 優(yōu)先級與結(jié)合性 117
6.7 位運(yùn)算符與位表達(dá)式 117
6.7.1 &運(yùn)算符 118
6.7.2 |運(yùn)算符 118
6.7.3 ~運(yùn)算符 119
6.7.4 ^運(yùn)算符 119
6.7.5 <<運(yùn)算符 121
6.7.6 > >運(yùn)算符 122
6.7.7 總結(jié) 122
6.7.8 優(yōu)先級與結(jié)合性 123
6.8 逗號運(yùn)算符與逗號表達(dá)式 123
6.9 復(fù)合賦值運(yùn)算符 124
6.10 優(yōu)先級與結(jié)合性的總結(jié) 124
6.11 練習(xí)題 126
第7章 條件判斷語句
7.1 開篇實(shí)例:安全通行 127
7.2 if語句 128
7.2.1 單個(gè)if語句 128
7.2.2 if else語句 130
7.2.3 else if語句 132
7.3 if語句的嵌套 135
7.4 條件運(yùn)算符 137
7.5 switch語句 139
7.5.1 switch語句的基本形式 139
7.5.2 多路開關(guān)模式的switch語句 142
7.6 if else和switch的區(qū)別 144
7.7 練習(xí)題 144
第8章 循環(huán)語句
8.1 開篇實(shí)例:利用公積金
貸款買房 146
8.2 while語句 147
8.3 do while語句 149
8.4 for語句 152
8.4.1 for語句的使用 152
8.4.2 for循環(huán)的變體 154
8.4.3 for語句中逗號的應(yīng)用 156
8.5 循環(huán)嵌套 157
8.6 轉(zhuǎn)移語句 160
8.6.1 break語句 160
8.6.2 continue語句 163
8.6.3 goto語句 165
8.7 練習(xí)題 167
提高篇
第9章 數(shù)組
9.1 開篇實(shí)例:購物車清單 172
9.2 數(shù)組的概念 173
9.3 一維數(shù)組 174
9.3.1 一維數(shù)組的定義 174
9.3.2 一維數(shù)組的初始化 176
9.3.3 一維數(shù)組元素的引用 177
9.4 二維數(shù)組 178
9.4.1 二維數(shù)組的定義 179
9.4.2 二維數(shù)組的初始化 179
9.4.3 二維數(shù)組元素的引用 181
9.5 多維數(shù)組 183
9.6 數(shù)組的排序算法 184
9.6.1 選擇法排序 184
9.6.2 冒泡法排序 186
9.6.3 交換法排序 188
9.6.4 插入法排序 189
9.6.5 折半法排序 191
9.7 5種排序方法的比較 194
9.8 練習(xí)題 195
第 10章 字符串處理函數(shù)
10.1 字符數(shù)組 198
10.2 使用字符串 199
10.2.1 初始化 199
10.2.2 結(jié)束標(biāo)志 200
10.2.3 輸入和輸出 201
10.3 字符串復(fù)制 201
10.4 字符串連接 204
10.5 字符串比較 205
10.6 字符串大小寫轉(zhuǎn)換 207
10.7 獲得字符串長度 208
10.8 練習(xí)題 209
第 11章 輸入驗(yàn)證
11.1 英文字母驗(yàn)證 211
11.2 小寫字母驗(yàn)證 213
11.3 大寫字母驗(yàn)證 214
11.4 標(biāo)點(diǎn)符號驗(yàn)證 215
11.5 字母或數(shù)字驗(yàn)證 217
11.6 除空格外的字符驗(yàn)證 218
11.7 空格驗(yàn)證 219
11.8 練習(xí)題 221
第 12章 函數(shù)
12.1 函數(shù)概述 223
12.2 函數(shù)的定義 224
12.2.1 函數(shù)定義的形式 224
12.2.2 定義與聲明 225
12.3 返回語句 226
12.3.1 有返回值的函數(shù) 226
12.3.2 無返回值的函數(shù) 227
12.4 函數(shù)參數(shù) 228
12.4.1 形式參數(shù)與實(shí)際參數(shù) 228
12.4.2 數(shù)組作為函數(shù)參數(shù) 229
12.4.3 main()函數(shù)的參數(shù) 231
12.5 函數(shù)的調(diào)用 231
12.5.1 函數(shù)的調(diào)用方式 232
12.5.2 嵌套調(diào)用 234
12.5.3 遞歸調(diào)用 237
12.6 內(nèi)部函數(shù)和外部函數(shù) 239
12.6.1 內(nèi)部函數(shù) 239
12.6.2 外部函數(shù) 240
12.7 局部變量和全局變量 241
12.7.1 局部變量 241
12.7.2 全局變量 242
12.8 數(shù)學(xué)庫函數(shù) 243
12.9 練習(xí)題 244
第 13章 指針的使用
13.1 指針相關(guān)概念 246
13.1.1 地址與指針 246
13.1.2 變量與指針 247
13.1.3 指針變量 248
13.1.4 指針自增自減運(yùn)算 250
13.2 數(shù)組與指針 252
13.2.1 一維數(shù)組與指針變量 252
13.2.2 二維數(shù)組與指針變量 255
13.2.3 字符串與指針 255
13.2.4 字符串?dāng)?shù)組 256
13.3 指向指針的指針 256
13.4 指針變量作為函數(shù)參數(shù) 257
13.5 返回指針值的函數(shù) 260
13.6 指針數(shù)組作為main()函數(shù)的
參數(shù) 260
13.7 練習(xí)題 262
高級篇
第 14章 復(fù)合數(shù)據(jù)類型及鏈表
14.1 結(jié)構(gòu)體 266
14.1.1 結(jié)構(gòu)體類型的概念 266
14.1.2 結(jié)構(gòu)體變量的定義 267
14.1.3 結(jié)構(gòu)體類型的初始化 270
14.1.4 結(jié)構(gòu)體變量的引用 270
14.2 結(jié)構(gòu)體數(shù)組 272
14.2.1 定義結(jié)構(gòu)體數(shù)組 272
14.2.2 初始化結(jié)構(gòu)體數(shù)組 274
14.3 結(jié)構(gòu)體指針 276
14.3.1 指向結(jié)構(gòu)體變量的指針 276
14.3.2 指向結(jié)構(gòu)體數(shù)組的指針 279
14.3.3 結(jié)構(gòu)體作為函數(shù)參數(shù) 281
14.4 包含結(jié)構(gòu)體的結(jié)構(gòu)體 284
14.5 鏈表 286
14.5.1 鏈表概述 286
14.5.2 創(chuàng)建動(dòng)態(tài)鏈表 287
14.5.3 輸出鏈表 289
14.6 鏈表相關(guān)操作 290
14.6.1 鏈表的插入操作 291
14.6.2 鏈表的刪除操作 292
14.7 共用體 294
14.7.1 共用體的概念 294
14.7.2 共用體變量的初始化 296
14.7.3 共用體變量的引用 296
14.7.4 共用體類型的數(shù)據(jù)特點(diǎn) 299
14.8 枚舉類型 299
14.9 練習(xí)題 301
第 15章 預(yù)處理命令
15.1 宏定義 303
15.1.1 不帶參數(shù)的宏定義 304
15.1.2 帶參數(shù)的宏定義 305
15.2 #include命令 307
15.3 條件編譯 308
15.3.1 #if命令 308
15.3.2 #elif命令 309
15.3.3 #ifdef及#ifndef命令 309
15.3.4 #undef命令 310
15.3.5 #pragma命令 311
15.4 練習(xí)題 312
第 16章 文件操作
16.1 文件概述 314
16.2 文件基本操作 315
16.2.1 文件指針 315
16.2.2 文件的打開 316
16.2.3 文件的關(guān)閉 317
16.3 文件的讀寫 317
16.3.1 fputc()函數(shù) 317
16.3.2 fgetc()函數(shù) 319
16.3.3 fputs()函數(shù) 320
16.3.4 fgets()函數(shù) 321
16.3.5 fprintf()函數(shù) 322
16.3.6 fscanf()函數(shù) 323
16.3.7 fread()和fwrite()函數(shù) 325
16.4 文件的定位 327
16.4.1 fseek()函數(shù) 327
16.4.2 rewind()函數(shù) 329
16.4.3 ftell()函數(shù) 331
16.5 練習(xí)題 334
第 17章 內(nèi)存管理
17.1 內(nèi)存組織方式 336
17.1.1 內(nèi)存的組織方式 336
17.1.2 堆與棧 337
17.2 動(dòng)態(tài)管理 338
17.2.1 malloc()函數(shù) 338
17.2.2 calloc()函數(shù) 339
17.2.3 realloc()函數(shù) 340
17.2.4 free()函數(shù) 341
17.3 內(nèi)存丟失 343
17.4 練習(xí)題 343
項(xiàng)目篇
第 18章 俄羅斯方塊游戲
18.1 需求分析 346
18.2 系統(tǒng)設(shè)計(jì) 346
18.2.1 系統(tǒng)目標(biāo) 346
18.2.2 構(gòu)建開發(fā)環(huán)境 347
18.2.3 游戲界面 347
18.2.4 業(yè)務(wù)流程圖 347
18.2.5 系統(tǒng)預(yù)覽 348
18.3 技術(shù)準(zhǔn)備 350
18.3.1 控制顏色函數(shù) 350
18.3.2 設(shè)置文字顯示位置 352
18.4 公共類設(shè)計(jì) 353
18.5 游戲歡迎界面設(shè)計(jì) 355
18.5.1 游戲歡迎界面概述 355
18.5.2 標(biāo)題部分設(shè)計(jì) 355
18.5.3 設(shè)計(jì)字符花裝飾 357
18.5.4 設(shè)計(jì)菜單選項(xiàng)的邊框 359
18.5.5 設(shè)計(jì)菜單選項(xiàng)的文字 360
18.6 游戲主窗體界面設(shè)計(jì) 361
18.6.1 游戲主窗體界面概述 361
18.6.2 輸出游戲主窗體界面 362
18.6.3 繪制俄羅斯方塊 365
18.6.4 輸出俄羅斯方塊 373
18.7 游戲邏輯設(shè)計(jì) 374
18.7.1 游戲邏輯概述 374
18.7.2 判斷俄羅斯方塊是否可移動(dòng) 375
18.7.3 清除俄羅斯方塊下落的痕跡 377
18.7.4 判斷方塊是否滿行 378
18.7.5 隨機(jī)產(chǎn)生俄羅斯方塊類型的序號 380
18.8 開始游戲 381
18.8.1 開始游戲模塊概述 381
18.8.2 顯示俄羅斯方塊 382
18.8.3 各種按鍵操作 383
18.8.4 游戲結(jié)束界面 387
18.8.5 重新開始游戲 389
18.9 按鍵說明模塊 389
18.9.1 模塊概述 389
18.9.2 代碼實(shí)現(xiàn) 390
18.10 游戲規(guī)則介紹模塊 392
18.10.1 模塊概述 392
18.10.2 代碼實(shí)現(xiàn) 392
18.11 退出游戲 394
18.12 小結(jié) 395