為了切合當(dāng)前C語言的發(fā)展和教學(xué)的需要,對《C語言程序設(shè)計(第2版)》進(jìn)行修訂而形成了本書。本書以程序設(shè)計為中心,由淺入深地介紹了C語言和程序設(shè)計的基本概念和要點,把語言和算法緊密結(jié)合。依照適用加實用的原則,適當(dāng)調(diào)整了教材內(nèi)容,重點更加突出。調(diào)整后的主要內(nèi)容包括: C程序設(shè)計入門、順序結(jié)構(gòu)程序設(shè)計、選擇結(jié)構(gòu)程序設(shè)計、循環(huán)結(jié)構(gòu)程序設(shè)計、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體與共用體、動態(tài)數(shù)組與鏈表、文件、綜合應(yīng)用案例等。
本書體系合理,篇幅適中,重點突出,文字通俗易懂,內(nèi)容由淺入深,知識點言簡意賅,是初學(xué)者學(xué)習(xí)C語言程序設(shè)計的理想教材,可作為高等院校學(xué)生學(xué)習(xí)C語言程序設(shè)計課程的主教材,也適合計算機(jī)培訓(xùn)班或自學(xué)的讀者使用。
《C語言程序設(shè)計(第3版)》在前兩版成功的基礎(chǔ)上,保持原有的寫作風(fēng)格和特色,精心修訂以更加切合當(dāng)前人才培養(yǎng)的需要。
? 以VC 2010為編程環(huán)境,所有例題、習(xí)題都在VC 2010環(huán)境下調(diào)試通過。
? 概念清晰,通俗易懂,突出應(yīng)用,注重趣味性和實用性,更加易學(xué)易用。
? 以適用加實用為原則,教材內(nèi)容更加精簡,重點更加突出。
? 結(jié)合編者實踐經(jīng)驗,詳細(xì)介紹了VC 2010環(huán)境C程序的調(diào)試和運(yùn)行方法,強(qiáng)化編程實踐訓(xùn)練。
《高等學(xué)校計算機(jī)基礎(chǔ)教育規(guī)劃教材》
編委會顧問: 陳國良李廉
主任: 馮博琴
副主任: 周學(xué)海管會生盧先和
委員: (按姓氏音序為序)
邊小凡陳立潮陳煉陳曉蓉鄂大偉
高飛高光來龔沛曾韓國強(qiáng)郝興偉
何欽銘胡明黃維通黃衛(wèi)祖黃志球
賈小珠賈宗福李陶深寧正元裴喜春
欽明皖石冰石崗宋方敏蘇長齡
唐寧九王浩王賀明王世偉王移芝
吳良杰楊志強(qiáng)姚琳俞勇曾一
戰(zhàn)德臣張昌林張長海張莉張銘
鄭世鈺朱敏朱鳴華鄒北驥秘書: 袁勤勇前 言
C語言是當(dāng)今世界上廣泛流行的一門程序設(shè)計語言,深受廣大程序員和編程愛好者的喜愛。C語言不僅適用于開發(fā)系統(tǒng)軟件,而且也是用于開發(fā)應(yīng)用軟件和進(jìn)行大規(guī)?茖W(xué)計算的常用編程語言。
由于C語言的基本概念復(fù)雜,內(nèi)容豐富,使用靈活,一些初學(xué)者會發(fā)現(xiàn),學(xué)習(xí)C語言的過程是一個充滿挫折的艱難過程。一方面覺得學(xué)習(xí)C語言內(nèi)容枯燥,難度大;另一方面即便學(xué)完了C程序設(shè)計課程,但一旦要用C語言來獨立編寫一些解決實際問題的程序時會感到無從下手。為此,作者通過認(rèn)真分析和研究,并結(jié)合長期從事C程序設(shè)計課程教學(xué)的實踐經(jīng)驗,于2008年編寫了《C語言程序設(shè)計》一書,由清華大學(xué)出版社出版,至今共出版了兩個版次。
《C語言程序設(shè)計》一書在使用中得到了廣大讀者的肯定,并提出了不少寶貴的意見,在此表示感謝。此次對本書做第二次修訂,主要基于以下原因:
(1) 現(xiàn)代計算機(jī)技術(shù)不斷發(fā)展,C語言及編程技術(shù)也在發(fā)展中,教材內(nèi)容要與時俱進(jìn),推陳出新。
(2) 作者在教學(xué)實踐和教學(xué)改革中積累了一些新的經(jīng)驗,對學(xué)生的學(xué)習(xí)心理有了更深刻的認(rèn)識和了解。
(3) 廣大讀者和同仁對本書提出了一些新的建議與期望。
為此,在繼續(xù)保持前兩版寫作風(fēng)格和特色的基礎(chǔ)上,對本書主要做了以下修訂:
(1) 以VC 2010為編程環(huán)境,所有例題、習(xí)題都在VC 2010環(huán)境下調(diào)試通過。
(2) 考慮到C語言的發(fā)展和系統(tǒng)兼容性問題,增加了部分C99標(biāo)準(zhǔn)的新規(guī)定,所有程序風(fēng)格均采用如下所示的C99標(biāo)準(zhǔn)形式: int main( )
{
return 0;
}(3) 去掉了預(yù)處理和位運(yùn)算兩章,把宏常量和基本位運(yùn)算符的內(nèi)容放在了第1章;考慮到內(nèi)容的關(guān)聯(lián)性,把關(guān)系運(yùn)算和邏輯運(yùn)算的內(nèi)容調(diào)整到第3章。
(4) 為了進(jìn)一步鞏固和綜合應(yīng)用各章知識,了解和掌握大型程序的設(shè)計方法,按照軟件工程的方法編寫了綜合應(yīng)用案例一章,并將項目管理和文件包含等內(nèi)容融入其中。(5) 重新組織課后習(xí)題,依照鞏固基礎(chǔ)、綜合應(yīng)用、拓展創(chuàng)新三個層次,呈階梯式遞進(jìn)形式。
(6) 結(jié)合作者實踐經(jīng)驗,在附錄中增加了VC 2010環(huán)境C程序的調(diào)試運(yùn)行方法,強(qiáng)化編程訓(xùn)練。
經(jīng)修訂后,本書內(nèi)容共分為以下11章:
第1章 C程序設(shè)計入門介紹C語言的特點、程序結(jié)構(gòu)、C語言的基本數(shù)據(jù)類型、基本運(yùn)算符和表達(dá)式、宏常量和常變量、基本位運(yùn)算。
第2章 順序結(jié)構(gòu)程序設(shè)計介紹程序設(shè)計的基本方法、C語句的分類、基本的輸入輸出處理以及順序結(jié)構(gòu)程序設(shè)計的基本方法。
第3章 選擇結(jié)構(gòu)程序設(shè)計介紹關(guān)系運(yùn)算和邏輯運(yùn)算、C語言中實現(xiàn)選擇結(jié)構(gòu)的語句以及選擇結(jié)構(gòu)程序設(shè)計的基本方法。
第4章 循環(huán)結(jié)構(gòu)程序設(shè)計介紹C語言中實現(xiàn)循環(huán)結(jié)構(gòu)的語句和循環(huán)結(jié)構(gòu)程序設(shè)計的基本方法,還介紹了應(yīng)用循環(huán)的一些常用算法,如級數(shù)求和問題、窮舉法、遞推法以及求素數(shù)方法等。
第5章 函數(shù)介紹函數(shù)的定義、調(diào)用以及函數(shù)參數(shù)的傳遞方式,函數(shù)的嵌套調(diào)用和遞歸調(diào)用方法,全局變量和局部變量,變量的存儲類別等。
第6章 數(shù)組介紹一維數(shù)組、二維數(shù)組以及字符數(shù)組的定義、引用和初始化方法,數(shù)組名作為函數(shù)參數(shù)的調(diào)用方式,以及應(yīng)用數(shù)組的一些算法,如排序、查找、求最大最小值、矩陣運(yùn)算等。
第7章 指針介紹指針的概念,指針變量的定義和引用,以及指向變量的指針、指向數(shù)組的指針、指向字符串的指針、指向函數(shù)的指針和多級指針等概念和應(yīng)用。
第8章 結(jié)構(gòu)體與共用體介紹結(jié)構(gòu)體類型、共用體類型和枚舉類型的定義,以及相關(guān)變量的定義、引用、初始化和應(yīng)用方法。
第9章 動態(tài)數(shù)組與鏈表介紹C語言中實現(xiàn)動態(tài)存儲分配的標(biāo)準(zhǔn)函數(shù),以及動態(tài)數(shù)組和鏈表的概念和應(yīng)用。
第10章 文件 介紹C語言中文件的基本概念,文件的打開和關(guān)閉方法以及文件的讀寫和定位方法。
第11章 綜合應(yīng)用案例介紹綜合應(yīng)用各章知識,按照軟件工程的方法開發(fā)一個股票交易系統(tǒng)程序設(shè)計和實現(xiàn)的全過程。
本書由向艷、周天彤擔(dān)任主編并由向艷統(tǒng)稿,第1、2、10章由潘亞平和程起才共同編著,第3、4、5、6、8、9、11章由向艷編著,第7章由周天彤編著,附錄由周天彤和程起才共同編著。希望通過此次修訂,使本書內(nèi)容更豐富,條理更清晰,實用性更強(qiáng),更有利于讀者學(xué)習(xí)。由于作者水平有限,書中不足在所難免,再次懇請讀者批評指正。
學(xué)習(xí)C語言程序設(shè)計是一個循序漸進(jìn)的過程。建議讀者在學(xué)習(xí)中依照一讀、二仿、三寫三個步驟,即先多讀一些好的程序;然后模仿實例編寫相似的程序,并能舉一反三;最后獨立編寫程序,提高編程能力。
編者2018年3月〖1〗〖3〗C語言程序設(shè)計(第3版)前言〖3〗〖3〗
目 錄
第1章C程序設(shè)計入門1
1.1概述1
1.1.1程序和程序設(shè)計語言1
1.1.2C語言的起源和發(fā)展2
1.1.3C語言的特點3
1.2簡單的C程序4
1.2.1簡單的C程序舉例4
1.2.2C程序的結(jié)構(gòu)8
1.2.3C程序的調(diào)試與運(yùn)行環(huán)境9
1.3基本數(shù)據(jù)類型11
1.3.1整型數(shù)據(jù)12
1.3.2實型數(shù)據(jù)16
1.3.3字符型數(shù)據(jù)18
1.4運(yùn)算符和表達(dá)式23
1.4.1運(yùn)算符優(yōu)先級及結(jié)合性23
1.4.2數(shù)據(jù)類型轉(zhuǎn)換24
1.4.3算術(shù)運(yùn)算符和算術(shù)表達(dá)式26
1.4.4賦值運(yùn)算符和賦值表達(dá)式27
1.4.5逗號運(yùn)算符和逗號表達(dá)式29
1.4.6 和--運(yùn)算符30
1.4.7sizeof運(yùn)算符31
1.5宏常量與常變量32
1.5.1宏常量32
1.5.2常變量33
1.6位運(yùn)算34
復(fù)習(xí)與思考38
習(xí)題138
第2章順序結(jié)構(gòu)程序設(shè)計41
2.1編程邏輯與技術(shù)41
2.1.1算法及算法的描述工具41
2.1.2程序設(shè)計的基本過程44
2.1.3結(jié)構(gòu)化程序設(shè)計方法45
2.2C語言的語句類型47
2.3數(shù)據(jù)的輸入與輸出48
2.3.1字符輸入與輸出函數(shù)49
2.3.2格式輸入與輸出函數(shù)50
2.4常用計算函數(shù)60
2.4.1數(shù)學(xué)庫函數(shù)60
2.4.2偽隨機(jī)函數(shù)61
2.5程序舉例62
復(fù)習(xí)與思考67
習(xí)題267
〖1〗〖3〗C語言程序設(shè)計(第3版)目錄〖3〗〖3〗第3章選擇結(jié)構(gòu)程序設(shè)計70
3.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式70
3.1.1關(guān)系運(yùn)算符70
3.1.2關(guān)系表達(dá)式71
3.2邏輯運(yùn)算符和邏輯表達(dá)式72
3.2.1邏輯運(yùn)算符72
3.2.2邏輯表達(dá)式72
3.3if語句74
3.3.1if語句的三種形式74
3.3.2if語句的嵌套78
3.4條件運(yùn)算符和條件表達(dá)式79
3.5switch語句81
3.6程序舉例84
復(fù)習(xí)與思考91
習(xí)題391
第4章循環(huán)結(jié)構(gòu)程序設(shè)計98
4.1當(dāng)型循環(huán)與直到型循環(huán)98
4.1.1當(dāng)型循環(huán)結(jié)構(gòu)98
4.1.2直到型循環(huán)結(jié)構(gòu)98
4.2循環(huán)語句99
4.2.1while語句99
4.2.2dowhile語句101
4.2.3for語句103
4.3循環(huán)的嵌套105
4.4break語句和continue語句108
4.4.1break語句108
4.4.2continue語句109
4.5程序舉例110
復(fù)習(xí)與思考122
習(xí)題4122
第5章函數(shù)130
5.1函數(shù)的定義與調(diào)用130
5.1.1函數(shù)的定義131
5.1.2函數(shù)的返回值132
5.1.3函數(shù)的調(diào)用134
5.2函數(shù)間的參數(shù)傳遞140
5.2.1實參與形參的傳遞方式140
5.2.2局部變量與全局變量142
5.2.3局部變量的存儲類別145
5.2.4全局變量的存儲類別147
5.3函數(shù)的嵌套調(diào)用148
5.4函數(shù)的遞歸調(diào)用150
復(fù)習(xí)與思考155
習(xí)題5156
第6章數(shù)組165
6.1一維數(shù)組165
6.1.1一維數(shù)組的定義與引用165
6.1.2一維數(shù)組的初始化168
6.1.3一維數(shù)組應(yīng)用舉例169
6.2二維數(shù)組174
6.2.1二維數(shù)組的定義與引用174
6.2.2二維數(shù)組的初始化176
6.2.3二維數(shù)組應(yīng)用舉例178
6.3字符數(shù)組182
6.3.1字符數(shù)組的定義與初始化182
6.3.2字符串與字符數(shù)組184
6.3.3字符數(shù)組的輸入與輸出185
6.3.4常用字符串處理函數(shù)188
6.3.5字符數(shù)組應(yīng)用舉例192
6.4數(shù)組作為函數(shù)參數(shù)195
6.4.1用一維數(shù)組名作為函數(shù)參數(shù)195
6.4.2用二維數(shù)組名作為函數(shù)參數(shù)201
復(fù)習(xí)與思考203
習(xí)題6203
第7章指針211
7.1指針的概念212
7.2指針的操作214
7.2.1取地址運(yùn)算符&與指針運(yùn)算符214
7.2.2使用指針實現(xiàn)地址傳遞216
7.2.3使用簡單指針的例子219
7.3數(shù)組和指針220
7.3.1指向數(shù)組元素的指針220
7.3.2指針與整數(shù)的加減法221
7.3.3指針的類型與指針間的減法222
7.3.4指向字符串的指針223
7.3.5使用指針處理一維數(shù)組的應(yīng)用舉例226
7.4指針數(shù)組與多級指針229
7.4.1指針數(shù)組229
7.4.2二級指針及多級指針231
7.4.3使用指針數(shù)組作為main函數(shù)的參數(shù)233
7.5數(shù)組的指針與函數(shù)的指針235
7.5.1指向數(shù)組的指針235
7.5.2行指針與列指針236
7.5.3函數(shù)指針與指針函數(shù)237
復(fù)習(xí)與思考240
習(xí)題7241
第8章結(jié)構(gòu)體與共用體249
8.1結(jié)構(gòu)體類型與結(jié)構(gòu)體變量249
8.1.1結(jié)構(gòu)體類型的聲明249
8.1.2結(jié)構(gòu)體類型變量的定義250
8.1.3結(jié)構(gòu)體類型變量的引用252
8.1.4結(jié)構(gòu)體類型變量的初始化254
8.2結(jié)構(gòu)體數(shù)組255
8.2.1結(jié)構(gòu)體數(shù)組的定義與引用255
8.2.2結(jié)構(gòu)體數(shù)組應(yīng)用舉例256
8.3結(jié)構(gòu)體指針259
8.3.1指向結(jié)構(gòu)體變量的指針259
8.3.2指向結(jié)構(gòu)體數(shù)組的指針260
8.3.3將結(jié)構(gòu)體指針作為函數(shù)參數(shù)262
8.4共用體266
8.5枚舉類型269
8.6用typedef自定義類型名272
復(fù)習(xí)與思考274
習(xí)題8274
第9章動態(tài)數(shù)組與鏈表282
9.1內(nèi)存動態(tài)分配與動態(tài)數(shù)組282
9.1.1常用的內(nèi)存動態(tài)分配函數(shù)282
9.1.2動態(tài)數(shù)組284
9.2鏈表286
9.2.1鏈表的基本概念286
9.2.2創(chuàng)建動態(tài)鏈表286
9.2.3輸出動態(tài)鏈表289
9.2.4動態(tài)鏈表的刪除操作290
9.2.5動態(tài)鏈表的插入操作291
9.2.6動態(tài)鏈表的應(yīng)用舉例292
復(fù)習(xí)與思考296
習(xí)題9296
第10章文件300
10.1文件的基本概念300
10.1.1字節(jié)流300
10.1.2緩沖文件系統(tǒng)300
10.1.3文件類型指針301
10.1.4文件位置指針及文件打開方式301
10.2文件的打開與關(guān)閉302
10.2.1文件的打開302
10.2.2文件的關(guān)閉303
10.3文件的讀寫304
10.3.1字符讀寫函數(shù)304
10.3.2格式讀寫函數(shù)307
10.3.3數(shù)據(jù)塊讀寫函數(shù)310
10.3.4其他讀寫函數(shù)312
10.4文件的定位313
復(fù)習(xí)與思考314
習(xí)題10315
第11章綜合應(yīng)用案例股票交易系統(tǒng)322
11.1功能模塊設(shè)計322
11.2數(shù)據(jù)結(jié)構(gòu)設(shè)計323
11.3函數(shù)功能描述324
11.4編制程序331
11.5運(yùn)行程序342
11.5.1VC 2010下的多文件管理342
11.5.2文件包含343
11.5.3調(diào)試運(yùn)行344
附錄A基本ASCII碼表346
附錄B運(yùn)算符和結(jié)合性348
附錄CC語言關(guān)鍵字350
附錄DVC 2010環(huán)境下的常用庫函數(shù)352
附錄E基于VC 2010環(huán)境下的C語言程序運(yùn)行步驟與方法361
附錄FVC英文版中通用錯誤代碼分析378
參考文獻(xiàn)381