本書以程序設(shè)計為主線,以編程需要帶動知識的學(xué)習(xí)。全書共9章,系統(tǒng)介紹了C語言的相關(guān)知識及其程序設(shè)計技術(shù),包括簡單的C程序設(shè)計、基本數(shù)據(jù)類型、數(shù)據(jù)運算、結(jié)構(gòu)化程序設(shè)計、數(shù)組和字符串、指針、函數(shù)、復(fù)合數(shù)據(jù)類型、文件與預(yù)處理;通過豐富的C程序設(shè)計實例,詳盡介紹了相應(yīng)的知識和算法;各章編排了一定量的練習(xí)題,以幫助讀者在初步掌握語言的基礎(chǔ)上,著重培養(yǎng)程序設(shè)計的能力。 本書內(nèi)容充實、體系合理、概念清晰、講解詳盡、例題豐富,是學(xué)習(xí)C程序設(shè)計的理想教材,可作為高等學(xué)校本科以上教學(xué)用書。為了方便學(xué)習(xí),建議與本書配套的《大學(xué)C語言實用教程實驗指導(dǎo)與習(xí)題》(第2版)(ISBN 978-7-302-58564-0 )一起使用。
程序設(shè)計發(fā)展到今天,已經(jīng)由技藝推進(jìn)到科學(xué),有了自己的一套基本原理和方法。進(jìn)行程序設(shè)計,需要很強的邏輯思維能力,是一種極富創(chuàng)造性的智力勞動。對初學(xué)者而言,使他們望而生畏的,往往也正是這一點。可以這樣認(rèn)為,語言是一種技能,程序設(shè)計是一門科學(xué)。因此,任何計算機語言及其程序設(shè)計的基本特點就是理論性和實踐性并重,教學(xué)上應(yīng)強調(diào)科學(xué)訓(xùn)練與技能培養(yǎng)并存。基于這一認(rèn)識,本書以應(yīng)用為目的,以提高程序設(shè)計能力為目標(biāo),以程序設(shè)計方法學(xué)為依據(jù),系統(tǒng)介紹了C語言及其程序設(shè)計技術(shù),把程序設(shè)計作為科學(xué)來講授,把語言作為技能來培養(yǎng),讓讀者在大量的程序設(shè)計實踐中自然而然地熟悉和掌握。
C語言是廣泛應(yīng)用的計算機語言,學(xué)會使用C語言進(jìn)行程序設(shè)計是計算機工作者的一項基本功。當(dāng)今流行的面向?qū)ο笳Z言C 、Visual C 、C#以及Java語言就源于C語言。
在計算機日益普及、計算機技術(shù)日新月異、新型計算機軟件層出不窮的今天,程序設(shè)計仍然是每一位當(dāng)代大學(xué)生的基本功,是計算機素質(zhì)教育的重要環(huán)節(jié)之一。尤其是那些希望用計算機解決本專業(yè)領(lǐng)域?qū)嶋H問題的有識之士,更需要加強程序設(shè)計的學(xué)習(xí)與訓(xùn)練。
學(xué)習(xí)計算機語言的目的是應(yīng)用,而應(yīng)用要通過程序設(shè)計來體現(xiàn)。程序設(shè)計發(fā)展到今天,已經(jīng)由技藝推進(jìn)到科學(xué),有了自己的一套基本原理和方法。進(jìn)行程序設(shè)計,需要很強的邏輯思維能力,是一種極富創(chuàng)造性的智力勞動。對初學(xué)者而言,使他們望而生畏的,往往正是這一點?梢赃@樣認(rèn)為,語言是一種技能,程序設(shè)計是一門科學(xué)。因此,任何計算機語言及其程序設(shè)計的基本特點就是理論性和實踐性并重,教學(xué)上應(yīng)強調(diào)科學(xué)訓(xùn)練與技能培養(yǎng)并存;谶@一認(rèn)識,本書以應(yīng)用為目的,以提高程序設(shè)計能力為目標(biāo),以程序設(shè)計方法學(xué)為依據(jù),系統(tǒng)介紹了C語言及其程序設(shè)計技術(shù),把程序設(shè)計作為科學(xué)來講授,把語言作為技能來培養(yǎng),讓讀者在大量的程序設(shè)計實踐中自然而然地熟悉和掌握。
根據(jù)C語言自身的特點,本書從內(nèi)容上做了如下安排: 第1章是簡單的C程序設(shè)計,盡管簡單,但它是學(xué)習(xí)C語言的綱;第2、5、8章從易到難介紹了C語言的各種數(shù)據(jù)結(jié)構(gòu)(基本數(shù)據(jù)類型、數(shù)組和字符串、復(fù)合數(shù)據(jù)類型);第3章專門介紹C語言的數(shù)據(jù)運算;第4章集中介紹C語言的控制結(jié)構(gòu)和程序設(shè)計的基本思維方法,體現(xiàn)結(jié)構(gòu)化程序設(shè)計的特點;第6章介紹指針,這是C語言的精髓和特色,也是學(xué)習(xí)的難點;第7、9章介紹函數(shù)和文件,這是模塊化程序設(shè)計的需要;第10章介紹C語言環(huán)境中特殊而較為深入的問題(如編譯預(yù)處理、分割編譯等),這些問題基本不影響本書對初學(xué)者的要求,但對較高層次的讀者來說又是必要的資料,可以作為自學(xué)之用;附錄部分給出了Visual C 6.0 操作指導(dǎo)、C語言運算符集、ASCII代碼表、常用庫函數(shù)、習(xí)題解答以及綜合應(yīng)用示例,便于讀者查閱。書中所有例題源程序均通過Visual C 6.0編譯系統(tǒng)調(diào)試,為方便讀者上機實踐以及課后練習(xí)與檢測,本書配有輔助教材《大學(xué)C語言實用教程實驗指導(dǎo)與習(xí)題(第2版)》。
潘旭華教授制定了本書的寫作大綱,王桂榮編寫第1~3章和附錄A~D及附錄E的部分內(nèi)容;潘旭華編寫第4~7章、附錄E部分內(nèi)容;姜書浩編寫第8章及附錄E部分內(nèi)容;趙玉剛編寫第9章、第10章及附錄E部分內(nèi)容。全書由潘旭華教授擔(dān)任主編并統(tǒng)稿,高福成教授精心審閱了全部書稿。本書在編寫和出版過程中,得到作者所在學(xué)校的大力支持,清華大學(xué)出版社的編校人員為此書的出版付出了大量辛勤的勞動,在此一并表示感謝。
本書配套的電子教學(xué)資源(教學(xué)大綱、實驗大綱、授課計劃、電子教案、電子圖書等),讀者可在清華大學(xué)出版社網(wǎng)站(http://www.tup.com.cn)本書相應(yīng)的頁面中下載。
由于作者學(xué)識水平所限,書中難免存在疏漏和錯誤,懇請讀者不吝指正。
編者2021年8月
潘旭華 天津市教學(xué)名師,天津市五一勞動獎?wù)芦@得者。主要從事電子商務(wù)、智能計算與數(shù)量經(jīng)濟學(xué)研究。是電子商務(wù)一流本科專業(yè)建設(shè)點負(fù)責(zé)人、市級電子商務(wù)專業(yè)教學(xué)團(tuán)隊負(fù)責(zé)人、市級信息技術(shù)實驗教學(xué)示范中心負(fù)責(zé)人;主持項目獲得高等教育天津市級教學(xué)成果二等獎、全國商業(yè)科技進(jìn)步一等獎和二等獎等;主持或參與多項和省部級教學(xué)和科研項目;出版普通高等教育十一五規(guī)劃教材《大學(xué)C語言實用教程》等十余部。
第1章簡單的C程序設(shè)計1
1.1C語言的產(chǎn)生和發(fā)展1
1.2開發(fā)環(huán)境2
1.3編譯環(huán)境3
1.4結(jié)構(gòu)特點和書寫風(fēng)格6
1.4.1一個簡單的C程序6
1.4.2C程序的結(jié)構(gòu)特點7
1.4.3C程序書寫風(fēng)格8
1.5輸入與輸出8
1.5.1賦值語句8
1.5.2格式輸入輸出函數(shù)9
1.5.3庫函數(shù)和標(biāo)題文件10
1.6運行程序10
習(xí)題112
第2章基本數(shù)據(jù)類型、常量和變量14
2.1基本數(shù)據(jù)類型及關(guān)鍵字14
2.2常量16
2.3變量18
2.4符號常數(shù)19
2.5輸入和輸出22
2.5.1格式化輸出函數(shù)22
2.5.2格式化輸入函數(shù)26
2.5.3單字符輸出函數(shù)29
2.5.4單字符輸入函數(shù)30
習(xí)題231
第3章數(shù)據(jù)運算35
3.1算術(shù)運算35
3.1.1算術(shù)運算符35
3.1.2算術(shù)表達(dá)式36
3.2賦值運算40
3.3逗號運算(順序運算)42
3.4關(guān)系運算和邏輯運算44
3.5位運算48
3.6常用數(shù)學(xué)函數(shù)52
習(xí)題354
第4章結(jié)構(gòu)化程序設(shè)計57
4.1基本結(jié)構(gòu)57
4.2選擇結(jié)構(gòu)58
4.2.1if…else語句與二分支結(jié)構(gòu)58
4.2.2if…else語句與多分支結(jié)構(gòu)63
4.2.3條件表達(dá)式65
4.2.4switch語句67
4.2.5switch與break語句69
4.3循環(huán)結(jié)構(gòu)70
4.3.1for循環(huán)70
4.3.2while循環(huán)74
4.3.3do…while循環(huán)76
4.3.4循環(huán)的嵌套78
4.4轉(zhuǎn)移控制語句80
4.4.1break語句81
4.4.2continue語句82
4.4.3goto語句和標(biāo)號83
習(xí)題484
第5章數(shù)組和字符串90
5.1數(shù)組的概念90
5.2數(shù)組的定義和初始化91
5.2.1數(shù)組的定義91
5.2.2數(shù)組的存儲92
5.2.3數(shù)組的初始化93
5.2.4初始化定義數(shù)組95
5.3數(shù)組的基本操作96
5.4數(shù)組的應(yīng)用101
5.4.1數(shù)值數(shù)組的應(yīng)用101
5.4.2字符串處理函數(shù)109
習(xí)題5117
第6章指針120
6.1地址、指針和指針變量120
6.1.1地址和地址的運算120
6.1.2指針和指針變量123
6.2指針的運算126
6.3指針與一維數(shù)組128
6.4指針與二維數(shù)組130
6.5指針與字符串136
6.6二級指針和多級指針140
習(xí)題6142
第7章函數(shù)147
7.1模塊化程序設(shè)計147
7.2C函數(shù)的定義和調(diào)用149
7.3數(shù)據(jù)傳遞153
7.3.1參數(shù)傳遞方式153
7.3.2函數(shù)返回值方式163
7.3.3全局變量方式165
7.3.4函數(shù)指針166
7.4存儲類型與函數(shù)調(diào)用169
7.4.1變量的存儲類型169
7.4.2函數(shù)的存儲類型與函數(shù)調(diào)用174
7.5函數(shù)的遞歸調(diào)用175
7.6main()函數(shù)的參數(shù)與返回值178
習(xí)題7181
第8章復(fù)合數(shù)據(jù)類型188
8.1結(jié)構(gòu)類型188
8.1.1結(jié)構(gòu)類型的定義188
8.1.2結(jié)構(gòu)類型的初始化190
8.1.3訪問結(jié)構(gòu)變量和結(jié)構(gòu)數(shù)組192
8.1.4結(jié)構(gòu)類型的賦值與輸入輸出194
8.2結(jié)構(gòu)數(shù)據(jù)在函數(shù)間的傳遞196
8.3遞歸結(jié)構(gòu)與鏈表203
8.3.1遞歸結(jié)構(gòu)與鏈表的概念203
8.3.2內(nèi)存的動態(tài)分配204
8.3.3動態(tài)鏈表的基本操作206
8.4枚舉類型213
8.5類型定義215
習(xí)題8217
第9章文件與預(yù)處理223
9.1文件概述223
9.2文件的打開與關(guān)閉225
9.3文件的讀寫操作227
9.3.1文本文件讀寫227
9.3.2二進(jìn)制文件讀寫233
9.4文件檢測函數(shù)235
9.5順序存取與隨機存取文件237
9.6編譯預(yù)處理247
9.6.1宏定義247
9.6.2文件包含251
9.6.3條件編譯253
習(xí)題9256 附錄AC語言運算符集263
附錄BASCII代碼表264 附錄CC常用庫函數(shù)及其標(biāo)題文件265 附錄D習(xí)題參考答案270 附錄EC程序應(yīng)用開發(fā)案例276