C語言是一種結構化的計算機程序設計語言,具有使用靈活、表達能力強,兼具高級語言和低級語言雙重功能等特點,是各大院校計算機程序設計入門課程的*語言之一。本書以應用性為中心,以培養(yǎng)程序設計思想和程序設計能力為本位,堅持基礎理論與應用實踐并重的指導思想。
全書理論內(nèi)容分析透徹嚴謹、詳略得當,案例豐富生動,內(nèi)容簡潔、銜接自然、層層深入,共分為11章,全面講解C語言的數(shù)據(jù)類型和表達式、三種基本結構的程序設計、模塊化程序設計、數(shù)組、指針、結構體和文件等內(nèi)容,每章后均附有重點內(nèi)容小結和多種類型的習題,同時第11章為每章設置了相應的實驗指導,與教學內(nèi)容緊密銜接,相輔相成。本書配有電子課件、例題和實驗的程序源碼、習題答案等豐富的教學資源。
本書適合作為高等院校C語言程序設計等相關課程的教材,也可供C語言程序設計愛好者或參加各種C語言考試的讀者學習使用。
理論精,案例多且具有代表性,適合層次化教學,且將一定量的二級試題融入教材中。
C語言是從BCPL語言發(fā)展過來的一種結構化的計算機程序設計語言,具有語言簡潔緊湊,運算符和數(shù)據(jù)類型豐富,表達能力強,生成的目標代碼質(zhì)量高,使用方便靈活,既可以進行底層系統(tǒng)程序的開發(fā),又可以進行上層應用程序的開發(fā)等特點。隨著C語言在我國計算機行業(yè)的推廣普及,目前絕大多數(shù)高等院校的理工科專業(yè)都開設了C語言程序設計課程。
本書以應用性為中心,以培養(yǎng)程序設計思想和程序設計能力為本位,堅持基礎理論與應用實踐并重的指導思想,旨在幫助讀者理解和掌握C語言,并能通過C語言解決現(xiàn)實世界中的實際問題。
本書全面而又系統(tǒng)地講解了C語言的相關知識點,并進行了合理的組織與劃分,全書共分為11章,包括初識C語言、C程序設計基礎、順序結構程序設計、選擇結構程序設計、循環(huán)結構程序設計、模塊化程序設計、使用數(shù)組處理批量數(shù)據(jù)、指針、用戶自定義數(shù)據(jù)類型、文件和實驗安排等,前10章附有重點內(nèi)容小結和多種類型的習題。
本書的結構安排合理、條理清晰,內(nèi)容實用,講解到位,具有以下幾大特色:
(1) 結合C語言程序設計應用性、實踐性的特點,精選教材內(nèi)容;A理論以實用、夠用為目的,淡化語法,將基礎知識、理論體系刪繁就簡。
(2) 問題驅(qū)動,增強學生學習的目的性和主動性。為了增強學生的學習目的性,在每章內(nèi)容的開篇給出了本章的學習目標,同時在介紹具體內(nèi)容之前,增加了問題提出環(huán)節(jié),用來介紹為什么要學習這些內(nèi)容,這些內(nèi)容可以解決什么問題。在內(nèi)容的編寫上,注重對興趣性和啟發(fā)性原則的應用,盡量引用現(xiàn)實生活中學生感興趣的實例導出知識點,并多提出一些問題,引發(fā)學生思考,從而緊緊抓住學生的學習思路,增強其學習的主動性。
(3) 精選案例,消除學生的畏難情緒的同時,培養(yǎng)學生的程序設計能力。在保證知識夠用的前提下,適當控制難度,書中例題的選擇盡量做到知識性、趣味性、連貫性、簡單性和應用性的結合。根據(jù)學習環(huán)節(jié)設置的不同,例題一般分為兩大類。一類是基礎性、演示性例題。在剛接觸新的知識點時,盡量選取這類較簡單的例子,做到能說明問題即可,如對于三種循環(huán)語句的處理,可選用求前100個自然數(shù)和的例子加以講解,這樣既簡化了問題,又突出了重點,易于消除學生的畏難情緒。另一類,則是培養(yǎng)學生程序設計能力的設計題。通過任務的提出、設計思路的分析、算法的描述、程序的實現(xiàn)、引發(fā)的思考和說明等過程,逐步引領學生掌握算法分析及程序設計的方法。
(4) 以學生成績管理系統(tǒng)為主題,培養(yǎng)學生解決實際問題的能力。學生成績管理系統(tǒng)這一主題,由第3章引入一直貫穿到第10章文件的建立和使用,并在第11章的實驗安排部分進一步引申,前后銜接,逐步擴展,最終實現(xiàn)了一個功能完整的系統(tǒng)。在分模塊實現(xiàn)該程序的過程中,將C語言的基礎知識、程序的三種基本結構、函數(shù)、數(shù)組、結構體、文件等知識點和生活實際應用有機地結合在一起,有利于學生思考并理解為什么學如何用用在哪兒的問題,能夠使學生在學習過程中真正地做到學以致用。
(5) 實踐豐富,分層設置實驗內(nèi)容,注重學生應用技能的培養(yǎng)。為了強化學生的實際操作能力訓練,加強學生動手能力的培養(yǎng)。本書在第11章設置了上機實踐內(nèi)容,考慮到學生的學習水平參差不齊,將實驗內(nèi)容分成基礎實驗、進階實驗和提高擴展實驗三個不同的等級,其中基礎實驗以知識點的鞏固、驗證為主旨,進階實驗以知識點的完善、初步設計為主旨,提高擴展實驗以知識點的擴充、提高為主旨。采用分層設置的方式既方便學生選擇適合自己的實驗內(nèi)容,也方便老師開展分層教學。另外,在附錄部分還給出了常見的上機錯誤分析,以幫助學生更好地完成上機實踐環(huán)節(jié)。
本書的第1~4章和第11章由鹿玉紅編寫,第5~6章由邢麗莉編寫,第7、9章由楊秋格編寫,第8、10章由劉穎編寫。在本書的編寫過程中,防災科技學院計算機專業(yè)的豐繼林、白靈、張兵、龐國莉、郭娜和張艷霞等老師給予了多方面的支持和幫助,在此表示衷心的感謝。另外,編者參閱了大量的文獻資料及網(wǎng)站資料,在此也一并表示感謝。
本書內(nèi)容豐富,除了書中提供的內(nèi)容外,還提供了電子課件、例題和實驗的程序源碼、課后習題答案等豐富的教學資源。雖然我們力求完美,但因編者水平有限,書中難免存在錯誤和不足之處,歡迎廣大讀者來信批評指正,提出您的寶貴意見和建議,幫助我們不斷地完善本教程。編者Email地址為:luyuhong@cidp.edu.cn。
編者
2018年4月
第1章初識C語言11.1什么是C語言1
1.1.1計算機語言1
1.1.2C語言的由來2
1.2為什么學習C語言2
1.2.1C語言的特點3
1.2.2C語言的應用4
1.3認識C語言程序5
1.3.1計算機程序5
1.3.2C語言程序的基本結構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)容小結18
習題18
第2章C程序設計基礎20
2.1C數(shù)據(jù)類型概述20
2.1.1C數(shù)據(jù)類型20
2.1.2為什么設置數(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算術運算符及其表達式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結構化程序設計48
2.6重點內(nèi)容小結50
習題52
第3章順序結構程序設計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順序結構應用舉例78
3.5重點內(nèi)容小結80
習題81
第4章選擇結構程序設計86
4.1選擇結構與條件判斷86
4.1.1邏輯值的約定87
4.1.2關系運算符及其表達式87
4.1.3邏輯運算符及其表達式89
4.2if語句的基本格式90
4.2.1if語句的單分支結構90
4.2.2if語句的雙分支結構91
4.2.3if語句的多分支結構93
4.2.4if語句的使用說明95
4.2.5if語句間的關系97
4.3條件運算符和條件表達式104
4.3.1條件運算符104
4.3.2條件表達式104
4.4switch語句105
4.5選擇結構應用舉例110
4.6重點內(nèi)容小結114
習題115
第5章循環(huán)結構程序設計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)結構應用舉例137
5.8重點內(nèi)容小結142
習題143
第6章模塊化程序設計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)容小結173
習題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)容小結221
習題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)容小結255
習題257
第9章用戶自定義數(shù)據(jù)類型261
9.1為什么引入結構體261
9.2結構體類型263
9.2.1結構體類型的定義263
9.2.2用typedef命名數(shù)據(jù)類型264
9.3結構體類型變量的定義及初始化265
9.3.1結構體變量的定義和初始化265
9.3.2結構體數(shù)組的定義和初始化272
9.3.3結構體指針的定義及初始化277
9.4向函數(shù)傳遞結構體279
9.4.1結構體變量作函數(shù)參數(shù)279
9.4.2結構體指針作函數(shù)參數(shù)281
9.4.3結構體數(shù)組作函數(shù)參數(shù)282
* 9.5共用體287
* 9.6枚舉數(shù)據(jù)類型291
* 9.7動態(tài)數(shù)據(jù)結構單向鏈表293
9.8重點內(nèi)容小結298
習題299
第10章文件308
10.1為什么引入文件308
10.2文件的打開與關閉310
10.2.1文件的打開310
10.2.2文件的關閉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)容小結329
習題330
第11章實驗安排335
11.1實驗1熟悉Visual C 6.0集成開發(fā)環(huán)境和運行過程335
11.2實驗2基本數(shù)據(jù)類型和運算符337
11.3實驗3順序結構程序設計341
11.4實驗4選擇結構程序設計345
11.5實驗5循環(huán)結構程序設計350
11.6實驗6函數(shù)程序設計357
11.7實驗7數(shù)組程序設計365
11.8實驗8指針程序設計375
11.9實驗9用戶自定義數(shù)據(jù)類型385
11.10實驗10文件操作399
附錄AC語言關鍵字406
附錄B標準ASCII碼表407
附錄CC語言運算符408
附錄DC語言常用的函數(shù)庫410
附錄EVisual C 6.0常見錯誤中英對照表及分析416
參考文獻422