圖書簡介:
本書是在作者多年講授C語言程序設計的基礎上,總結多年的教學經驗和實踐體會編寫而成的。本書采用由淺入深、循序漸進的原則,系統地介紹了C語言的基本語法知識,通過大量實例描述C語言的程序設計方法,并針對實例給出了算法分析,注重培養學生程序設計的思維方法和程序設計能力。
本書共分為13章,第1~3章介紹C語言的概念、數據類型和基礎知識;第4~6章介紹C語言的三種基本結構;第7~13章介紹C語言中的數組、函數、結構體、文件和編譯預處理的基礎知識和編程技巧。綜觀全書,既有基礎知識的介紹,也有各種算法的分析;既有生動的實例講解,也有典型經驗的分享。
本書既可以作為高等學校各專業的正式教材,也適合自學使用。另外,在本書中,兼顧了全國計算機等級考試二級C語言程序設計考試大綱的相關內容,也可以作為考試輔導教材使用。
前 言
為何編寫本書
由于2006年教育部高等學校計算機科學與技術教學指導委員會關于“關于進一步加強高等學校計算機基礎教學的意見”中專門提到了要加強大學生在計算機程序設計及信息素養方面的培養,C語言是國際上廣泛流行的一種計算機語言,而C語言因數據類型豐富、表達能力強、使用靈活方便、生成目標代碼質量高,并且可直接對硬件進行操作,在國內外得到廣泛應用。因此目前國內的很多高校都將C語言作為本科學生學習程序設計的入門課程。通過學習該課程,學生不僅可以掌握一門編程語言,而且還可以掌握結構化程序設計的基本理論、編程思想、編程方法、常用算法和實現技術。另外,還可以鍛煉學生的邏輯思維能力,培養學生的創新精神,進而提高學生的綜合素質。
本書是作者在講授C語言程序設計的基礎上,總結多年的教學經驗和實踐體會編寫而成的。本書既可以作為高等學校各專業的正式教材,也適合自學使用。另外,在本書中,兼顧了全國計算機等級考試二級C語言程序設計考試大綱的相關內容,也可以作為考試輔導教材使用。
本書內容特色
1. 由淺入深、循序漸進
本書內容由淺入深、循序漸進,介紹C語言的基本語法知識和程序設計等內容,同時兼顧了全國計算機等級考試二級C語言程序設計考試大綱的內容。書中結合大量實例描述C語言的重要特性,并對很多代碼給出逐步的分析,以這種獨特的教學方法向讀者解釋C語言的編程元素及方法。
2. 案例新穎、趣味性強
針對初學者的特點,作者精心策劃了書的框架及內容,書中概念清晰,邏輯性強,內容通俗易懂,以豐富的例題深入淺出地闡述知識點。書中的每個案例都由作者精心設計,趣味性較強,通過這些案例,不僅可以提高讀者學習的興趣,也可以引導讀者對所學知識點舉一反三,從而使讀者更深刻地理解所學習的知識點。
3. 通俗易懂,針對性強
本書面向初學者,強調應用性,注重實例的分析。作者在編寫每個案例時,都先對案例進行分析,提高讀者分析問題的能力;然后編寫代碼,并在代碼中給出大量注釋;最后在案例之后提出一些思考問題,提高讀者獨立思考問題的能力。適用讀者群
(1) 初學編程的自學者。
(2) 編程愛好者。
(3) 大、中專院校的老師和學生。
(4) 相關培訓機構的老師和學員。
(5) 初、中級程序開發人員和程序測試及維護人員。
參加本書編寫的人員
參加本書編寫工作的有劉麗、朱俊東、張航等。其中本書的第1章和第2章由張航編寫,第3~5章由朱俊東編寫,第6~13章由劉麗編寫。
由于時間倉促,書中難免有遺漏和不足之處,懇請廣大讀者提出寶貴意見。聯系方式為:tsliuli@126.com。
編 者
目 錄第1章 C語言程序設計概述 1
1.1 程序與程序設計語言 2
1.1.1 程序的基本概念 2
1.1.2 程序設計語言 2
1.2 算法 3
1.2.1 算法的概念 3
1.2.2 算法的描述方法 4
1.3 C語言的發展及特點 6
1.3.1 C語言的發展概況 6
1.3.2 C語言的特點 6
1.4 C語言程序的基本結構 7
1.4.1 簡單的C語言程序示例 7
1.4.2 C語言程序基本結構 8
1.5 C語言的字符集、標識符與關鍵字 9
1.5.1 C語言的字符集 9
1.5.2 C語言的標識符與關鍵字 9
1.6 C語言程序的調試 10
1.6.1 C程序的調試步驟 10
1.6.2 Visual C++ 6.0集成開發環境簡介 11
1.7 本章小結 13
1.8 課后練習 13
第2章 數據類型 15
2.1 C語言的數據類型 16
2.2 常量與變量 16
2.2.1 常量與符號常量 16
2.2.2 變量 17
2.3 整型數據 19
2.3.1 整型常量 19
2.3.2 整型變量 19
2.4 浮點型數據 20
2.4.1 浮點型常量 20
2.4.2 浮點型變量 21
2.5 字符型數據 22
2.5.1 字符常量 22
2.5.2 字符變量 23
2.5.3 字符串常量 25
2.6 本章小結 25
2.7 課后練習 25
第3章 運算符與表達式 27
3.1 運算符與表達式 28
3.1.1 運算符與表達式 28
3.1.2 算術運算符與算術表達式 29
3.1.3 關系運算符與關系表達式 32
3.1.4 邏輯運算符與邏輯表達式 33
3.1.5 賦值運算符與賦值表達式 36
3.1.6 其他運算符 37
3.2 數據類型轉換 39
3.2.1 類型自動轉換 39
3.2.2 賦值轉換 40
3.2.3 強制類型轉換 41
3.3 本章小結 41
3.4 課后練習 42
第4章 順序結構程序設計 45
4.1 C語言的基本語句 46
4.1.1 C語言語句簡介 46
4.1.2 順序結構 48
4.2 數據的輸出 48
4.2.1 格式化輸出函數printf() 48
4.2.2 單個字符的輸出函數 putchar 54
4.3 數據的輸入 55
4.3.1 格式化輸入函數scanf() 55
4.3.2 單個字符的輸出函數getchar() 60
4.4 順序結構舉例 61
4.5 本章小結 63
4.6 課后練習 64
第5章 選擇結構程序設計 67
5.1 if語句 68
5.1.1 單分支if語句 68
5.1.2 雙分支if語句 70
5.1.3 多分支選擇結構 72
5.1.4 if語句的嵌套 74
5.2 switch語句 77
5.3 選擇結構程序設計舉例 80
5.4 本章小結 82
5.5 課后練習 83
第6章 循環結構程序設計 87
6.1 while語句 88
6.2 do…while語句 92
6.3 for語句 96
6.4 break、continue和goto語句 102
6.4.1 break語句 102
6.4.2 continue語句 104
6.4.3 goto語句 106
6.5 循環的嵌套 107
6.6 循環結構常用算法舉例 112
6.7 本章小結 119
6.8 課后練習 119
第7章 數組 123
7.1 一維數組 124
7.1.1 一維數組的定義 124
7.1.2 一維數組元素的引用 126
7.1.3 一維數組元素的初始化 127
7.1.4 一維數組算法舉例 129
7.2 二維數組的定義和引用 136
7.2.1 二維數組的定義 136
7.2.2 二維數組元素的引用 138
7.2.3 二維數組元素的初始化 139
7.2.4 二維數組算法舉例 140
7.3 字符數組與字符串 144
7.3.1 字符數組的定義與初始化 145
7.3.2 字符串的概念與存儲 147
7.3.3 常用的字符串處理函數 150
7.3.4 字符串程序舉例 155
7.4 本章小結 160
7.5 課后練習 160
第8章 函數 165
8.1 函數概述 166
8.1.1 函數的引入 166
8.1.2 函數的定義 169
8.1.3 函數調用與函數的值 172
8.1.4 形式參數和實際參數 177
8.2 函數的嵌套調用與遞歸調用 180
8.2.1 函數的嵌套調用 180
8.2.2 函數的遞歸調用 182
8.3 數組作為函數參數 187
8.3.1 數組元素作為函數參數 187
8.3.2 數組名作為函數的形參和實參 188
8.4 局部變量與全局變量 194
8.4.1 局部變量 194
8.4.2 全局變量 196
8.5 數據的存儲類別 199
8.5.1 動態存儲與靜態存儲 199
8.5.2 auto變量 200
8.5.3 static變量 202
8.5.4 register變量 205
8.5.5 extern變量 205
8.6 內部函數與外部函數 207
8.6.1 內部函數 207
8.6.2 外部函數 208
8.7 函數設計舉例 209
8.8 本章小結 213
8.9 課后練習 214
第9章 編譯預處理 219
9.1 宏定義 220
9.1.1 無參宏的定義與使用 220
9.1.2 有參宏的定義與使用 223
9.2 文件包含 227
9.3 條件編譯 229
9.4 本章小結 233
9.5 課后練習 233
第10章 指針 235
10.1 地址與指針 236
10.2 指針變量 238
10.2.1 指針變量的定義與初始化 238
10.2.2 指針運算 240
10.2.3 指針作為函數參數 244
10.3 指針與一維數組 246
10.3.1 指向一維數組的指針的定義及使用 246
10.3.2 指向一維數組的指針作為函數的參數 250
10.4 指向二維數組的指針 252
10.4.1 二維數組的指針 252
10.4.2 指向二維數組的指針作為 函數的參數 256
10.4.3 動態數組的實現 257
10.5 指針與字符串 259
10.5.1 字符指針的定義與初始化 259
10.5.2 利用字符指針表示與引用字符串 260
10.5.3 字符指針與字符數組的 比較 263
10.5.4 字符串指針作為函數參數 263
10.6 返回指針值的函數 267
10.7 指向函數的指針 269
10.8 指針數組和二級指針 272
10.8.1 指針數組 272
10.8.2 main()函數的參數 274
10.8.3 二級指針 275
10.9 本章小結 277
10.10 課后練習 277
第11章 結構體、共用體與枚舉類型 283
11.1 結構體類型 284
11.1.1 結構體類型的定義 285
11.1.2 結構體變量的定義與使用 286
11.1.3 結構體數組的定義與使用 292
11.1.4 結構體類型指針 297
11.1.5 指向結構體數組的指針 299
11.1.6 結構體類型程序舉例 302
11.2 用typedef定義類型 305
11.3 鏈表 306
11.3.1 鏈表的概念 306
11.3.2 實現鏈表所需的內存管理 函數 308
11.3.3 鏈表的操作 309
11.3.4 鏈表程序舉例 315
11.4 共用體 319
11.4.1 共用體類型的定義 319
11.4.2 共用體變量的定義和使用 319
11.4.3 共用體的應用舉例 321
11.5 枚舉類型 324
11.6 本章小結 326
11.7 課后練習 327
第12章 位運算 331
12.1 位運算符與位運算 332
12.1.1 按位與運算 332
12.1.2 按位“或”運算 333
12.1.3 按位異或運算 334
12.1.4 求反運算 335
12.1.5 左移運算 336
12.1.6 右移運算 336
12.1.7 復合賦值運算符 337
12.1.8 位運算舉例 337
12.2 位段 339
12.3 本章小結 341
12.4 課后練習 342
第13章 文件 345
13.1 文件概述 346
13.2 文件指針 348
13.3 文件的打開與關閉 349
13.3.1 文件的打開 349
13.3.2 文件的關閉 351
13.4 文件的讀寫 351
13.4.1 fputc()函數和fgetc()函數 351
13.4.2 fputs()函數和fgets()函數 355
13.4.3 fprintf()函數和fscanf() 函數 357
13.4.4 fread()函數和fwrite()函數 359
13.5 文件的定位 362
13.5.1 fseek()函數 362
13.5.2 ftell()函數 363
13.5.3 rewind()函數 364
13.6 本章小結 365
13.7 課后練習 366
答案 369
附錄 373
附錄1 C語言中的關鍵字 373
附錄2 常用字符與ASCII代碼對照表 374
附錄3 C語言運算符的優先級和結合性 375
附錄4 C語言常用語法提要 377
附錄5 C庫函數 381