C語言程序設計, 3/e
內容描述
本書以Visual C++ 2010為編程環境,通過分析問題、設計算法、編寫和調試程序等步驟,介紹了順序結構、選擇結構、循環結構的算法分析和程序設計方法,力求讓讀者掌握分析問題的方法,培養讀者算法設計的能力、編程和調試的能力以及模塊化程序設計思想。
全書共14章。第1~2章介紹程序設計基礎與C語言的編程環境;第3~7章介紹結構化程序設計的3種基本結構與函數和數組的基礎知識;第8章介紹字符型數據處理;第9~11章介紹編譯預處理、指針以及其他的數據類型;第12、13章介紹位運算與文件;第14章介紹幾個綜合的編程實例。每章後均配有針對性強的選擇題、編程題,供讀者練習、復習和提高。
目錄大綱
第1章程序設計基礎1
1.1程序設計語言1
1.1.1什麼是程序1
1.1.2語言的分類1
1.1.3 C語言簡介2
1.1.4 C語言組成3
1.2計算機的組成與程序設計的本質3
1.2.1計算機系統結構3
1.2.2程序設計的本質4
1.2.3程序設計的過程4
1.3算法的概念和特性5
1.3.1什麼是算法5
1.3.2算法舉例5
1.3.3算法的特性6
1.4算法的表示方法6
1.4.1自然語言7
1.4.2偽代碼7
1.4.3傳統流程圖7
1.4.4 NS流程圖7
1.5結構化的程序設計方法8
1.5.1結構化程序設計8
1.5.2結構化程序設計方法9
習題10
第2章C語言編程與調試12
2.1 Visual C++ 2010 Express 12
2.1.1安裝和啟動12
2.1.2 Visual C++ 2010的開發環境13
2.1.3 Visual C++ 2010中程序編寫與調試15
2.2 Dev C++ 21
2.2.1安裝和啟動21
2.2.2 Dev C++的開發環境22
2.1.3 Dev C++中程序設計與調試23
習題27
第3章順序結構程序設計與編程基礎28
3.1順序結構算法設計28
3.2 C語言編程基礎29
3.2.1數據類型30
3.2.2變量31
3.2.3常量33
3.2.4整型數據的處理34
3.2.5實型數據的處理38
3.2.6運算符和表達式41
3.2.7數據類型的轉換47
3.2.8 C語句48
3.2.9 C程序的註釋49
3.3順序結構程序設計49
3.4常見的編程錯誤及其調試52
3.4.1語法錯誤52
3.4.2運行時錯誤54
4.4.3未檢測到的錯誤55
3.4.4邏輯錯誤56
3.4.5程序調試方法57
習題57
第4章函數62
4.1函數的定義和調用62
4.1.1函數定義62
4.1.2函數調用63
4.1.3函數返回值64
4.1.4參數的傳遞65
4.1.5對被調用函數的聲明66
4.2變量的作用域67
4.3變量的存儲類別和生存期70
4.4程序的模塊化設計72
習題74
第5章選擇結構程序設計77
5.1選擇結構算法設計77
5.2關係運算與邏輯運算81
5.2.1關係運算符和關係表達式81
5.2.2邏輯運算符和邏輯表達式82
5.3 if語句84
5 .4 switch語句90
5.5選擇結構的嵌套94
5.6條件運算符97
習題98
第6章循環結構程序設計104
6.1當型循環104
6.2直到型循環110
6.3 for循環語句112
6.4 break語句和continue語句114
6.5循環的嵌套115
6.6循環結構編程舉例118
6.7函數的嵌套調用122
6.8函數的遞歸調用123
習題126
第7章數組133
7.1一維數組133
7.1.1一維數組133
7.1.2一維數組程序設計135
7.1.3數組元素作為函數參數140
7.1.4一維數組作為函數參數140
7.2二維數組145
7.2.1二維數組145
7.2.2二維數組程序設計148
7.2.3多維數組作為函數參數151
習題154
第8章字符、字符數組與字符串160
8.1字符類型160
8.1.1字符型常量、變量160
8.1.2字符型數據的輸入和輸出162
8.1.3字符串164
8.2字符數組165
8.2.1字符數組的定義和使用165
8.2.2字符串數組167
8.2.3字符串處理函數169
8.3字符串處理173
8.3.1字符串處理算法和程序設計173
8.3.2字符串作為函數參數175
習題177
第9章編譯預處理181
9.1宏定義181
9.1.1不帶參數的宏定義181
9.1. 2帶參數的宏定義184
9.2文件包含186
9.3條件編譯188
習題191
第10章指針194
10.1地址和指針194
10.2變量的指針和指向變量的指針變量194
10.2.1定義指針變量194
10.2.2指針變量的引用195
10.2.3指針變量作為函數參數197
10.3數組的指針和指向數組的指針變量199
10.3.1指向數組元素的指針199
10.3.2通過指針引用數組元素199
10.3.3數組和指向數組的指針變量作函數參數201
10.3.4指向多維數組的指針和指針變量204
10.4字符串的指針和指向字符串的指針變量207
10.4.1字符串的表示形式207
10.4.2字符串指針作函數參數208
10.4.3字符指針變量和字符數組的討論209
10.5函數的指針和指向函數的指針變量★ 210
10.5.1用函數指針變量調用函數210
10.5.2用指向函數的指針作函數參數211
10.6返回指針值的函數212
10.7指針數組和指向指針的指針213
10.7.1指針數組213
10.7.2指向指針的指針215
10.7.3指針數組作main函數的形參217
習題219
第11章其他數據類型225
11. 1結構體225
11.1.1結構體類型的聲明225
11.1.2定義結構體類型變量226
11.1.3結構體變量的引用228
11.1.4結構體變量的初始化228
11.2結構體數組230
11.2.1定義結構體數組230
11.2.2結構體數組的初始化230
11.2.3結構體數組應用舉例232
11.3指向結構體類型數據的指針232
11.3.1指向結構體變量的指針233
11.3.2指向結構體數組的指針233
11.3. 3用結構體變量和指向結構體的指針作函數參數234
11.4鍊錶236
11.4.1鍊錶概述236
11.4.2處理動態鍊錶所需的函數237
11.4.3建立動態鍊錶239
11.4.4輸出鍊錶242
11.4.5刪除鍊錶的節點242
11.4.6插入鍊錶節點245
11.4.7鍊錶的綜合操作249
11.5共用體250
11.5.1共用體的概念250
11.5.2共用體變量的引用251
11.6枚舉類型254
11.7用typedef定義類型255
習題257
第12章位運算264
12.1位運算符和位運算264
12.1 .1按位取反(~)運算符264
12.1.2按位與(&)運算符265
12.1.3按位或(|)運算符266
12.1.4按位異或(^)運算符266
12.1.5左移(<<)運算符267
12.1.6右移(>>)運算符268
12.1.7位運算賦值運算符269
12.1.8不同長度的運算數之間的運算規則269
12. 2位運算程序實例269
習題271
第13章文件273
13.1文件概述273
13.2文件指針274
13.3文件的打開與關閉274
13.3.1 fopen函數275
13.3.2 fclose函數276
13.4文件的讀寫276
13.4.1 fputc函數277
13.4.2 fgetc函數278
13.4.3 fputs函數278
13.4.4 fgets函數279
13.4.5 fprintf函數280
13. 4.6 fscanf函數281
13.4.7 fwrite函數281
13.4.8 fread函數282
13.4.9 rewind函數283
13.4.10 fseek函數284
13.4.11 ftell函數285
13.4.12 feof函數285
13.4.13 ferror函數286
習題286
第14章綜合程序設計290
14.1排序算法比較290
14.2個人通訊錄294
習題300
附錄ANSI C常用庫函數301
參考文獻306
作者介紹
寧愛軍,男,副教授,天津科技大學計算機公共基礎系主任。
主講“信息與智能科學導論”“計算思維導論”“大學計算機基礎”“C語言”“Visual Basic語言”“Visual FoxPro語言”等課程。長期從事計算機基礎教學,教學經驗豐富,幽默風趣,深受學生的喜愛。
曾獲得“天津科技大學青年教師培育計劃”“天津科技大學優秀教師”和“我最喜愛的專業課老師”等榮譽稱號。
主編出版《信息與智能科學導論》《C語言程序設計》《Visual Basic語言程序設計》《大學計算機基礎》等11部教材。
2019年開展面向新一代信息技術的計算機基礎課程改革,開設“信息與智能科學導論”課程,並主編該課程配套教材《信息與智能科學導論》。