為了切合當前C語言的發(fā)展和教學的需要,對《C語言程序設計(第2版)》進行修訂而形成了本書。本書以程序設計為中心,由淺入深地介紹了C語言和程序設計的基本概念和要點,把語言和算法緊密結(jié)合。依照適用加實用的原則,適當調(diào)整了教材內(nèi)容,重點更加突出。調(diào)整后的主要內(nèi)容包括: C程序設計入門、順序結(jié)構(gòu)程序設計、選擇結(jié)構(gòu)程序設計、循環(huán)結(jié)構(gòu)程序設計、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體與共用體、動態(tài)數(shù)組與鏈表、文件、綜合應用案例等。
本書體系合理,篇幅適中,重點突出,文字通俗易懂,內(nèi)容由淺入深,知識點言簡意賅,是初學者學習C語言程序設計的理想教材,可作為高等院校學生學習C語言程序設計課程的主教材,也適合計算機培訓班或自學的讀者使用。
《C語言程序設計(第3版)》在前兩版成功的基礎(chǔ)上,保持原有的寫作風格和特色,精心修訂以更加切合當前人才培養(yǎng)的需要。
? 以VC 2010為編程環(huán)境,所有例題、習題都在VC 2010環(huán)境下調(diào)試通過。
? 概念清晰,通俗易懂,突出應用,注重趣味性和實用性,更加易學易用。
? 以適用加實用為原則,教材內(nèi)容更加精簡,重點更加突出。
? 結(jié)合編者實踐經(jīng)驗,詳細介紹了VC 2010環(huán)境C程序的調(diào)試和運行方法,強化編程實踐訓練。
《高等學校計算機基礎(chǔ)教育規(guī)劃教材》
編委會顧問: 陳國良李廉
主任: 馮博琴
副主任: 周學海管會生盧先和
委員: (按姓氏音序為序)
邊小凡陳立潮陳煉陳曉蓉鄂大偉
高飛高光來龔沛曾韓國強郝興偉
何欽銘胡明黃維通黃衛(wèi)祖黃志球
賈小珠賈宗福李陶深寧正元裴喜春
欽明皖石冰石崗宋方敏蘇長齡
唐寧九王浩王賀明王世偉王移芝
吳良杰楊志強姚琳俞勇曾一
戰(zhàn)德臣張昌林張長海張莉張銘
鄭世鈺朱敏朱鳴華鄒北驥秘書: 袁勤勇前 言
C語言是當今世界上廣泛流行的一門程序設計語言,深受廣大程序員和編程愛好者的喜愛。C語言不僅適用于開發(fā)系統(tǒng)軟件,而且也是用于開發(fā)應用軟件和進行大規(guī)?茖W計算的常用編程語言。
由于C語言的基本概念復雜,內(nèi)容豐富,使用靈活,一些初學者會發(fā)現(xiàn),學習C語言的過程是一個充滿挫折的艱難過程。一方面覺得學習C語言內(nèi)容枯燥,難度大;另一方面即便學完了C程序設計課程,但一旦要用C語言來獨立編寫一些解決實際問題的程序時會感到無從下手。為此,作者通過認真分析和研究,并結(jié)合長期從事C程序設計課程教學的實踐經(jīng)驗,于2008年編寫了《C語言程序設計》一書,由清華大學出版社出版,至今共出版了兩個版次。
《C語言程序設計》一書在使用中得到了廣大讀者的肯定,并提出了不少寶貴的意見,在此表示感謝。此次對本書做第二次修訂,主要基于以下原因:
(1) 現(xiàn)代計算機技術(shù)不斷發(fā)展,C語言及編程技術(shù)也在發(fā)展中,教材內(nèi)容要與時俱進,推陳出新。
(2) 作者在教學實踐和教學改革中積累了一些新的經(jīng)驗,對學生的學習心理有了更深刻的認識和了解。
(3) 廣大讀者和同仁對本書提出了一些新的建議與期望。
為此,在繼續(xù)保持前兩版寫作風格和特色的基礎(chǔ)上,對本書主要做了以下修訂:
(1) 以VC 2010為編程環(huán)境,所有例題、習題都在VC 2010環(huán)境下調(diào)試通過。
(2) 考慮到C語言的發(fā)展和系統(tǒng)兼容性問題,增加了部分C99標準的新規(guī)定,所有程序風格均采用如下所示的C99標準形式: int main( )
{
return 0;
}(3) 去掉了預處理和位運算兩章,把宏常量和基本位運算符的內(nèi)容放在了第1章;考慮到內(nèi)容的關(guān)聯(lián)性,把關(guān)系運算和邏輯運算的內(nèi)容調(diào)整到第3章。
(4) 為了進一步鞏固和綜合應用各章知識,了解和掌握大型程序的設計方法,按照軟件工程的方法編寫了綜合應用案例一章,并將項目管理和文件包含等內(nèi)容融入其中。(5) 重新組織課后習題,依照鞏固基礎(chǔ)、綜合應用、拓展創(chuàng)新三個層次,呈階梯式遞進形式。
(6) 結(jié)合作者實踐經(jīng)驗,在附錄中增加了VC 2010環(huán)境C程序的調(diào)試運行方法,強化編程訓練。
經(jīng)修訂后,本書內(nèi)容共分為以下11章:
第1章 C程序設計入門介紹C語言的特點、程序結(jié)構(gòu)、C語言的基本數(shù)據(jù)類型、基本運算符和表達式、宏常量和常變量、基本位運算。
第2章 順序結(jié)構(gòu)程序設計介紹程序設計的基本方法、C語句的分類、基本的輸入輸出處理以及順序結(jié)構(gòu)程序設計的基本方法。
第3章 選擇結(jié)構(gòu)程序設計介紹關(guān)系運算和邏輯運算、C語言中實現(xiàn)選擇結(jié)構(gòu)的語句以及選擇結(jié)構(gòu)程序設計的基本方法。
第4章 循環(huán)結(jié)構(gòu)程序設計介紹C語言中實現(xiàn)循環(huán)結(jié)構(gòu)的語句和循環(huán)結(jié)構(gòu)程序設計的基本方法,還介紹了應用循環(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)用方式,以及應用數(shù)組的一些算法,如排序、查找、求最大最小值、矩陣運算等。
第7章 指針介紹指針的概念,指針變量的定義和引用,以及指向變量的指針、指向數(shù)組的指針、指向字符串的指針、指向函數(shù)的指針和多級指針等概念和應用。
第8章 結(jié)構(gòu)體與共用體介紹結(jié)構(gòu)體類型、共用體類型和枚舉類型的定義,以及相關(guān)變量的定義、引用、初始化和應用方法。
第9章 動態(tài)數(shù)組與鏈表介紹C語言中實現(xiàn)動態(tài)存儲分配的標準函數(shù),以及動態(tài)數(shù)組和鏈表的概念和應用。
第10章 文件 介紹C語言中文件的基本概念,文件的打開和關(guān)閉方法以及文件的讀寫和定位方法。
第11章 綜合應用案例介紹綜合應用各章知識,按照軟件工程的方法開發(fā)一個股票交易系統(tǒng)程序設計和實現(xiàn)的全過程。
本書由向艷、周天彤擔任主編并由向艷統(tǒng)稿,第1、2、10章由潘亞平和程起才共同編著,第3、4、5、6、8、9、11章由向艷編著,第7章由周天彤編著,附錄由周天彤和程起才共同編著。希望通過此次修訂,使本書內(nèi)容更豐富,條理更清晰,實用性更強,更有利于讀者學習。由于作者水平有限,書中不足在所難免,再次懇請讀者批評指正。
學習C語言程序設計是一個循序漸進的過程。建議讀者在學習中依照一讀、二仿、三寫三個步驟,即先多讀一些好的程序;然后模仿實例編寫相似的程序,并能舉一反三;最后獨立編寫程序,提高編程能力。
編者2018年3月〖1〗〖3〗C語言程序設計(第3版)前言〖3〗〖3〗
目 錄
第1章C程序設計入門1
1.1概述1
1.1.1程序和程序設計語言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)試與運行環(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運算符和表達式23
1.4.1運算符優(yōu)先級及結(jié)合性23
1.4.2數(shù)據(jù)類型轉(zhuǎn)換24
1.4.3算術(shù)運算符和算術(shù)表達式26
1.4.4賦值運算符和賦值表達式27
1.4.5逗號運算符和逗號表達式29
1.4.6 和--運算符30
1.4.7sizeof運算符31
1.5宏常量與常變量32
1.5.1宏常量32
1.5.2常變量33
1.6位運算34
復習與思考38
習題138
第2章順序結(jié)構(gòu)程序設計41
2.1編程邏輯與技術(shù)41
2.1.1算法及算法的描述工具41
2.1.2程序設計的基本過程44
2.1.3結(jié)構(gòu)化程序設計方法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ù)學庫函數(shù)60
2.4.2偽隨機函數(shù)61
2.5程序舉例62
復習與思考67
習題267
〖1〗〖3〗C語言程序設計(第3版)目錄〖3〗〖3〗第3章選擇結(jié)構(gòu)程序設計70
3.1關(guān)系運算符和關(guān)系表達式70
3.1.1關(guān)系運算符70
3.1.2關(guān)系表達式71
3.2邏輯運算符和邏輯表達式72
3.2.1邏輯運算符72
3.2.2邏輯表達式72
3.3if語句74
3.3.1if語句的三種形式74
3.3.2if語句的嵌套78
3.4條件運算符和條件表達式79
3.5switch語句81
3.6程序舉例84
復習與思考91
習題391
第4章循環(huán)結(jié)構(gòu)程序設計98
4.1當型循環(huán)與直到型循環(huán)98
4.1.1當型循環(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
復習與思考122
習題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
復習與思考155
習題5156
第6章數(shù)組165
6.1一維數(shù)組165
6.1.1一維數(shù)組的定義與引用165
6.1.2一維數(shù)組的初始化168
6.1.3一維數(shù)組應用舉例169
6.2二維數(shù)組174
6.2.1二維數(shù)組的定義與引用174
6.2.2二維數(shù)組的初始化176
6.2.3二維數(shù)組應用舉例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ù)組應用舉例192
6.4數(shù)組作為函數(shù)參數(shù)195
6.4.1用一維數(shù)組名作為函數(shù)參數(shù)195
6.4.2用二維數(shù)組名作為函數(shù)參數(shù)201
復習與思考203
習題6203
第7章指針211
7.1指針的概念212
7.2指針的操作214
7.2.1取地址運算符&與指針運算符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ù)組的應用舉例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
復習與思考240
習題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ù)組應用舉例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
復習與思考274
習題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)鏈表的應用舉例292
復習與思考296
習題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
復習與思考314
習題10315
第11章綜合應用案例股票交易系統(tǒng)322
11.1功能模塊設計322
11.2數(shù)據(jù)結(jié)構(gòu)設計323
11.3函數(shù)功能描述324
11.4編制程序331
11.5運行程序342
11.5.1VC 2010下的多文件管理342
11.5.2文件包含343
11.5.3調(diào)試運行344
附錄A基本ASCII碼表346
附錄B運算符和結(jié)合性348
附錄CC語言關(guān)鍵字350
附錄DVC 2010環(huán)境下的常用庫函數(shù)352
附錄E基于VC 2010環(huán)境下的C語言程序運行步驟與方法361
附錄FVC英文版中通用錯誤代碼分析378
參考文獻381