C語言是一種結(jié)構(gòu)化的計算機程序設(shè)計語言,具有使用靈活、表達能力強,兼具高級語言和低級語言雙重功能等特點,是各大院校計算機程序設(shè)計入門課程的*語言之一。本書以應(yīng)用性為中心,以培養(yǎng)程序設(shè)計思想和程序設(shè)計能力為本位,堅持基礎(chǔ)理論與應(yīng)用實踐并重的指導(dǎo)思想。
全書理論內(nèi)容分析透徹嚴謹、詳略得當,案例豐富生動,內(nèi)容簡潔、銜接自然、層層深入,共分為11章,全面講解C語言的數(shù)據(jù)類型和表達式、三種基本結(jié)構(gòu)的程序設(shè)計、模塊化程序設(shè)計、數(shù)組、指針、結(jié)構(gòu)體和文件等內(nèi)容,每章后均附有重點內(nèi)容小結(jié)和多種類型的習(xí)題,同時第11章為每章設(shè)置了相應(yīng)的實驗指導(dǎo),與教學(xué)內(nèi)容緊密銜接,相輔相成。本書配有電子課件、例題和實驗的程序源碼、習(xí)題答案等豐富的教學(xué)資源。
本書適合作為高等院校C語言程序設(shè)計等相關(guān)課程的教材,也可供C語言程序設(shè)計愛好者或參加各種C語言考試的讀者學(xué)習(xí)使用。
理論精,案例多且具有代表性,適合層次化教學(xué),且將一定量的二級試題融入教材中。
C語言是從BCPL語言發(fā)展過來的一種結(jié)構(gòu)化的計算機程序設(shè)計語言,具有語言簡潔緊湊,運算符和數(shù)據(jù)類型豐富,表達能力強,生成的目標代碼質(zhì)量高,使用方便靈活,既可以進行底層系統(tǒng)程序的開發(fā),又可以進行上層應(yīng)用程序的開發(fā)等特點。隨著C語言在我國計算機行業(yè)的推廣普及,目前絕大多數(shù)高等院校的理工科專業(yè)都開設(shè)了C語言程序設(shè)計課程。
本書以應(yīng)用性為中心,以培養(yǎng)程序設(shè)計思想和程序設(shè)計能力為本位,堅持基礎(chǔ)理論與應(yīng)用實踐并重的指導(dǎo)思想,旨在幫助讀者理解和掌握C語言,并能通過C語言解決現(xiàn)實世界中的實際問題。
本書全面而又系統(tǒng)地講解了C語言的相關(guān)知識點,并進行了合理的組織與劃分,全書共分為11章,包括初識C語言、C程序設(shè)計基礎(chǔ)、順序結(jié)構(gòu)程序設(shè)計、選擇結(jié)構(gòu)程序設(shè)計、循環(huán)結(jié)構(gòu)程序設(shè)計、模塊化程序設(shè)計、使用數(shù)組處理批量數(shù)據(jù)、指針、用戶自定義數(shù)據(jù)類型、文件和實驗安排等,前10章附有重點內(nèi)容小結(jié)和多種類型的習(xí)題。
本書的結(jié)構(gòu)安排合理、條理清晰,內(nèi)容實用,講解到位,具有以下幾大特色:
(1) 結(jié)合C語言程序設(shè)計應(yīng)用性、實踐性的特點,精選教材內(nèi)容;A(chǔ)理論以實用、夠用為目的,淡化語法,將基礎(chǔ)知識、理論體系刪繁就簡。
(2) 問題驅(qū)動,增強學(xué)生學(xué)習(xí)的目的性和主動性。為了增強學(xué)生的學(xué)習(xí)目的性,在每章內(nèi)容的開篇給出了本章的學(xué)習(xí)目標,同時在介紹具體內(nèi)容之前,增加了問題提出環(huán)節(jié),用來介紹為什么要學(xué)習(xí)這些內(nèi)容,這些內(nèi)容可以解決什么問題。在內(nèi)容的編寫上,注重對興趣性和啟發(fā)性原則的應(yīng)用,盡量引用現(xiàn)實生活中學(xué)生感興趣的實例導(dǎo)出知識點,并多提出一些問題,引發(fā)學(xué)生思考,從而緊緊抓住學(xué)生的學(xué)習(xí)思路,增強其學(xué)習(xí)的主動性。
(3) 精選案例,消除學(xué)生的畏難情緒的同時,培養(yǎng)學(xué)生的程序設(shè)計能力。在保證知識夠用的前提下,適當控制難度,書中例題的選擇盡量做到知識性、趣味性、連貫性、簡單性和應(yīng)用性的結(jié)合。根據(jù)學(xué)習(xí)環(huán)節(jié)設(shè)置的不同,例題一般分為兩大類。一類是基礎(chǔ)性、演示性例題。在剛接觸新的知識點時,盡量選取這類較簡單的例子,做到能說明問題即可,如對于三種循環(huán)語句的處理,可選用求前100個自然數(shù)和的例子加以講解,這樣既簡化了問題,又突出了重點,易于消除學(xué)生的畏難情緒。另一類,則是培養(yǎng)學(xué)生程序設(shè)計能力的設(shè)計題。通過任務(wù)的提出、設(shè)計思路的分析、算法的描述、程序的實現(xiàn)、引發(fā)的思考和說明等過程,逐步引領(lǐng)學(xué)生掌握算法分析及程序設(shè)計的方法。
(4) 以學(xué)生成績管理系統(tǒng)為主題,培養(yǎng)學(xué)生解決實際問題的能力。學(xué)生成績管理系統(tǒng)這一主題,由第3章引入一直貫穿到第10章文件的建立和使用,并在第11章的實驗安排部分進一步引申,前后銜接,逐步擴展,最終實現(xiàn)了一個功能完整的系統(tǒng)。在分模塊實現(xiàn)該程序的過程中,將C語言的基礎(chǔ)知識、程序的三種基本結(jié)構(gòu)、函數(shù)、數(shù)組、結(jié)構(gòu)體、文件等知識點和生活實際應(yīng)用有機地結(jié)合在一起,有利于學(xué)生思考并理解為什么學(xué)如何用用在哪兒的問題,能夠使學(xué)生在學(xué)習(xí)過程中真正地做到學(xué)以致用。
(5) 實踐豐富,分層設(shè)置實驗內(nèi)容,注重學(xué)生應(yīng)用技能的培養(yǎng)。為了強化學(xué)生的實際操作能力訓(xùn)練,加強學(xué)生動手能力的培養(yǎng)。本書在第11章設(shè)置了上機實踐內(nèi)容,考慮到學(xué)生的學(xué)習(xí)水平參差不齊,將實驗內(nèi)容分成基礎(chǔ)實驗、進階實驗和提高擴展實驗三個不同的等級,其中基礎(chǔ)實驗以知識點的鞏固、驗證為主旨,進階實驗以知識點的完善、初步設(shè)計為主旨,提高擴展實驗以知識點的擴充、提高為主旨。采用分層設(shè)置的方式既方便學(xué)生選擇適合自己的實驗內(nèi)容,也方便老師開展分層教學(xué)。另外,在附錄部分還給出了常見的上機錯誤分析,以幫助學(xué)生更好地完成上機實踐環(huán)節(jié)。
本書的第1~4章和第11章由鹿玉紅編寫,第5~6章由邢麗莉編寫,第7、9章由楊秋格編寫,第8、10章由劉穎編寫。在本書的編寫過程中,防災(zāi)科技學(xué)院計算機專業(yè)的豐繼林、白靈、張兵、龐國莉、郭娜和張艷霞等老師給予了多方面的支持和幫助,在此表示衷心的感謝。另外,編者參閱了大量的文獻資料及網(wǎng)站資料,在此也一并表示感謝。
本書內(nèi)容豐富,除了書中提供的內(nèi)容外,還提供了電子課件、例題和實驗的程序源碼、課后習(xí)題答案等豐富的教學(xué)資源。雖然我們力求完美,但因編者水平有限,書中難免存在錯誤和不足之處,歡迎廣大讀者來信批評指正,提出您的寶貴意見和建議,幫助我們不斷地完善本教程。編者Email地址為:luyuhong@cidp.edu.cn。
編者
2018年4月
第1章初識C語言11.1什么是C語言1
1.1.1計算機語言1
1.1.2C語言的由來2
1.2為什么學(xué)習(xí)C語言2
1.2.1C語言的特點3
1.2.2C語言的應(yīng)用4
1.3認識C語言程序5
1.3.1計算機程序5
1.3.2C語言程序的基本結(jié)構(gòu)5
1.4運行C程序的步驟和方法8
1.4.1C程序的一般運行步驟8
1.4.2使用集成開發(fā)環(huán)境Visual C 6.0 實現(xiàn)C程序10
1.4.3C程序的調(diào)試方法15
1.5重點內(nèi)容小結(jié)18
習(xí)題18
第2章C程序設(shè)計基礎(chǔ)20
2.1C數(shù)據(jù)類型概述20
2.1.1C數(shù)據(jù)類型20
2.1.2為什么設(shè)置數(shù)據(jù)類型 21
2.2數(shù)據(jù)表現(xiàn)形式21
2.2.1常量21
2.2.2變量23
2.2.3C標識符23
2.3基本數(shù)據(jù)類型24
2.3.1整型數(shù)據(jù)24
2.3.2實型數(shù)據(jù)27
2.3.3字符型數(shù)據(jù)28
2.4C語言的運算符與表達式312.4.1概述31
2.4.2算術(shù)運算符及其表達式32
2.4.3賦值運算符及其表達式35
2.4.4強制類型轉(zhuǎn)換運算符38
2.4.5自增自減運算符及其表達式38
2.4.6逗號運算符及其表達式42
2.4.7位運算符及其表達式44
2.5算法概念及其描述46
2.5.1算法及其特性47
2.5.2算法的常用描述方法47
2.5.3結(jié)構(gòu)化程序設(shè)計48
2.6重點內(nèi)容小結(jié)50
習(xí)題52
第3章順序結(jié)構(gòu)程序設(shè)計55
3.1C語句概述55
3.1.1說明語句55
3.1.2執(zhí)行語句56
3.2字符數(shù)據(jù)的輸入輸出函數(shù)59
3.2.1字符輸出函數(shù)putchar59
3.2.2字符輸入函數(shù)getchar60
3.3數(shù)據(jù)的格式化輸入輸出函數(shù)63
3.3.1數(shù)據(jù)的格式化輸出函數(shù)printf63
3.3.2數(shù)據(jù)的格式化輸入函數(shù)scanf69
3.4順序結(jié)構(gòu)應(yīng)用舉例78
3.5重點內(nèi)容小結(jié)80
習(xí)題81
第4章選擇結(jié)構(gòu)程序設(shè)計86
4.1選擇結(jié)構(gòu)與條件判斷86
4.1.1邏輯值的約定87
4.1.2關(guān)系運算符及其表達式87
4.1.3邏輯運算符及其表達式89
4.2if語句的基本格式90
4.2.1if語句的單分支結(jié)構(gòu)90
4.2.2if語句的雙分支結(jié)構(gòu)91
4.2.3if語句的多分支結(jié)構(gòu)93
4.2.4if語句的使用說明95
4.2.5if語句間的關(guān)系97
4.3條件運算符和條件表達式104
4.3.1條件運算符104
4.3.2條件表達式104
4.4switch語句105
4.5選擇結(jié)構(gòu)應(yīng)用舉例110
4.6重點內(nèi)容小結(jié)114
習(xí)題115
第5章循環(huán)結(jié)構(gòu)程序設(shè)計120
5.1為什么需要循環(huán)控制120
5.2while語句121
5.3dowhile語句122
5.4for語句126
5.5break和continue語句129
5.5.1break語句129
5.5.2continue語句133
5.6循環(huán)的嵌套134
5.7循環(huán)結(jié)構(gòu)應(yīng)用舉例137
5.8重點內(nèi)容小結(jié)142
習(xí)題143
第6章模塊化程序設(shè)計148
6.1為什么引入函數(shù) 148
6.2函數(shù)的定義及調(diào)用150
6.2.1函數(shù)的定義150
6.2.2函數(shù)的調(diào)用形式152
6.2.3函數(shù)的聲明155
6.3函數(shù)調(diào)用過程中的參數(shù)傳遞156
6.4函數(shù)的嵌套調(diào)用和遞歸調(diào)用159
6.4.1函數(shù)的嵌套調(diào)用159
6.4.2函數(shù)的遞歸調(diào)用161
6.5變量的作用域和存儲類別164
6.5.1變量的作用域164
6.5.2變量的存儲類別167
6.6內(nèi)部函數(shù)和外部函數(shù)172
6.6.1內(nèi)部函數(shù)172
6.6.2外部函數(shù)173
6.7重點內(nèi)容小結(jié)173
習(xí)題177
第7章使用數(shù)組處理批量數(shù)據(jù)182
7.1為什么引入數(shù)組182
7.2數(shù)值型數(shù)組183
7.2.1一維數(shù)值數(shù)組的定義和初始化183
7.2.2二維數(shù)值數(shù)組的定義和初始化193
7.3字符數(shù)組204
7.3.1一維字符數(shù)組的定義和初始化204
7.3.2一維字符數(shù)組的輸入和輸出205
7.3.3二維字符數(shù)組的定義和初始化207
7.4字符串處理函數(shù)208
7.5向函數(shù)傳遞一維數(shù)組212
7.5.1用數(shù)組元素作函數(shù)實參212
7.5.2用數(shù)組名作函數(shù)實參215
7.6向函數(shù)傳遞二維數(shù)組219
7.7重點內(nèi)容小結(jié)221
習(xí)題222
第8章指針226
8.1指針的含義226
8.2指針與變量227
8.2.1指針變量的定義227
8.2.2指針變量的引用228
8.3指針與數(shù)組231
8.3.1指針與一維數(shù)組231
8.3.2指針與二維數(shù)組236
8.3.3指針與字符串240
8.3.4指針數(shù)組和指向指針的指針242
8.4指針與函數(shù)246
8.4.1簡單指針變量作為函數(shù)參數(shù)246
8.4.2指向數(shù)組的指針變量作為函數(shù)參數(shù)248
8.4.3指針數(shù)組作為函數(shù)參數(shù)249
8.4.4返回值為指針的函數(shù)與函數(shù)指針變量251
8.5重點內(nèi)容小結(jié)255
習(xí)題257
第9章用戶自定義數(shù)據(jù)類型261
9.1為什么引入結(jié)構(gòu)體261
9.2結(jié)構(gòu)體類型263
9.2.1結(jié)構(gòu)體類型的定義263
9.2.2用typedef命名數(shù)據(jù)類型264
9.3結(jié)構(gòu)體類型變量的定義及初始化265
9.3.1結(jié)構(gòu)體變量的定義和初始化265
9.3.2結(jié)構(gòu)體數(shù)組的定義和初始化272
9.3.3結(jié)構(gòu)體指針的定義及初始化277
9.4向函數(shù)傳遞結(jié)構(gòu)體279
9.4.1結(jié)構(gòu)體變量作函數(shù)參數(shù)279
9.4.2結(jié)構(gòu)體指針作函數(shù)參數(shù)281
9.4.3結(jié)構(gòu)體數(shù)組作函數(shù)參數(shù)282
* 9.5共用體287
* 9.6枚舉數(shù)據(jù)類型291
* 9.7動態(tài)數(shù)據(jù)結(jié)構(gòu)單向鏈表293
9.8重點內(nèi)容小結(jié)298
習(xí)題299
第10章文件308
10.1為什么引入文件308
10.2文件的打開與關(guān)閉310
10.2.1文件的打開310
10.2.2文件的關(guān)閉312
10.3文件的讀寫314
10.3.1文件的字符讀寫314
10.3.2文件的字符串讀寫316
10.3.3文件的格式化讀寫318
10.3.4文件的數(shù)據(jù)塊讀寫321
10.4文件的定位和文件的隨機讀取323
10.5重點內(nèi)容小結(jié)329
習(xí)題330
第11章實驗安排335
11.1實驗1熟悉Visual C 6.0集成開發(fā)環(huán)境和運行過程335
11.2實驗2基本數(shù)據(jù)類型和運算符337
11.3實驗3順序結(jié)構(gòu)程序設(shè)計341
11.4實驗4選擇結(jié)構(gòu)程序設(shè)計345
11.5實驗5循環(huán)結(jié)構(gòu)程序設(shè)計350
11.6實驗6函數(shù)程序設(shè)計357
11.7實驗7數(shù)組程序設(shè)計365
11.8實驗8指針程序設(shè)計375
11.9實驗9用戶自定義數(shù)據(jù)類型385
11.10實驗10文件操作399
附錄AC語言關(guān)鍵字406
附錄B標準ASCII碼表407
附錄CC語言運算符408
附錄DC語言常用的函數(shù)庫410
附錄EVisual C 6.0常見錯誤中英對照表及分析416
參考文獻422