本書是按照普通高等院校大學(xué)計(jì)算機(jī)程序設(shè)計(jì)課程的培養(yǎng)目標(biāo)和基本要求,由多年從事計(jì)算機(jī)基礎(chǔ)教學(xué),具有教學(xué)經(jīng)驗(yàn)的教師編寫。全書共分10章,系統(tǒng)地介紹程序設(shè)計(jì)概述、數(shù)據(jù)類型、順序結(jié)構(gòu)程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體和共用體、文件等內(nèi)容。
本書內(nèi)容豐富翔實(shí)、語(yǔ)言通俗易懂,通過(guò)一些有趣的案例激發(fā)讀者的學(xué)習(xí)興趣,通過(guò)一些實(shí)用案例講解知識(shí)點(diǎn),把一些繁雜的知識(shí)點(diǎn)分散到不同的示例中講解并應(yīng)用,通過(guò)幾個(gè)典型案例貫穿整個(gè)知識(shí)體系。
本書適合作為高等院校及高職高專院校C語(yǔ)言程序設(shè)計(jì)課程的教材,也可作為計(jì)算機(jī)各類培訓(xùn)班的教材或計(jì)算機(jī)及相關(guān)工作的科技人員,計(jì)算機(jī)愛(ài)好者及各類自學(xué)人員的參考。
C語(yǔ)言程序設(shè)計(jì)C語(yǔ)言自1972年誕生以來(lái),以其靈活和實(shí)用的特點(diǎn)得到了廣大用戶的喜愛(ài),迅速發(fā)展成為一種應(yīng)用廣泛的高級(jí)語(yǔ)言。從網(wǎng)站后臺(tái)到底層操作系統(tǒng),從多媒體應(yīng)用到大型網(wǎng)絡(luò)游戲,均可使用C 語(yǔ)言來(lái)開發(fā)。在工業(yè)領(lǐng)域,C語(yǔ)言也是首選的系統(tǒng)語(yǔ)言,特別是圖形處理和底層應(yīng)用方面目前使用更為廣泛。此外,C語(yǔ)言是一門結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,有利于學(xué)生掌握程序設(shè)計(jì)的思想,因此,C語(yǔ)言已成為目前高校學(xué)生掌握程序設(shè)計(jì)的一門基礎(chǔ)性語(yǔ)言。
本書既注重概念清晰,使讀者建立起對(duì)程序設(shè)計(jì)和C語(yǔ)言的清晰理解,又引導(dǎo)學(xué)生學(xué)以致用,使學(xué)生在較短的時(shí)間內(nèi)初步學(xué)會(huì)用C語(yǔ)言編寫程序,具有初步的編程知識(shí)和能力。本書的講解是不斷提出問(wèn)題,解決問(wèn)題,再進(jìn)一步提出問(wèn)題,并逐步解決問(wèn)題的過(guò)程。使學(xué)生養(yǎng)成由簡(jiǎn)到繁、逐步求精的編程習(xí)慣。
全書共分10章,第1章介紹計(jì)算機(jī)與程序設(shè)計(jì)語(yǔ)言基礎(chǔ)知識(shí)、C語(yǔ)言的發(fā)展和特點(diǎn)、C語(yǔ)言的應(yīng)用等;第2章詳細(xì)介紹C語(yǔ)言中常用的數(shù)據(jù)類型,即整型、實(shí)型和字符型等;第3章介紹賦值運(yùn)算符與賦值表達(dá)式、算術(shù)運(yùn)算符與算術(shù)表達(dá)式、宏定義與宏替換等,重點(diǎn)介紹了數(shù)據(jù)的格式化輸入與輸出;第4章介紹算法及其描述方法、關(guān)系運(yùn)算符與關(guān)系表達(dá)式、邏輯運(yùn)算符與邏輯表達(dá)式、條件運(yùn)算符與條件表達(dá)式、單分支、雙分支和多分支選擇結(jié)構(gòu);第5章詳細(xì)介紹while循環(huán)、dowhile循環(huán)和for循環(huán)三種循環(huán)結(jié)構(gòu)語(yǔ)句的應(yīng)用,以及C語(yǔ)言中流程轉(zhuǎn)移的控制語(yǔ)句;第6章介紹一維數(shù)組、二維數(shù)組、字符數(shù)組的定義、引用和初始化等;第7章介紹函數(shù)的概念、函數(shù)聲明、函數(shù)定義、函數(shù)調(diào)用、數(shù)組作為函數(shù)參數(shù)、變量的作用域和存儲(chǔ)類型等;第8章介紹指針的概念、指針變量的定義、指針與數(shù)組、指針與函數(shù)、指針的高級(jí)應(yīng)用等;第9章介紹結(jié)構(gòu)體類型和結(jié)構(gòu)體變量、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針、鏈表、共用體等;第10章介紹文件的概念、分類、文件的打開與關(guān)閉、文件的讀寫操作等。
為了方便廣大師生的教學(xué)和學(xué)習(xí),本書還提供了配套的電子教案和有關(guān)的源程序文件。
本書由孫改平、王德志任主編,吳靜、盛建瓴、王曉菊任副主編。第1、4章由王曉菊編寫;第2、3章由盛建瓴編寫;第5、9章由吳靜編寫;第6、7章由孫改平編寫;第8、10章、附錄由王德志編寫,最后由孫改平、王德志進(jìn)行統(tǒng)稿。在本書編寫過(guò)程中得到了各級(jí)領(lǐng)導(dǎo)的關(guān)心和大力支持,許多C語(yǔ)言程序設(shè)計(jì)課程的任課教師郭紅、鞠宏軍、朱冬梅、陳超、郭曉欣、萬(wàn)雪芬、劉明艷、吳曉丹、喬良等為本書提出了寶貴的意見(jiàn)和建議,在此一并表示感謝。
在教材的編寫過(guò)程中,參考了國(guó)內(nèi)外的相關(guān)研究成果和著作,部分已列入本書后面的參考文獻(xiàn)中,在此感謝所涉及的所有專家和研究人員。盡管作者們做出了種種努力,付出了許多勞動(dòng),但由于作者的水平有限,時(shí)間倉(cāng)促,書中不妥或疏漏之處在所難免,懇請(qǐng)使用本書的廣大同行和讀者批評(píng)與指正,對(duì)教材提出寶貴意見(jiàn),幫助我們不斷地完善本教程。
編者2016年2月
第1章程序設(shè)計(jì)概述1
1.1計(jì)算機(jī)與程序設(shè)計(jì)語(yǔ)言1
1.1.1機(jī)器語(yǔ)言1
1.1.2匯編語(yǔ)言2
1.1.3高級(jí)語(yǔ)言2
1.2C語(yǔ)言的發(fā)展和特點(diǎn)4
1.2.1C語(yǔ)言的發(fā)展4
1.2.2C語(yǔ)言的特點(diǎn)5
1.3C語(yǔ)言的應(yīng)用6
1.3.1簡(jiǎn)單的C語(yǔ)言程序?qū)嵗?
1.3.2C語(yǔ)言程序的結(jié)構(gòu)9
1.4程序設(shè)計(jì)語(yǔ)言的工作原理與操作環(huán)境11
1.4.1工作原理11
1.4.2操作環(huán)境13
習(xí)題17
第2章C數(shù)據(jù)類型18
2.1C語(yǔ)言的數(shù)據(jù)類型18
2.2常量和變量19
2.2.1標(biāo)識(shí)符19
2.2.2常量和符號(hào)常量19
2.2.3變量20
2.3整型數(shù)據(jù)21
2.3.1整型常量21
2.3.2整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式22
2.3.3整型變量23
2.3.4整型常量的類型25
2.4實(shí)型數(shù)據(jù)26
2.4.1實(shí)型常量26
2.4.2實(shí)型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式26C語(yǔ)言程序設(shè)計(jì)目錄2.4.3實(shí)型變量27
2.5字符型數(shù)據(jù)28
2.5.1字符常量28
2.5.2字符變量30
2.5.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法30
2.5.4字符串常量32
習(xí)題33
第3章順序結(jié)構(gòu)程序設(shè)計(jì)35
3.1賦值運(yùn)算符與賦值表達(dá)式35
3.1.1賦值運(yùn)算符35
3.1.2賦值表達(dá)式36
3.1.3賦值語(yǔ)句36
3.1.4不同數(shù)據(jù)類型間的賦值規(guī)則37
3.2算術(shù)運(yùn)算符與算術(shù)表達(dá)式39
3.2.1算術(shù)運(yùn)算符39
3.2.2算術(shù)表達(dá)式39
3.2.3運(yùn)算符的優(yōu)先級(jí)和結(jié)合性40
3.2.4自增自減運(yùn)算符40
3.2.5算術(shù)運(yùn)算中數(shù)據(jù)類型轉(zhuǎn)換規(guī)則42
3.2.6sizeof運(yùn)算符、復(fù)合賦值運(yùn)算符43
3.3數(shù)據(jù)的格式化輸出44
3.3.1整數(shù)的輸出46
3.3.2實(shí)數(shù)的輸出50
3.3.3字符和字符串的輸出51
3.3.4格式化輸出總結(jié)52
3.4數(shù)據(jù)的格式化輸入54
3.5單個(gè)字符的輸入和輸出59
3.5.1單個(gè)字符輸出函數(shù)putchar59
3.5.2單個(gè)字符輸入函數(shù)getchar60
3.6宏定義與宏替換60
3.6.1無(wú)參宏定義61
3.6.2帶參宏定義63
3.7程序舉例64
習(xí)題66
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)68
4.1算法及其描述方法68
4.1.1算法的概念68
4.1.2算法的表示69
4.2關(guān)系運(yùn)算符與關(guān)系表達(dá)式77
4.2.1關(guān)系運(yùn)算符77
4.2.2關(guān)系表達(dá)式78
4.3邏輯運(yùn)算符與邏輯表達(dá)式79
4.3.1邏輯運(yùn)算符79
4.3.2邏輯表達(dá)式79
4.4單分支與雙分支結(jié)構(gòu)81
4.4.1單分支結(jié)構(gòu)81
4.4.2雙分支結(jié)構(gòu)83
4.4.3if語(yǔ)句的嵌套85
4.5條件運(yùn)算符與條件表達(dá)式88
4.6多分支結(jié)構(gòu)90
4.6.1多分支結(jié)構(gòu)的條件語(yǔ)句90
4.6.2多分支結(jié)構(gòu)的開關(guān)語(yǔ)句92
4.7程序舉例96
習(xí)題103
第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)106
5.1循環(huán)結(jié)構(gòu)程序的概念106
5.2while循環(huán)107
5.3dowhile循環(huán)109
5.4逗號(hào)表達(dá)式113
5.5for循環(huán)114
5.6循環(huán)的嵌套120
5.7流程的轉(zhuǎn)移控制123
5.7.1goto語(yǔ)句123
5.7.2break語(yǔ)句125
5.7.3continue語(yǔ)句126
5.8幾種循環(huán)的比較128
5.9程序舉例128
習(xí)題132
第6章數(shù)組134
6.1數(shù)組的概念134
6.2一維數(shù)組136
6.2.1一維數(shù)組的定義136
6.2.2一維數(shù)組的引用137
6.2.3一維數(shù)組的初始化139
6.3二維數(shù)組146
6.3.1二維數(shù)組的定義146
6.3.2二維數(shù)組的引用147
6.3.3二維數(shù)組的初始化148
6.4字符數(shù)組150
6.4.1字符數(shù)組與字符串151
6.4.2字符數(shù)組的定義與初始化151
6.4.3字符數(shù)組的輸入與輸出153
6.4.4字符串處理函數(shù)157
6.5程序舉例161
習(xí)題167
第7章函數(shù)171
7.1函數(shù)的概念171
7.2函數(shù)定義與返回值173
7.2.1函數(shù)類型173
7.2.2函數(shù)定義175
7.3函數(shù)調(diào)用176
7.3.1函數(shù)調(diào)用的形式176
7.3.2函數(shù)調(diào)用時(shí)的參數(shù)傳遞177
7.4函數(shù)聲明178
7.5函數(shù)的嵌套與遞歸調(diào)用185
7.5.1函數(shù)的嵌套調(diào)用185
7.5.2函數(shù)的遞歸調(diào)用188
7.6數(shù)組作為函數(shù)參數(shù)190
7.6.1數(shù)組元素作為函數(shù)參數(shù)190
7.6.2一維數(shù)組作為函數(shù)參數(shù)192
7.6.3二維數(shù)組作為函數(shù)參數(shù)194
7.7變量的作用域和存儲(chǔ)類型198
7.7.1變量的作用域198
7.7.2變量的存儲(chǔ)類型202
7.8編譯預(yù)處理205
7.9綜合實(shí)例208
習(xí)題222
第8章指針227
8.1指針的概念227
8.2指針變量的定義229
8.2.1定義指針變量229
8.2.2引用指針變量230
8.2.3指針變量作為函數(shù)參數(shù)233
8.3指針與數(shù)組238
8.3.1數(shù)組元素的指針238
8.3.2一維數(shù)組的地址和指針239
8.3.3二維數(shù)組的地址和指針247
8.4字符串和指針251
8.4.1使用字符指針變量訪問(wèn)字符串常量251
8.4.2使用字符指針變量訪問(wèn)字符串變量254
8.4.3字符指針變量與字符數(shù)組的區(qū)別255
8.5指針與函數(shù)259
8.5.1指向函數(shù)的指針259
8.5.2返回指針的函數(shù)261
8.6指針的高級(jí)應(yīng)用263
8.6.1指針數(shù)組263
8.6.2main函數(shù)的命令行參數(shù)265
8.6.3動(dòng)態(tài)內(nèi)存分配266
習(xí)題273
第9章結(jié)構(gòu)體和共用體277
9.1結(jié)構(gòu)體類型和結(jié)構(gòu)體變量277
9.1.1結(jié)構(gòu)體類型的定義277
9.1.2結(jié)構(gòu)體變量的定義279
9.1.3結(jié)構(gòu)體變量的引用282
9.1.4結(jié)構(gòu)體變量的初始化285
9.1.5結(jié)構(gòu)體變量的舉例286
9.2結(jié)構(gòu)體數(shù)組288
9.2.1結(jié)構(gòu)體數(shù)組的定義288
9.2.2結(jié)構(gòu)體數(shù)組的引用290
9.2.3結(jié)構(gòu)體數(shù)組的初始化290
9.2.4結(jié)構(gòu)體數(shù)組的舉例292
9.3結(jié)構(gòu)體指針293
9.3.1指向結(jié)構(gòu)體變量的指針293
9.3.2指向結(jié)構(gòu)體數(shù)組的指針295
9.4鏈表297
9.4.1鏈表概念297
9.4.2鏈表相關(guān)操作299
9.5共用體316
9.5.1共用體類型和共用體變量的定義316
9.5.2共用體變量的引用和初始化319
9.5.3共用體變量的舉例322
9.6枚舉類型323
9.7用typedef定義新類型名325
習(xí)題327
第10章文件329
10.1文件概述329
10.1.1文件的概念329
10.1.2文件的分類330
10.1.3文件指針330
10.2文件的打開與關(guān)閉331
10.2.1文件的打開331
10.2.2文件的關(guān)閉333
10.2.3文件的檢測(cè)334
10.3文件的讀寫操作335
10.3.1字符讀寫函數(shù)335
10.3.2字符串讀寫函數(shù)339
10.3.3格式化讀寫函數(shù)341
10.3.4數(shù)據(jù)塊讀寫函數(shù)346
10.4文件的隨機(jī)讀寫350
習(xí)題355
附錄AC語(yǔ)言中的關(guān)鍵字360
附錄BC運(yùn)算符的優(yōu)先級(jí)與結(jié)合性362
附錄C常用字符與ASCII值對(duì)照表363
附錄D常用的ANSI C標(biāo)準(zhǔn)庫(kù)函數(shù)365
參考文獻(xiàn)372