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