本書主要講授C語言程序設(shè)計的基本思想、方法和解決實際問題的技巧,力求把概念、知識點與案例相結(jié)合,進行案例教學;精心設(shè)計了習題與上機實驗,突出實用性、可操作性;做到從簡單到復雜,結(jié)合任務驅(qū)動法和建構(gòu)主義理論教學法組織各個知識點。全書共13章,主要內(nèi)容包括C語言程序設(shè)計概述,數(shù)據(jù)類型、運算符和表達式,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針,復合數(shù)據(jù)類型,文件,位運算,編譯預處理,以及C語言的實際應用等。本書可作為高等學校各專業(yè)C語言程序設(shè)計課程的教材,也可以作為計算機等級考試的輔導教材,還可以作為計算機愛好者的自學用書和各類工程技術(shù)人員的參考書。
本書講授C語言程序設(shè)計的基本思想、方法和解決實際問題的技巧,特點是盡可能把概念、知識點與案例相結(jié)合,進行案例教學,并且每章都精心設(shè)計了習題與上機實驗,突出實用性、操作性,每章的安排盡量做到從簡單到復雜,在編著教材時盡量結(jié)合任務驅(qū)動法和建構(gòu)主義理論教學法組織各個知識點。
前言
C語言是一種的程序設(shè)計語言,在世界范圍內(nèi)被普遍使用,是現(xiàn)代最流行的通用程序設(shè)計語言之一。它功能豐富,使用靈活,可移植性好,深受廣大用戶歡迎。C語言的數(shù)據(jù)類型豐富,既具有高級程序設(shè)計語言的優(yōu)點,又具有低級程序設(shè)計語言的特點;既可以用來編寫系統(tǒng)程序,又可以用來編寫應用程序。
本書通過大量實例系統(tǒng)地介紹了C語言的語法結(jié)構(gòu)。全書共13章。第1章為C語言程序設(shè)計概述,主要內(nèi)容包括C語言的發(fā)展歷程、C語言的特點、C語言程序的結(jié)構(gòu)及在Visual C++集成環(huán)境下運行C程序的步驟與方法。第2章為數(shù)據(jù)類型、運算符和表達式,主要內(nèi)容包括C語言的基本數(shù)據(jù)類型的表示形式、存儲格式、相關(guān)的運算以及各種表達式。第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)綜合實例。第6章為數(shù)組,主要內(nèi)容包括一維數(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)分配,以及指針綜合實例。第9章為復合數(shù)據(jù)類型,主要內(nèi)容包括結(jié)構(gòu)體、用結(jié)構(gòu)指針操作鏈表、共用體、枚舉類型及類型定義。第10章為文件,主要內(nèi)容包括C文件的概述、文件的打開與關(guān)閉、文件的讀寫及文件的定位與出錯檢測。第11章為位運算,主要內(nèi)容包括二進制位運算概述、位運算符及位段。第12章為編譯預處理,主要內(nèi)容包括宏聲明、文件包含及條件編譯。第13章為C語言的實際應用,主要講解C語言的程序設(shè)計步驟、實際應用中常見模塊設(shè)計和綜合實踐實例。
本書文字精練,例題簡單,容易理解,配備了各種類型的練習,部分章節(jié)結(jié)合了任務驅(qū)動教學法和建構(gòu)主義理論組織各知識點,便于學習掌握。對于C語言中重要和較難理解、容易出錯的內(nèi)容,書中均特別加以強調(diào)和說明。此外,在介紹C語言的語法結(jié)構(gòu)的同時,也強調(diào)了計算機算法和結(jié)構(gòu)化設(shè)計方法的概念和作用。本書可作為高等學校C語言程序設(shè)計課程的教材,也可作為計算機等級考試的輔導教材。
本書以ANSI標準C語言為背景,有關(guān)內(nèi)容不依賴任何具體的C系統(tǒng)。本書所有的程序?qū)嵗荚赩isual C++6.0中調(diào)試過,讀者也可以自由選用其他符合ANSI標準的C系統(tǒng)編程環(huán)境作為學習工具。
本書由易云飛擔任主編,萬勵、唐鵬和唐鳳仙任副主編。全書由易云飛策劃、確定框架結(jié)構(gòu),并統(tǒng)編定稿。本書第1章和第7章由唐鳳仙編寫,第2章由姜林和馬楚奇編寫,第3章由黃華、何傳波和張彥博編寫,第4章和第12章由萬勵和龔平編寫,第5章和第6章由羅富貴、唐鵬和易云飛編寫,第8章由楊鳳和李海英編寫,第9章由黃華和馬楚奇編寫,第10章由喻飛和唐鵬編寫,第11章、第13章由喻飛、何傳波和張彥博編寫。另外,本書在編寫過程中,得到兄弟高校從事計算機教育的老師的關(guān)心和幫助,教研室的同事也提出了許多寶貴意見,并得到廣西高等教育本科教學改革工程項目(編號2024JGB335)的支持,在此一并表示衷心的感謝。
本書配有電子教案,并提供程序源代碼,以方便讀者自學,請掃描下載。
限于作者水平,書中難免存在不當之處,懇請廣大讀者批評指正。
編者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ā)展及其特點3
1.2.1C語言的發(fā)展歷程3
1.2.2C語言的特點4
1.2.3C語言與C++語言交融發(fā)展5
1.3C程序的組成與結(jié)構(gòu)5
1.4C程序的上機步驟與方法8
1.4.1有關(guān)概念9
1.4.2運行C程序的一般步驟9
1.4.3Visual C++6.0環(huán)境運行C程序的步驟10
1.5如何學好C語言13
本章小結(jié)14
習題114
第2章數(shù)據(jù)類型、運算符和表達式16
2.1C語言字符集與標識符17
2.1.1C語言字符集17
2.1.2標識符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ù)據(jù)24
2.3.4字符型數(shù)據(jù)25
2.3.5變量賦初值27
2.4運算符和表達式28
2.4.1運算符和表達式概述28
2.4.2算術(shù)運算符及算術(shù)表達式30
2.4.3關(guān)系運算符及關(guān)系表達式33
2.4.4邏輯運算符及邏輯表達式34
2.4.5條件運算符及條件表達式36
2.4.6賦值運算符及賦值表達式38
2.4.7逗號運算符及逗號表達式40
2.4.8位運算符41
2.4.9求字節(jié)運算符42
2.4.10類型轉(zhuǎn)換43
本章小結(jié)44
習題244
第3章順序結(jié)構(gòu)47
3.1簡單順序語句47
3.1.1表達式語句47
3.1.2空語句48
3.1.3復合語句48
3.2C語言數(shù)據(jù)的輸入輸出48
3.2.1字符輸入輸出函數(shù)49
3.2.2格式輸入輸出51
3.3綜合實例59
本章小結(jié)62
習題362
第4章選擇結(jié)構(gòu)65
4.1if語句65
4.1.1if語句的基本形式66
4.1.2if語句嵌套70
4.2switch語句72
4.3程序應用75
本章小結(jié)81
習題482
第5章循環(huán)結(jié)構(gòu)84
5.1while循環(huán)結(jié)構(gòu)85
5.1.1while語句的基本形式85
5.1.2while語句的應用86
5.2do…while循環(huán)結(jié)構(gòu)89
5.2.1do…while語句的基本形式89
5.2.2do…while語句的應用89
5.3for循環(huán)結(jié)構(gòu)91
5.3.1for語句的基本形式91
5.3.2for語句的應用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程序應用104
本章小結(jié)107
習題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ù)組的應用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ù)組的應用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ù)組的應用133
本章小結(jié)136
習題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ù)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ù)實參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
習題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指針的運算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指針的應用舉例204
本章小結(jié)207
習題8207
第9章復合數(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鏈表應用舉例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
習題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文件的隨機讀寫260
10.2.6文件的檢測264
10.3庫文件265
本章小結(jié)266
習題10266
第11章位運算268
11.1整數(shù)的計算機表示268
11.2位運算符270
11.2.1取反運算符~270
11.2.2按位與運算符&271
11.2.3按位或運算符|272
11.2.4按位異或運算符∧272
11.2.5左移運算符<<273
11.2.6右移運算符>>274
11.2.7位運算與賦值運算的結(jié)合274
11.2.8位運算舉例274
本章小結(jié)275
習題11275
第12章編譯預處理277
12.1宏聲明277
12.1.1不帶參數(shù)的宏聲明277
12.1.2帶參數(shù)的宏聲明280
12.2文件包含286
12.3條件編譯289
本章小結(jié)293
習題12293
第13章C語言的實際應用296
13.1C語言的程序設(shè)計步驟296
13.2實際應用中常見的模塊設(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綜合實踐實例: 企業(yè)員工工資管理系統(tǒng)306
本章小結(jié)326
附錄AASCII編碼表327
附錄Bctype.h文件中包含的字符函數(shù)329
附錄Cmath.h文件中包含的數(shù)學函數(shù)330
附錄DC語言運算符優(yōu)先級詳細列表332