本書介紹利用C語言進(jìn)行程序設(shè)計(jì)的基本知識。全書共12章,詳細(xì)介紹了C語言的基本概念、算法與程序設(shè)計(jì)基礎(chǔ)、數(shù)據(jù)的輸入和輸出、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體與共用體、文件、面向?qū)ο蟪绦蛟O(shè)計(jì)與C++基礎(chǔ)等內(nèi)容。每章配有大量的習(xí)題,便于讀者鞏固所學(xué)知識,掌握程序設(shè)計(jì)的基本方法和編程技巧。
本書力求概念敘述準(zhǔn)確、嚴(yán)謹(jǐn),語言通俗易懂,適合作為高等院校理工科非計(jì)算機(jī)專業(yè)的“C語言程序設(shè)計(jì)”課程教材,也可供工程技術(shù)人員參考。
C語言是一種應(yīng)用非常廣泛的結(jié)構(gòu)化程序設(shè)計(jì)語言,既適合于編寫應(yīng)用程序,又特別適合于編寫系統(tǒng)軟件。
本書是結(jié)合作者多年的教學(xué)經(jīng)驗(yàn)編寫而成的,在內(nèi)容編排上盡量體現(xiàn)出易學(xué)的特點(diǎn),在文字?jǐn)⑹錾狭η髼l理清晰,在教材體系上重視理論與實(shí)踐相結(jié)合,以便于讀者低起點(diǎn)、高效率地掌握C語言的編程技巧。
本版在第3版的基礎(chǔ)上進(jìn)行了如下的修訂和調(diào)整:
1)程序設(shè)計(jì)語言平臺(tái)升級為Visual C++ 2010,書中實(shí)例均在Visual C++ 2010環(huán)境下調(diào)試通過,并在《C語言程序設(shè)計(jì)習(xí)題解析與上機(jī)指導(dǎo) 第3版》中對Visual C++ 2010環(huán)境進(jìn)行了詳細(xì)的介紹,方便學(xué)生自主學(xué)習(xí)。
2)增加了部分章節(jié)中的課后習(xí)題以及趣味程序設(shè)計(jì)實(shí)例,以激發(fā)學(xué)生的學(xué)習(xí)興趣。
3)為滿足學(xué)時(shí)的安排和教學(xué)需要,重新調(diào)整了章節(jié)的組合,刪除了第2章“算法與程序設(shè)計(jì)基礎(chǔ)”和第12章“面向?qū)ο蟪绦蛟O(shè)計(jì)與C++基礎(chǔ)”。
為方便教師教學(xué),本書配有電子課件,需要的教師可登錄華章網(wǎng)站(www.hzbook.com)下載。
《C語言程序設(shè)計(jì)教程》自2007年2月出版發(fā)行第1版以來,被多所學(xué)校程序設(shè)計(jì)課程選用,是學(xué)習(xí)C語言程序設(shè)計(jì)的理想教材。
為了適應(yīng)計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,更好地滿足人工智能、互聯(lián)網(wǎng)+形勢下高校計(jì)算機(jī)教學(xué)的需求,本教材進(jìn)行了第4版修訂。第4版共分11章,在原教材的基礎(chǔ)上進(jìn)行了語言平臺(tái)的升級及內(nèi)容的修訂,主要調(diào)整如下:
1)程序設(shè)計(jì)語言平臺(tái)升級為Visual C++ 2010,書中實(shí)例均在Visual C++ 2010環(huán)境下調(diào)試通過,并在《C語言程序設(shè)計(jì)習(xí)題解析與上機(jī)指導(dǎo) 第3版》中對Visual C++ 2010環(huán)境進(jìn)行了詳細(xì)的介紹,方便學(xué)生自主學(xué)習(xí)。
2)對各章節(jié)的文字?jǐn)⑹鲞M(jìn)行了完善和修改。
3)增加了部分章節(jié)中的課后習(xí)題,以及趣味程序設(shè)計(jì)實(shí)例,以激發(fā)學(xué)生的學(xué)習(xí)興趣。
4)每章都配有精心設(shè)計(jì)的例題和習(xí)題,并配有實(shí)驗(yàn)指導(dǎo)教材。
5)為滿足學(xué)時(shí)的安排和教學(xué)需要,重新調(diào)整了章節(jié)的組合,刪除了第2章“算法與程序設(shè)計(jì)基礎(chǔ)”和第12章“面向?qū)ο蟪绦蛟O(shè)計(jì)與C++基礎(chǔ)”。
第4版秉承原來版本內(nèi)容全面、銜接有序、通俗易懂、習(xí)題豐富以及實(shí)踐性強(qiáng)的特點(diǎn),符合社會(huì)發(fā)展的需要,便于高校程序設(shè)計(jì)課程的教學(xué)安排,以及結(jié)合與之配套的國家精品在線開放課程開展線上線下混合式教學(xué)實(shí)踐。
本書第1~3和5章由羅曉芳編寫,第4、7和8章由朱鳴華、汪德剛編寫,第6和11章由董明編寫,第9和10章由孟軍編寫,全書由朱鳴華、羅曉芳統(tǒng)稿。
第4版的修訂是在第3版的基礎(chǔ)上進(jìn)行的,感謝參與第3版編寫工作的劉旭麟、李慧、楊微、孫大為、趙晶。在本書的編寫過程中還得到了大連理工大學(xué)程序設(shè)計(jì)基礎(chǔ)課程教學(xué)團(tuán)隊(duì)各位老師的大力支持和幫助,在此表示誠摯的謝意。由于編者水平有限,書中難免存在疏漏和謬誤之處,敬請廣大讀者指正。
編 者
2019年5月
前言
第1章 C語言概述1
1.1 程序設(shè)計(jì)的基本概念1
1.2 C語言發(fā)展簡史2
1.3 C語言的特點(diǎn)3
1.4 簡單C語言程序舉例4
1.5 C語言程序的組成與結(jié)構(gòu)5
1.6 C語言程序的開發(fā)步驟6
小結(jié)7
習(xí)題7
第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式9
2.1 C語言的基本符號9
2.1.1 標(biāo)識符9
2.1.2 常量10
2.1.3 變量10
2.1.4 關(guān)鍵字11
2.2 C語言的數(shù)據(jù)類型12
2.2.1 整型數(shù)據(jù)12
2.2.2 實(shí)型數(shù)據(jù)14
2.2.3 字符型數(shù)據(jù)15
2.2.4 用sizeof 計(jì)算數(shù)據(jù)類型所占的內(nèi)存空間17
2.3 運(yùn)算符和表達(dá)式18
2.3.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式19
2.3.2 賦值運(yùn)算符和賦值表達(dá)式20
2.3.3 逗號運(yùn)算符和逗號表達(dá)式21
2.4 數(shù)據(jù)類型轉(zhuǎn)換21
2.4.1 不同數(shù)據(jù)類型的數(shù)據(jù)間的混合運(yùn)算21
2.4.2 強(qiáng)制類型轉(zhuǎn)換23
2.5 自增運(yùn)算和自減運(yùn)算23
2.6 位運(yùn)算24
小結(jié)27
習(xí)題27
第3章 數(shù)據(jù)的輸入和輸出29
3.1 數(shù)據(jù)的輸出29
3.1.1 格式輸出函數(shù)printf29
3.1.2 字符輸出函數(shù)putchar33
3.2 數(shù)據(jù)的輸入33
3.2.1 格式輸入函數(shù)scanf33
3.2.2 字符輸入函數(shù)getchar36
3.3 應(yīng)用舉例37
小結(jié)38
習(xí)題38
第4章 選擇結(jié)構(gòu)42
4.1 算法的概念及其描述方法42
4.1.1 算法的概念42
4.1.2 算法的描述方法43
4.2 關(guān)系運(yùn)算符與關(guān)系表達(dá)式45
4.2.1 關(guān)系運(yùn)算符45
4.2.2 關(guān)系表達(dá)式45
4.3 邏輯運(yùn)算符與邏輯表達(dá)式46
4.3.1 邏輯運(yùn)算符46
4.3.2 邏輯表達(dá)式47
4.4 選擇語句48
4.4.1 if語句48
4.4.2 if語句的嵌套51
4.4.3 switch語句52
4.5 條件運(yùn)算符與條件表達(dá)式54
4.6 應(yīng)用舉例55
小結(jié)58
習(xí)題58
第5章 循環(huán)結(jié)構(gòu)62
5.1 循環(huán)結(jié)構(gòu)概述62
5.2 循環(huán)語句63
5.2.1 while循環(huán)語句63
5.2.2 do-while循環(huán)語句65
5.2.3 for循環(huán)語句66
5.2.4 空語句68
5.2.5 三種循環(huán)語句的比較69
5.3 循環(huán)嵌套70
5.4 循環(huán)流程控制73
5.4.1 break語句73
5.4.2 continue語句75
5.4.3 goto語句77
5.4.4 三種語句的區(qū)別78
5.5 程序設(shè)計(jì)實(shí)例80
5.5.1 窮舉法80
5.5.2 迭代法84
小結(jié)88
習(xí)題89
第6章 數(shù)組96
6.1 一維數(shù)組96
6.1.1 一維數(shù)組的定義和引用96
6.1.2 一維數(shù)組的初始化99
6.1.3 一維數(shù)組應(yīng)用舉例101
6.2 二維數(shù)組104
6.2.1 二維數(shù)組的定義和引用104
6.2.2 二維數(shù)組的初始化107
6.2.3 二維數(shù)組應(yīng)用舉例109
6.3 字符數(shù)組112
6.3.1 字符數(shù)組的定義和引用112
6.3.2 字符數(shù)組的初始化113
6.3.3 字符數(shù)組應(yīng)用舉例114
6.4 字符串116
6.4.1 字符串的存儲(chǔ)方法116
6.4.2 字符串的輸入和輸出117
6.4.3 字符串處理函數(shù)120
6.4.4 字符串應(yīng)用舉例123
小結(jié)125
習(xí)題126
第7章 函數(shù)133
7.1 函數(shù)的基本概念133
7.1.1 函數(shù)的概念133
7.1.2 函數(shù)的定義134
7.1.3 函數(shù)的調(diào)用135
7.1.4 函數(shù)參數(shù)的傳遞方式137
7.1.5 函數(shù)的返回值138
7.1.6 函數(shù)的原型聲明140
7.2 數(shù)組作為函數(shù)參數(shù)142
7.2.1 一維數(shù)組作為函數(shù)參數(shù)142
7.2.2 二維數(shù)組作為函數(shù)參數(shù)143
7.2.3 數(shù)組作為函數(shù)參數(shù)的調(diào)用及應(yīng)用舉例143
7.3 函數(shù)的嵌套調(diào)用和遞歸調(diào)用145
7.3.1 函數(shù)的嵌套調(diào)用145
7.3.2 函數(shù)的遞歸調(diào)用147
7.4 變量的作用域和存儲(chǔ)方法150
7.4.1 局部變量和全局變量150
7.4.2 變量的存儲(chǔ)方法153
7.5 內(nèi)部函數(shù)和外部函數(shù)156
7.6 應(yīng)用舉例156
小結(jié)162
習(xí)題163
第8章 編譯預(yù)處理168
8.1 宏定義168
8.2 文件包含170
8.3 條件編譯171
小結(jié)172
習(xí)題172
第9章 指針175
9.1 指針的基本概念及指針變量的定義175
9.1.1 指針的基本概念175
9.1.2 指針變量的定義方法176
9.2 指針運(yùn)算176
9.2.1 賦值運(yùn)算176
9.2.2 取地址運(yùn)算176
9.2.3 取內(nèi)容運(yùn)算177
9.2.4 指針表達(dá)式與整數(shù)相加、相減運(yùn)算178
9.2.5 自增、自減運(yùn)算179
9.2.6 同類指針相減運(yùn)算180
9.2.7 關(guān)系運(yùn)算180
9.2.8 強(qiáng)制類型轉(zhuǎn)換運(yùn)算181
9.2.9 空指針181
9.3 指針變量與一維數(shù)組181
9.3.1 指針變量與一維數(shù)組之間的聯(lián)系和區(qū)別181
9.3.2 字符串指針與字符串182
9.4 指針與函數(shù)184
9.4.1 指針作為函數(shù)參數(shù)184
9.4.2 返回指針的函數(shù)187
9.4.3 函數(shù)的指針和指向函數(shù)的指針變量188
9.5 指針與二維數(shù)組190
9.5.1 二維數(shù)組的結(jié)構(gòu)190
9.5.2 二維數(shù)組元素及其地址190
9.5.3 指針數(shù)組192
9.5.4 指針與字符串?dāng)?shù)組193
9.5.5 指向數(shù)組的指針變量194
9.6 二級指針196
9.7 內(nèi)存空間的動(dòng)態(tài)分配198
9.7.1 指向void的指針198
9.7.2 常用內(nèi)存管理函數(shù)199
9.8 main函數(shù)的參數(shù)200
9.8.1 命令行參數(shù)200
9.8.2 指針數(shù)組作為main函數(shù)的形參200
9.9 應(yīng)用舉例201
小結(jié)205
習(xí)題206
第10章 結(jié)構(gòu)體與共用體213
10.1 結(jié)構(gòu)體類型和結(jié)構(gòu)體變量213
10.1.1 結(jié)構(gòu)體類型的定義213
10.1.2 結(jié)構(gòu)體變量的定義214
10.1.3 結(jié)構(gòu)體變量的引用216
10.1.4 結(jié)構(gòu)體變量的初始化217
10.2 結(jié)構(gòu)體數(shù)組217
10.2.1 結(jié)構(gòu)體數(shù)組的定義217
10.2.2 結(jié)構(gòu)體數(shù)組的引用217
10.2.3 結(jié)構(gòu)體數(shù)組的初始化218
10.2.4 應(yīng)用舉例218
10.3 結(jié)構(gòu)體指針220
10.3.1 結(jié)構(gòu)體