為了切合當(dāng)前C語(yǔ)言的發(fā)展和教學(xué)的需要,對(duì)《C語(yǔ)言程序設(shè)計(jì)(第2版)》進(jìn)行修訂而形成了本書。本書以程序設(shè)計(jì)為中心,由淺入深地介紹了C語(yǔ)言和程序設(shè)計(jì)的基本概念和要點(diǎn),把語(yǔ)言和算法緊密結(jié)合。依照適用加實(shí)用的原則,適當(dāng)調(diào)整了教材內(nèi)容,重點(diǎn)更加突出。調(diào)整后的主要內(nèi)容包括: C程序設(shè)計(jì)入門、順序結(jié)構(gòu)程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體與共用體、動(dòng)態(tài)數(shù)組與鏈表、文件、綜合應(yīng)用案例等。
本書體系合理,篇幅適中,重點(diǎn)突出,文字通俗易懂,內(nèi)容由淺入深,知識(shí)點(diǎn)言簡(jiǎn)意賅,是初學(xué)者學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的理想教材,可作為高等院校學(xué)生學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)課程的主教材,也適合計(jì)算機(jī)培訓(xùn)班或自學(xué)的讀者使用。
《C語(yǔ)言程序設(shè)計(jì)(第3版)》在前兩版成功的基礎(chǔ)上,保持原有的寫作風(fēng)格和特色,精心修訂以更加切合當(dāng)前人才培養(yǎng)的需要。
? 以VC 2010為編程環(huán)境,所有例題、習(xí)題都在VC 2010環(huán)境下調(diào)試通過(guò)。
? 概念清晰,通俗易懂,突出應(yīng)用,注重趣味性和實(shí)用性,更加易學(xué)易用。
? 以適用加實(shí)用為原則,教材內(nèi)容更加精簡(jiǎn),重點(diǎn)更加突出。
? 結(jié)合編者實(shí)踐經(jīng)驗(yàn),詳細(xì)介紹了VC 2010環(huán)境C程序的調(diào)試和運(yùn)行方法,強(qiáng)化編程實(shí)踐訓(xùn)練。
《高等學(xué)校計(jì)算機(jī)基礎(chǔ)教育規(guī)劃教材》
編委會(huì)顧問(wèn): 陳國(guó)良李廉
主任: 馮博琴
副主任: 周學(xué)海管會(huì)生盧先和
委員: (按姓氏音序?yàn)樾颍?br />邊小凡陳立潮陳煉陳曉蓉鄂大偉
高飛高光來(lái)龔沛曾韓國(guó)強(qiáng)郝興偉
何欽銘胡明黃維通黃衛(wèi)祖黃志球
賈小珠賈宗福李陶深寧正元裴喜春
欽明皖石冰石崗宋方敏蘇長(zhǎng)齡
唐寧九王浩王賀明王世偉王移芝
吳良杰楊志強(qiáng)姚琳俞勇曾一
戰(zhàn)德臣張昌林張長(zhǎng)海張莉張銘
鄭世鈺朱敏朱鳴華鄒北驥秘書: 袁勤勇前 言
C語(yǔ)言是當(dāng)今世界上廣泛流行的一門程序設(shè)計(jì)語(yǔ)言,深受廣大程序員和編程愛(ài)好者的喜愛(ài)。C語(yǔ)言不僅適用于開(kāi)發(fā)系統(tǒng)軟件,而且也是用于開(kāi)發(fā)應(yīng)用軟件和進(jìn)行大規(guī)?茖W(xué)計(jì)算的常用編程語(yǔ)言。
由于C語(yǔ)言的基本概念復(fù)雜,內(nèi)容豐富,使用靈活,一些初學(xué)者會(huì)發(fā)現(xiàn),學(xué)習(xí)C語(yǔ)言的過(guò)程是一個(gè)充滿挫折的艱難過(guò)程。一方面覺(jué)得學(xué)習(xí)C語(yǔ)言內(nèi)容枯燥,難度大;另一方面即便學(xué)完了C程序設(shè)計(jì)課程,但一旦要用C語(yǔ)言來(lái)獨(dú)立編寫一些解決實(shí)際問(wèn)題的程序時(shí)會(huì)感到無(wú)從下手。為此,作者通過(guò)認(rèn)真分析和研究,并結(jié)合長(zhǎng)期從事C程序設(shè)計(jì)課程教學(xué)的實(shí)踐經(jīng)驗(yàn),于2008年編寫了《C語(yǔ)言程序設(shè)計(jì)》一書,由清華大學(xué)出版社出版,至今共出版了兩個(gè)版次。
《C語(yǔ)言程序設(shè)計(jì)》一書在使用中得到了廣大讀者的肯定,并提出了不少寶貴的意見(jiàn),在此表示感謝。此次對(duì)本書做第二次修訂,主要基于以下原因:
(1) 現(xiàn)代計(jì)算機(jī)技術(shù)不斷發(fā)展,C語(yǔ)言及編程技術(shù)也在發(fā)展中,教材內(nèi)容要與時(shí)俱進(jìn),推陳出新。
(2) 作者在教學(xué)實(shí)踐和教學(xué)改革中積累了一些新的經(jīng)驗(yàn),對(duì)學(xué)生的學(xué)習(xí)心理有了更深刻的認(rèn)識(shí)和了解。
(3) 廣大讀者和同仁對(duì)本書提出了一些新的建議與期望。
為此,在繼續(xù)保持前兩版寫作風(fēng)格和特色的基礎(chǔ)上,對(duì)本書主要做了以下修訂:
(1) 以VC 2010為編程環(huán)境,所有例題、習(xí)題都在VC 2010環(huán)境下調(diào)試通過(guò)。
(2) 考慮到C語(yǔ)言的發(fā)展和系統(tǒng)兼容性問(wèn)題,增加了部分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í),了解和掌握大型程序的設(shè)計(jì)方法,按照軟件工程的方法編寫了綜合應(yīng)用案例一章,并將項(xiàng)目管理和文件包含等內(nèi)容融入其中。(5) 重新組織課后習(xí)題,依照鞏固基礎(chǔ)、綜合應(yīng)用、拓展創(chuàng)新三個(gè)層次,呈階梯式遞進(jìn)形式。
(6) 結(jié)合作者實(shí)踐經(jīng)驗(yàn),在附錄中增加了VC 2010環(huán)境C程序的調(diào)試運(yùn)行方法,強(qiáng)化編程訓(xùn)練。
經(jīng)修訂后,本書內(nèi)容共分為以下11章:
第1章 C程序設(shè)計(jì)入門介紹C語(yǔ)言的特點(diǎn)、程序結(jié)構(gòu)、C語(yǔ)言的基本數(shù)據(jù)類型、基本運(yùn)算符和表達(dá)式、宏常量和常變量、基本位運(yùn)算。
第2章 順序結(jié)構(gòu)程序設(shè)計(jì)介紹程序設(shè)計(jì)的基本方法、C語(yǔ)句的分類、基本的輸入輸出處理以及順序結(jié)構(gòu)程序設(shè)計(jì)的基本方法。
第3章 選擇結(jié)構(gòu)程序設(shè)計(jì)介紹關(guān)系運(yùn)算和邏輯運(yùn)算、C語(yǔ)言中實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句以及選擇結(jié)構(gòu)程序設(shè)計(jì)的基本方法。
第4章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)介紹C語(yǔ)言中實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的基本方法,還介紹了應(yīng)用循環(huán)的一些常用算法,如級(jí)數(shù)求和問(wèn)題、窮舉法、遞推法以及求素?cái)?shù)方法等。
第5章 函數(shù)介紹函數(shù)的定義、調(diào)用以及函數(shù)參數(shù)的傳遞方式,函數(shù)的嵌套調(diào)用和遞歸調(diào)用方法,全局變量和局部變量,變量的存儲(chǔ)類別等。
第6章 數(shù)組介紹一維數(shù)組、二維數(shù)組以及字符數(shù)組的定義、引用和初始化方法,數(shù)組名作為函數(shù)參數(shù)的調(diào)用方式,以及應(yīng)用數(shù)組的一些算法,如排序、查找、求最大最小值、矩陣運(yùn)算等。
第7章 指針介紹指針的概念,指針變量的定義和引用,以及指向變量的指針、指向數(shù)組的指針、指向字符串的指針、指向函數(shù)的指針和多級(jí)指針等概念和應(yīng)用。
第8章 結(jié)構(gòu)體與共用體介紹結(jié)構(gòu)體類型、共用體類型和枚舉類型的定義,以及相關(guān)變量的定義、引用、初始化和應(yīng)用方法。
第9章 動(dòng)態(tài)數(shù)組與鏈表介紹C語(yǔ)言中實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)分配的標(biāo)準(zhǔn)函數(shù),以及動(dòng)態(tài)數(shù)組和鏈表的概念和應(yīng)用。
第10章 文件 介紹C語(yǔ)言中文件的基本概念,文件的打開(kāi)和關(guān)閉方法以及文件的讀寫和定位方法。
第11章 綜合應(yīng)用案例介紹綜合應(yīng)用各章知識(shí),按照軟件工程的方法開(kāi)發(fā)一個(gè)股票交易系統(tǒng)程序設(shè)計(jì)和實(shí)現(xiàn)的全過(guò)程。
本書由向艷、周天彤擔(dān)任主編并由向艷統(tǒng)稿,第1、2、10章由潘亞平和程起才共同編著,第3、4、5、6、8、9、11章由向艷編著,第7章由周天彤編著,附錄由周天彤和程起才共同編著。希望通過(guò)此次修訂,使本書內(nèi)容更豐富,條理更清晰,實(shí)用性更強(qiáng),更有利于讀者學(xué)習(xí)。由于作者水平有限,書中不足在所難免,再次懇請(qǐng)讀者批評(píng)指正。
學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)是一個(gè)循序漸進(jìn)的過(guò)程。建議讀者在學(xué)習(xí)中依照一讀、二仿、三寫三個(gè)步驟,即先多讀一些好的程序;然后模仿實(shí)例編寫相似的程序,并能舉一反三;最后獨(dú)立編寫程序,提高編程能力。
編者2018年3月〖1〗〖3〗C語(yǔ)言程序設(shè)計(jì)(第3版)前言〖3〗〖3〗
目 錄
第1章C程序設(shè)計(jì)入門1
1.1概述1
1.1.1程序和程序設(shè)計(jì)語(yǔ)言1
1.1.2C語(yǔ)言的起源和發(fā)展2
1.1.3C語(yǔ)言的特點(diǎn)3
1.2簡(jiǎn)單的C程序4
1.2.1簡(jiǎn)單的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í)型數(shù)據(jù)16
1.3.3字符型數(shù)據(jù)18
1.4運(yùn)算符和表達(dá)式23
1.4.1運(yùn)算符優(yōu)先級(jí)及結(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逗號(hào)運(yùn)算符和逗號(hào)表達(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è)計(jì)41
2.1編程邏輯與技術(shù)41
2.1.1算法及算法的描述工具41
2.1.2程序設(shè)計(jì)的基本過(guò)程44
2.1.3結(jié)構(gòu)化程序設(shè)計(jì)方法45
2.2C語(yǔ)言的語(yǔ)句類型47
2.3數(shù)據(jù)的輸入與輸出48
2.3.1字符輸入與輸出函數(shù)49
2.3.2格式輸入與輸出函數(shù)50
2.4常用計(jì)算函數(shù)60
2.4.1數(shù)學(xué)庫(kù)函數(shù)60
2.4.2偽隨機(jī)函數(shù)61
2.5程序舉例62
復(fù)習(xí)與思考67
習(xí)題267
〖1〗〖3〗C語(yǔ)言程序設(shè)計(jì)(第3版)目錄〖3〗〖3〗第3章選擇結(jié)構(gòu)程序設(shè)計(jì)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語(yǔ)句74
3.3.1if語(yǔ)句的三種形式74
3.3.2if語(yǔ)句的嵌套78
3.4條件運(yùn)算符和條件表達(dá)式79
3.5switch語(yǔ)句81
3.6程序舉例84
復(fù)習(xí)與思考91
習(xí)題391
第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)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)語(yǔ)句99
4.2.1while語(yǔ)句99
4.2.2dowhile語(yǔ)句101
4.2.3for語(yǔ)句103
4.3循環(huán)的嵌套105
4.4break語(yǔ)句和continue語(yǔ)句108
4.4.1break語(yǔ)句108
4.4.2continue語(yǔ)句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實(shí)參與形參的傳遞方式140
5.2.2局部變量與全局變量142
5.2.3局部變量的存儲(chǔ)類別145
5.2.4全局變量的存儲(chǔ)類別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使用指針實(shí)現(xiàn)地址傳遞216
7.2.3使用簡(jiǎn)單指針的例子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ù)組與多級(jí)指針229
7.4.1指針數(shù)組229
7.4.2二級(jí)指針及多級(jí)指針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章動(dòng)態(tài)數(shù)組與鏈表282
9.1內(nèi)存動(dòng)態(tài)分配與動(dòng)態(tài)數(shù)組282
9.1.1常用的內(nèi)存動(dòng)態(tài)分配函數(shù)282
9.1.2動(dòng)態(tài)數(shù)組284
9.2鏈表286
9.2.1鏈表的基本概念286
9.2.2創(chuàng)建動(dòng)態(tài)鏈表286
9.2.3輸出動(dòng)態(tài)鏈表289
9.2.4動(dòng)態(tài)鏈表的刪除操作290
9.2.5動(dòng)態(tài)鏈表的插入操作291
9.2.6動(dòng)態(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文件位置指針及文件打開(kāi)方式301
10.2文件的打開(kāi)與關(guān)閉302
10.2.1文件的打開(kāi)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è)計(jì)322
11.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)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語(yǔ)言關(guān)鍵字350
附錄DVC 2010環(huán)境下的常用庫(kù)函數(shù)352
附錄E基于VC 2010環(huán)境下的C語(yǔ)言程序運(yùn)行步驟與方法361
附錄FVC英文版中通用錯(cuò)誤代碼分析378
參考文獻(xiàn)381