本書以程序設(shè)計為主線,以編程需要帶動知識的學習。全書共9章,系統(tǒng)介紹了C語言的相關(guān)知識及其程序設(shè)計技術(shù),包括簡單的C程序設(shè)計、基本數(shù)據(jù)類型、數(shù)據(jù)運算、結(jié)構(gòu)化程序設(shè)計、數(shù)組和字符串、指針、函數(shù)、復合數(shù)據(jù)類型、文件與預處理;通過豐富的C程序設(shè)計實例,詳盡介紹了相應的知識和算法;各章編排了一定量的練習題,以幫助讀者在初步掌握語言的基礎(chǔ)上,著重培養(yǎng)程序設(shè)計的能力。 本書內(nèi)容充實、體系合理、概念清晰、講解詳盡、例題豐富,是學習C程序設(shè)計的理想教材,可作為高等學校本科以上教學用書。為了方便學習,建議與本書配套的《大學C語言實用教程實驗指導與習題》(第2版)(ISBN 978-7-302-58564-0 )一起使用。
程序設(shè)計發(fā)展到今天,已經(jīng)由技藝推進到科學,有了自己的一套基本原理和方法。進行程序設(shè)計,需要很強的邏輯思維能力,是一種極富創(chuàng)造性的智力勞動。對初學者而言,使他們望而生畏的,往往也正是這一點?梢赃@樣認為,語言是一種技能,程序設(shè)計是一門科學。因此,任何計算機語言及其程序設(shè)計的基本特點就是理論性和實踐性并重,教學上應強調(diào)科學訓練與技能培養(yǎng)并存;谶@一認識,本書以應用為目的,以提高程序設(shè)計能力為目標,以程序設(shè)計方法學為依據(jù),系統(tǒng)介紹了C語言及其程序設(shè)計技術(shù),把程序設(shè)計作為科學來講授,把語言作為技能來培養(yǎng),讓讀者在大量的程序設(shè)計實踐中自然而然地熟悉和掌握。
C語言是廣泛應用的計算機語言,學會使用C語言進行程序設(shè)計是計算機工作者的一項基本功。當今流行的面向?qū)ο笳Z言C 、Visual C 、C#以及Java語言就源于C語言。
在計算機日益普及、計算機技術(shù)日新月異、新型計算機軟件層出不窮的今天,程序設(shè)計仍然是每一位當代大學生的基本功,是計算機素質(zhì)教育的重要環(huán)節(jié)之一。尤其是那些希望用計算機解決本專業(yè)領(lǐng)域?qū)嶋H問題的有識之士,更需要加強程序設(shè)計的學習與訓練。
學習計算機語言的目的是應用,而應用要通過程序設(shè)計來體現(xiàn)。程序設(shè)計發(fā)展到今天,已經(jīng)由技藝推進到科學,有了自己的一套基本原理和方法。進行程序設(shè)計,需要很強的邏輯思維能力,是一種極富創(chuàng)造性的智力勞動。對初學者而言,使他們望而生畏的,往往正是這一點?梢赃@樣認為,語言是一種技能,程序設(shè)計是一門科學。因此,任何計算機語言及其程序設(shè)計的基本特點就是理論性和實踐性并重,教學上應強調(diào)科學訓練與技能培養(yǎng)并存;谶@一認識,本書以應用為目的,以提高程序設(shè)計能力為目標,以程序設(shè)計方法學為依據(jù),系統(tǒng)介紹了C語言及其程序設(shè)計技術(shù),把程序設(shè)計作為科學來講授,把語言作為技能來培養(yǎng),讓讀者在大量的程序設(shè)計實踐中自然而然地熟悉和掌握。
根據(jù)C語言自身的特點,本書從內(nèi)容上做了如下安排: 第1章是簡單的C程序設(shè)計,盡管簡單,但它是學習C語言的綱;第2、5、8章從易到難介紹了C語言的各種數(shù)據(jù)結(jié)構(gòu)(基本數(shù)據(jù)類型、數(shù)組和字符串、復合數(shù)據(jù)類型);第3章專門介紹C語言的數(shù)據(jù)運算;第4章集中介紹C語言的控制結(jié)構(gòu)和程序設(shè)計的基本思維方法,體現(xiàn)結(jié)構(gòu)化程序設(shè)計的特點;第6章介紹指針,這是C語言的精髓和特色,也是學習的難點;第7、9章介紹函數(shù)和文件,這是模塊化程序設(shè)計的需要;第10章介紹C語言環(huán)境中特殊而較為深入的問題(如編譯預處理、分割編譯等),這些問題基本不影響本書對初學者的要求,但對較高層次的讀者來說又是必要的資料,可以作為自學之用;附錄部分給出了Visual C 6.0 操作指導、C語言運算符集、ASCII代碼表、常用庫函數(shù)、習題解答以及綜合應用示例,便于讀者查閱。書中所有例題源程序均通過Visual C 6.0編譯系統(tǒng)調(diào)試,為方便讀者上機實踐以及課后練習與檢測,本書配有輔助教材《大學C語言實用教程實驗指導與習題(第2版)》。
潘旭華教授制定了本書的寫作大綱,王桂榮編寫第1~3章和附錄A~D及附錄E的部分內(nèi)容;潘旭華編寫第4~7章、附錄E部分內(nèi)容;姜書浩編寫第8章及附錄E部分內(nèi)容;趙玉剛編寫第9章、第10章及附錄E部分內(nèi)容。全書由潘旭華教授擔任主編并統(tǒng)稿,高福成教授精心審閱了全部書稿。本書在編寫和出版過程中,得到作者所在學校的大力支持,清華大學出版社的編校人員為此書的出版付出了大量辛勤的勞動,在此一并表示感謝。
本書配套的電子教學資源(教學大綱、實驗大綱、授課計劃、電子教案、電子圖書等),讀者可在清華大學出版社網(wǎng)站(http://www.tup.com.cn)本書相應的頁面中下載。
由于作者學識水平所限,書中難免存在疏漏和錯誤,懇請讀者不吝指正。
編者2021年8月
潘旭華 天津市教學名師,天津市五一勞動獎章獲得者。主要從事電子商務、智能計算與數(shù)量經(jīng)濟學研究。是電子商務一流本科專業(yè)建設(shè)點負責人、市級電子商務專業(yè)教學團隊負責人、市級信息技術(shù)實驗教學示范中心負責人;主持項目獲得高等教育天津市級教學成果二等獎、全國商業(yè)科技進步一等獎和二等獎等;主持或參與多項和省部級教學和科研項目;出版普通高等教育十一五規(guī)劃教材《大學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)特點和書寫風格6
1.4.1一個簡單的C程序6
1.4.2C程序的結(jié)構(gòu)特點7
1.4.3C程序書寫風格8
1.5輸入與輸出8
1.5.1賦值語句8
1.5.2格式輸入輸出函數(shù)9
1.5.3庫函數(shù)和標題文件10
1.6運行程序10
習題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
習題231
第3章數(shù)據(jù)運算35
3.1算術(shù)運算35
3.1.1算術(shù)運算符35
3.1.2算術(shù)表達式36
3.2賦值運算40
3.3逗號運算(順序運算)42
3.4關(guān)系運算和邏輯運算44
3.5位運算48
3.6常用數(shù)學函數(shù)52
習題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條件表達式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語句和標號83
習題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ù)組的應用101
5.4.1數(shù)值數(shù)組的應用101
5.4.2字符串處理函數(shù)109
習題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
習題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
習題7181
第8章復合數(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
習題8217
第9章文件與預處理223
9.1文件概述223
9.2文件的打開與關(guān)閉225
9.3文件的讀寫操作227
9.3.1文本文件讀寫227
9.3.2二進制文件讀寫233
9.4文件檢測函數(shù)235
9.5順序存取與隨機存取文件237
9.6編譯預處理247
9.6.1宏定義247
9.6.2文件包含251
9.6.3條件編譯253
習題9256 附錄AC語言運算符集263
附錄BASCII代碼表264 附錄CC常用庫函數(shù)及其標題文件265 附錄D習題參考答案270 附錄EC程序應用開發(fā)案例276