本書主要講授C語言程序設(shè)計的基本思想、方法和解決實(shí)際問題的技巧,力求把概念、知識點(diǎn)與案例相結(jié)合,進(jìn)行案例教學(xué);精心設(shè)計了習(xí)題與上機(jī)實(shí)驗,突出實(shí)用性、可操作性;做到從簡單到復(fù)雜,結(jié)合任務(wù)驅(qū)動法和建構(gòu)主義理論教學(xué)法組織各個知識點(diǎn)。全書共13章,主要內(nèi)容包括C語言程序設(shè)計概述,數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針,復(fù)合數(shù)據(jù)類型,文件,位運(yùn)算,編譯預(yù)處理,以及C語言的實(shí)際應(yīng)用等。本書可作為高等學(xué)校各專業(yè)C語言程序設(shè)計課程的教材,也可以作為計算機(jī)等級考試的輔導(dǎo)教材,還可以作為計算機(jī)愛好者的自學(xué)用書和各類工程技術(shù)人員的參考書。
本書講授C語言程序設(shè)計的基本思想、方法和解決實(shí)際問題的技巧,特點(diǎn)是盡可能把概念、知識點(diǎn)與案例相結(jié)合,進(jìn)行案例教學(xué),并且每章都精心設(shè)計了習(xí)題與上機(jī)實(shí)驗,突出實(shí)用性、操作性,每章的安排盡量做到從簡單到復(fù)雜,在編著教材時盡量結(jié)合任務(wù)驅(qū)動法和建構(gòu)主義理論教學(xué)法組織各個知識點(diǎn)。
前言
C語言是一種的程序設(shè)計語言,在世界范圍內(nèi)被普遍使用,是現(xiàn)代最流行的通用程序設(shè)計語言之一。它功能豐富,使用靈活,可移植性好,深受廣大用戶歡迎。C語言的數(shù)據(jù)類型豐富,既具有高級程序設(shè)計語言的優(yōu)點(diǎn),又具有低級程序設(shè)計語言的特點(diǎn);既可以用來編寫系統(tǒng)程序,又可以用來編寫應(yīng)用程序。
本書通過大量實(shí)例系統(tǒng)地介紹了C語言的語法結(jié)構(gòu)。全書共13章。第1章為C語言程序設(shè)計概述,主要內(nèi)容包括C語言的發(fā)展歷程、C語言的特點(diǎn)、C語言程序的結(jié)構(gòu)及在Visual C++集成環(huán)境下運(yùn)行C程序的步驟與方法。第2章為數(shù)據(jù)類型、運(yùn)算符和表達(dá)式,主要內(nèi)容包括C語言的基本數(shù)據(jù)類型的表示形式、存儲格式、相關(guān)的運(yùn)算以及各種表達(dá)式。第3章為順序結(jié)構(gòu),主要內(nèi)容包括C語句、數(shù)據(jù)的輸入輸出及順序程序設(shè)計。第4章為選擇結(jié)構(gòu),主要內(nèi)容包括選擇結(jié)構(gòu)語句及選擇結(jié)構(gòu)程序設(shè)計舉例。第5章為循環(huán)結(jié)構(gòu),主要內(nèi)容包括while循環(huán)、do…while循環(huán)、for循環(huán)、循環(huán)的嵌套、其他控制語句及循環(huán)結(jié)構(gòu)綜合實(shí)例。第6章為數(shù)組,主要內(nèi)容包括一維數(shù)組、二維數(shù)組、多維數(shù)組介紹、字符數(shù)組及數(shù)組綜合實(shí)例。第7章為函數(shù),主要內(nèi)容包括函數(shù)的定義、函數(shù)參數(shù)和函數(shù)的返回值、函數(shù)的調(diào)用、函數(shù)的嵌套調(diào)用、函數(shù)的遞歸調(diào)用、數(shù)組作為函數(shù)參數(shù)、變量的作用域、變量的存儲類別、內(nèi)部函數(shù)和外部函數(shù)。第8章為指針,主要內(nèi)容包括指針的定義、指針變量、指針與函數(shù)、指針與數(shù)組、指針與字符串、指針數(shù)組與多重指針、指針的內(nèi)存動態(tài)分配,以及指針綜合實(shí)例。第9章為復(fù)合數(shù)據(jù)類型,主要內(nèi)容包括結(jié)構(gòu)體、用結(jié)構(gòu)指針操作鏈表、共用體、枚舉類型及類型定義。第10章為文件,主要內(nèi)容包括C文件的概述、文件的打開與關(guān)閉、文件的讀寫及文件的定位與出錯檢測。第11章為位運(yùn)算,主要內(nèi)容包括二進(jìn)制位運(yùn)算概述、位運(yùn)算符及位段。第12章為編譯預(yù)處理,主要內(nèi)容包括宏聲明、文件包含及條件編譯。第13章為C語言的實(shí)際應(yīng)用,主要講解C語言的程序設(shè)計步驟、實(shí)際應(yīng)用中常見模塊設(shè)計和綜合實(shí)踐實(shí)例。
本書文字精練,例題簡單,容易理解,配備了各種類型的練習(xí),部分章節(jié)結(jié)合了任務(wù)驅(qū)動教學(xué)法和建構(gòu)主義理論組織各知識點(diǎn),便于學(xué)習(xí)掌握。對于C語言中重要和較難理解、容易出錯的內(nèi)容,書中均特別加以強(qiáng)調(diào)和說明。此外,在介紹C語言的語法結(jié)構(gòu)的同時,也強(qiáng)調(diào)了計算機(jī)算法和結(jié)構(gòu)化設(shè)計方法的概念和作用。本書可作為高等學(xué)校C語言程序設(shè)計課程的教材,也可作為計算機(jī)等級考試的輔導(dǎo)教材。
本書以ANSI標(biāo)準(zhǔn)C語言為背景,有關(guān)內(nèi)容不依賴任何具體的C系統(tǒng)。本書所有的程序?qū)嵗荚赩isual C++6.0中調(diào)試過,讀者也可以自由選用其他符合ANSI標(biāo)準(zhǔn)的C系統(tǒng)編程環(huán)境作為學(xué)習(xí)工具。
本書由易云飛擔(dān)任主編,萬勵、唐鵬和唐鳳仙任副主編。全書由易云飛策劃、確定框架結(jié)構(gòu),并統(tǒng)編定稿。本書第1章和第7章由唐鳳仙編寫,第2章由姜林和馬楚奇編寫,第3章由黃華、何傳波和張彥博編寫,第4章和第12章由萬勵和龔平編寫,第5章和第6章由羅富貴、唐鵬和易云飛編寫,第8章由楊鳳和李海英編寫,第9章由黃華和馬楚奇編寫,第10章由喻飛和唐鵬編寫,第11章、第13章由喻飛、何傳波和張彥博編寫。另外,本書在編寫過程中,得到兄弟高校從事計算機(jī)教育的老師的關(guān)心和幫助,教研室的同事也提出了許多寶貴意見,并得到廣西高等教育本科教學(xué)改革工程項目(編號2024JGB335)的支持,在此一并表示衷心的感謝。
本書配有電子教案,并提供程序源代碼,以方便讀者自學(xué),請掃描下載。
限于作者水平,書中難免存在不當(dāng)之處,懇請廣大讀者批評指正。
編者2025年7月
目錄
第1章C語言程序設(shè)計概述1
1.1程序設(shè)計的基本概念1
1.1.1程序1
1.1.2程序設(shè)計1
1.1.3程序設(shè)計語言2
1.2C語言的發(fā)展及其特點(diǎn)3
1.2.1C語言的發(fā)展歷程3
1.2.2C語言的特點(diǎn)4
1.2.3C語言與C++語言交融發(fā)展5
1.3C程序的組成與結(jié)構(gòu)5
1.4C程序的上機(jī)步驟與方法8
1.4.1有關(guān)概念9
1.4.2運(yùn)行C程序的一般步驟9
1.4.3Visual C++6.0環(huán)境運(yùn)行C程序的步驟10
1.5如何學(xué)好C語言13
本章小結(jié)14
習(xí)題114
第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式16
2.1C語言字符集與標(biāo)識符17
2.1.1C語言字符集17
2.1.2標(biāo)識符18
2.2變量和常量19
2.2.1變量19
2.2.2常量19
2.3基本數(shù)據(jù)類型20
2.3.1C語言的數(shù)據(jù)類型20
2.3.2整型數(shù)據(jù)21
2.3.3實(shí)型數(shù)據(jù)24
2.3.4字符型數(shù)據(jù)25
2.3.5變量賦初值27
2.4運(yùn)算符和表達(dá)式28
2.4.1運(yùn)算符和表達(dá)式概述28
2.4.2算術(shù)運(yùn)算符及算術(shù)表達(dá)式30
2.4.3關(guān)系運(yùn)算符及關(guān)系表達(dá)式33
2.4.4邏輯運(yùn)算符及邏輯表達(dá)式34
2.4.5條件運(yùn)算符及條件表達(dá)式36
2.4.6賦值運(yùn)算符及賦值表達(dá)式38
2.4.7逗號運(yùn)算符及逗號表達(dá)式40
2.4.8位運(yùn)算符41
2.4.9求字節(jié)運(yùn)算符42
2.4.10類型轉(zhuǎn)換43
本章小結(jié)44
習(xí)題244
第3章順序結(jié)構(gòu)47
3.1簡單順序語句47
3.1.1表達(dá)式語句47
3.1.2空語句48
3.1.3復(fù)合語句48
3.2C語言數(shù)據(jù)的輸入輸出48
3.2.1字符輸入輸出函數(shù)49
3.2.2格式輸入輸出51
3.3綜合實(shí)例59
本章小結(jié)62
習(xí)題362
第4章選擇結(jié)構(gòu)65
4.1if語句65
4.1.1if語句的基本形式66
4.1.2if語句嵌套70
4.2switch語句72
4.3程序應(yīng)用75
本章小結(jié)81
習(xí)題482
第5章循環(huán)結(jié)構(gòu)84
5.1while循環(huán)結(jié)構(gòu)85
5.1.1while語句的基本形式85
5.1.2while語句的應(yīng)用86
5.2do…while循環(huán)結(jié)構(gòu)89
5.2.1do…while語句的基本形式89
5.2.2do…while語句的應(yīng)用89
5.3for循環(huán)結(jié)構(gòu)91
5.3.1for語句的基本形式91
5.3.2for語句的應(yīng)用92
5.4循環(huán)的嵌套96
5.5轉(zhuǎn)向語句100
5.5.1break語句100
5.5.2continue語句102
5.5.3goto語句103
5.6程序應(yīng)用104
本章小結(jié)107
習(xí)題5107
第6章數(shù)組109
6.1數(shù)組的基本概念110
6.2一維數(shù)組110
6.2.1一維數(shù)組的聲明110
6.2.2一維數(shù)組的引用111
6.2.3一維數(shù)組的初始化112
6.2.4一維數(shù)組的應(yīng)用113
6.3二維數(shù)組118
6.3.1二維數(shù)組的聲明118
6.3.2二維數(shù)組的引用119
6.3.3二維數(shù)組的初始化120
6.3.4多維數(shù)組122
6.3.5二維數(shù)組的應(yīng)用122
6.4字符數(shù)組127
6.4.1字符數(shù)組的聲明127
6.4.2字符數(shù)組的引用127
6.4.3字符數(shù)組的初始化127
6.4.4字符串變量128
6.4.5字符串變量的輸入輸出129
6.4.6字符串函數(shù)131
6.4.7字符數(shù)組的應(yīng)用133
本章小結(jié)136
習(xí)題6136
第7章函數(shù)139
7.1函數(shù)的定義140
7.1.1有參函數(shù)的定義140
7.1.2無參函數(shù)的定義140
7.1.3空函數(shù)的定義141
7.2函數(shù)參數(shù)和函數(shù)的返回值141
7.2.1形式參數(shù)和實(shí)際參數(shù)141
7.2.2函數(shù)的返回值143
7.3函數(shù)的調(diào)用144
7.3.1函數(shù)調(diào)用的一般形式144
7.3.2函數(shù)調(diào)用的方式145
7.3.3對被調(diào)函數(shù)的聲明和函數(shù)原型145
7.4函數(shù)的嵌套調(diào)用147
7.5函數(shù)的遞歸調(diào)用149
7.6數(shù)組作為函數(shù)參數(shù)152
7.6.1數(shù)組元素作為函數(shù)實(shí)參152
7.6.2一維數(shù)組名作為函數(shù)參數(shù)152
7.6.3二維數(shù)組名作為函數(shù)參數(shù)154
7.7變量的作用域155
7.7.1局部變量155
7.7.2全局變量156
7.7.3變量的優(yōu)先級158
7.8變量的存儲類別159
7.8.1auto變量160
7.8.2用static聲明局部變量160
7.8.3register變量162
7.8.4用extern聲明外部變量163
7.8.5用static聲明外部變量165
7.9內(nèi)部函數(shù)和外部函數(shù)166
7.9.1內(nèi)部函數(shù)166
7.9.2外部函數(shù)167
本章小結(jié)168
習(xí)題7169
第8章指針171
8.1指針是什么171
8.2指針變量173
8.2.1指針變量的聲明173
8.2.2指針變量的賦值174
8.2.3通過指針訪問變量175
8.3指針與函數(shù)177
8.3.1指針變量作為函數(shù)的參數(shù)177
8.3.2指針函數(shù)178
8.3.3函數(shù)指針179
8.4指針與數(shù)組181
8.4.1數(shù)組名與數(shù)組首地址181
8.4.2指針的運(yùn)算182
8.4.3通過指針訪問一維數(shù)組184
8.4.4通過指針訪問多維數(shù)組187
8.5指針與字符串190
8.5.1通過指針訪問字符數(shù)組190
8.5.2字符指針作為函數(shù)參數(shù)傳遞192
8.6指針數(shù)組和多重指針194
8.6.1指針數(shù)組194
8.6.2多級指針196
8.6.3帶參數(shù)的主函數(shù)198
8.7指針的內(nèi)存動態(tài)分配200
8.7.1內(nèi)存的動態(tài)分配200
8.7.2void指針類型202
8.8指針的應(yīng)用舉例204
本章小結(jié)207
習(xí)題8207
第9章復(fù)合數(shù)據(jù)類型212
9.1結(jié)構(gòu)體數(shù)據(jù)類型213
9.1.1結(jié)構(gòu)體類型的定義213
9.1.2結(jié)構(gòu)體變量的使用214
9.1.3結(jié)構(gòu)體數(shù)組220
9.1.4結(jié)構(gòu)體指針223
9.1.5結(jié)構(gòu)體及指向結(jié)構(gòu)體的指針作為函數(shù)的參數(shù)225
9.1.6結(jié)構(gòu)體綜合舉例226
9.2C語言動態(tài)存儲分配228
9.3鏈表230
9.3.1鏈表與數(shù)組的主要區(qū)別230
9.3.2鏈表的操作231
9.3.3鏈表應(yīng)用舉例233
9.4共用體的定義和共用體變量的聲明234
9.4.1共用體的定義234
9.4.2共用體類型變量234
9.4.3共用體類型變量的引用235
9.5枚舉數(shù)據(jù)類型236
9.5.1枚舉類型的定義和枚舉變量的聲明237
9.5.2枚舉類型變量的賦值和使用237
9.6位域239
9.7類型聲明240
本章小結(jié)241
習(xí)題9242
第10章文件247
10.1FILE結(jié)構(gòu)類型248
10.2文件的操作248
10.2.1文件的打開249
10.2.2文件的關(guān)閉250
10.2.3文件的讀寫251
10.2.4文件緩沖區(qū)操作258
10.2.5文件的隨機(jī)讀寫260
10.2.6文件的檢測264
10.3庫文件265
本章小結(jié)266
習(xí)題10266
第11章位運(yùn)算268
11.1整數(shù)的計算機(jī)表示268
11.2位運(yùn)算符270
11.2.1取反運(yùn)算符~270
11.2.2按位與運(yùn)算符&271
11.2.3按位或運(yùn)算符|272
11.2.4按位異或運(yùn)算符∧272
11.2.5左移運(yùn)算符<<273
11.2.6右移運(yùn)算符>>274
11.2.7位運(yùn)算與賦值運(yùn)算的結(jié)合274
11.2.8位運(yùn)算舉例274
本章小結(jié)275
習(xí)題11275
第12章編譯預(yù)處理277
12.1宏聲明277
12.1.1不帶參數(shù)的宏聲明277
12.1.2帶參數(shù)的宏聲明280
12.2文件包含286
12.3條件編譯289
本章小結(jié)293
習(xí)題12293
第13章C語言的實(shí)際應(yīng)用296
13.1C語言的程序設(shè)計步驟296
13.2實(shí)際應(yīng)用中常見的模塊設(shè)計297
13.2.1數(shù)據(jù)結(jié)構(gòu)的設(shè)計297
13.2.2選擇菜單的設(shè)計298
13.2.3數(shù)據(jù)輸入模塊的設(shè)計300
13.2.4功能模塊的設(shè)計303
13.3綜合實(shí)踐實(shí)例: 企業(yè)員工工資管理系統(tǒng)306
本章小結(jié)326
附錄AASCII編碼表327
附錄Bctype.h文件中包含的字符函數(shù)329
附錄Cmath.h文件中包含的數(shù)學(xué)函數(shù)330
附錄DC語言運(yùn)算符優(yōu)先級詳細(xì)列表332