商品簡介
本書系統地介紹ANSIC語言的基本概念、語法和語義,包括數據類型、常量、變量、運算符和表達式、語句、數組、函數、結構體、指針、文件等。將C語言的介紹和結構化程序設計方法有機地結合在一起,通過大量實例的分析、編程,幫助讀者儘快掌握C語言和用C語言編寫程序。通過基本算法思想介紹和應用實例,幫助讀者掌握用C語言描述算法和基本算法策略在程序設計中的應用。本書提供大量精心設計的例題、習題和上機實驗,通過完成習題和上機實驗,幫助讀者進一步理解C語言的各種語法成分,掌握C語言源程序的編輯、編譯、鏈接和運行過程。 本書可作為高等院校“C語言程序設計”課程的教材,也可作為廣大計算機程序設計人員和計算機程序設計愛好者的參考書,同時可供參加相關考試的讀者參考。
作者簡介
呼克佑,太原理工大學軟件學院教師,1985年至今一直從事教學工作,主編多部教材。
序
前 言
近年來,學習計算機程序設計的人幾乎都將C語言作為首選語言。它功能豐富、表達能力強、使用方便靈活、可移植性好。“C語言程序設計”不僅是計算機類專業的一門專業基礎課,也是大多數理工類專業的必修課。
為什麼要學習C語言?大致有以下幾個理由:
C語言可以作為學習計算機程序設計語言的入門語言;
C語言是編寫操作系統的首選語言,在與計算機硬件打交道時靈巧且高效;
C語言具有現代高級程序設計語言的基本語法特徵;
常用的面向對象程序設計語言如C++和Java,其基本語法來源於C語言;
許多用C語言編寫的系統需要維護;
用於要求程序高速運行領域的編程,如嵌入式系統、通信程序等;
遊戲設計者和黑客少不了C語言;
C語言使用者和愛好者眾多。
學習C語言,需要理解和掌握C語言中諸如關鍵字、標識符、數據類型、常量、變量、運算符和表達式等基本概念,也需要掌握語句、數組、函數、指針、結構體、文件的使用。同時需要瞭解和掌握計算機的解題過程、算法的設計和表示、結構化程序設計方法等內容。
本書全面、系統地介紹了C語言的語法、語義和程序設計技術,內容豐富,結構完整,力求精練實用。對抽象概念的敘述通俗易懂,內容安排突出重點、分散難點、實例充實。全書共分10章。第1章介紹C語言的簡史、特點,計算機解題過程和算法的概念。第2章介紹C語言的基本數據類型、常量、變量、運算符和表達式。第3章介紹結構化程序設計的三種基本結構及其控制語句。第4章介紹數組的使用及其程序設計方法。第5章介紹指針的使用及其程序設計方法。第6章介紹用戶自定義函數的定義、調用和聲明方法,以及變量的作用域規則。第7章介紹C語言的複雜數據類型結構體和動態數據結構。第8章介紹文件的基本概念和操作方法。第9章介紹宏、文件包含、條件編譯等預處理命令的使用。第10章為上機實驗指導。每章均給出了幾乎覆蓋所有知識點的習題供學生練習。最後還提供非常實用的附錄,如常用庫函數簡介、編譯、鏈接常見錯誤信息等。
根據教材第1版的使用情況,我們對教材的部分內容做了調整,主要體現在對例題的分析、對例題程序的解釋和對指針內容的精簡,並充實了習題和上機實驗內容。本書將結構化程序設計方法和常用的算法思想融入程序設計中。實例先易後難、先簡後繁,通過習題和上機實驗訓練學生的C語言程序設計能力,達到掌握C語言和應用C語言開發程序的目的。
本書所有例題程序均在Visual C++6.0集成開發環境中調試通過,便於教師上課演示。本書作為教材使用時,建議講授學時不少於40課時,實驗學時不少於16課時。
本書配有電子課件、源代碼和習題解答,讀者可登錄華信教育資源網(www.hxedu.com.cn),免費註冊、下載。
參加本書編寫的人員都是長期工作在教學第一線的教師,從事計算機專業課程教學多年,有豐富的教學經驗。本書由太原理工大學呼克佑老師主編並編寫第4、8、9章,第1、2章由林福平老師編寫,第3章由鄧紅霞老師編寫,第5、10章由李丹丹老師編寫,第6章由曹棣老師編寫,第7章由山西水利職業技術學院王紅霞老師編寫,全書由呼克佑老師統稿。
在本書的編寫過程中得到了太原理工大學相關領導的大力支持和幫助,在此表示衷心的感謝。由於作者水平有限,書中疏漏在所難免,殷切盼望讀者和專家批評指正。
編 者
目次
目 錄
第1章 C語言與程序設計 1
1.1 C語言發展簡史 2
1.2 C語言的特點 3
1.3 計算機解題過程 4
1.4 算法及其表示 5
1.4.1 算法的概念 7
1.4.2 算法的描述 8
1.5 常用算法策略介紹 11
1.5.1 窮舉法 11
1.5.2 遞推法 12
1.5.3 遞歸法 12
1.6 結構化程序設計方法 13
1.6.1 結構化程序設計基本思想 13
1.6.2 三種基本程序結構 14
本章小結 14
習題一 15
第2章 C語言基礎知識 16
2.1 簡單的C語言程序 16
2.2 關鍵字和標識符 19
2.2.1 字符集 19
2.2.2 關鍵字 19
2.2.3 標識符 20
2.3 數據類型 20
2.3.1 C語言的數據類型 21
2.3.2 整數類型 22
2.3.3 浮點類型 23
2.3.4 字符類型 24
2.4 常量和變量 25
2.4.1 常量 25
2.4.2 變量 27
2.5 運算符和表達式 29
2.5.1 算術運算符 30
2.5.2 賦值運算符 32
2.5.3 其他運算符 34
2.5.4 運算符的優先級和結合性 36
2.6 數據類型轉換 37
本章小結 39
習題二 39
第3章 程序控制結構 42
3.1 C語言語句概述 42
3.2 順序結構 44
3.2.1 賦值語句 44
3.2.2 數據輸入/輸出 44
3.2.3 格式輸入/輸出 46
3.2.4 程序舉例 51
3.3 選擇結構 52
3.3.1 關係運算符與關系表達式 53
3.3.2 邏輯運算符與邏輯表達式 53
3.3.3 if語句 55
3.3.4 switch語句 59
3.3.5 程序舉例 62
3.4 循環結構 64
3.4.1 while循環語句 64
3.4.2 do-while循環語句 66
3.4.3 for循環語句 67
3.4.4 循環的嵌套 70
3.4.5 goto、break和continue語句 71
3.4.6 程序舉例 74
本章小結 79
習題三 80
第4章 數組和字符串 94
4.1 一維數組 94
4.1.1 一維數組的定義 94
4.1.2 一維數組的初始化 95
4.1.3 一維數組元素的引用 96
4.1.4 一維數組應用舉例 98
4.2 二維數組及多維數組 103
4.2.1 二維數組的定義 103
4.2.2 二維數組的初始化 104
4.2.3 二維數組元素的引用 104
4.2.4 二維數組應用舉例 105
4.2.5 多維數組 106
4.3 字符數組和字符串 107
4.3.1 用字符數組存放字符序列 107
4.3.2 用字符數組存放字符串 108
4.3.3 字符串處理函數 110
4.3.4 字符數組應用舉例 113
本章小結 116
習題四 117
第5章 指針 123
5.1 指針的概念及運算 123
5.1.1 指針的概念 123
5.1.2 指針變量的定義和初始化 124
5.1.3 與指針有關的運算 125
5.2 數組中的指針 128
5.2.1 一維數組中的指針 128
5.2.2 二維數組中的指針 131
5.3 用指針處理字符串 133
5.4 指針數組和指針的指針 135
5.4.1 指針數組 135
5.4.2 指向指針的指針 137
5.5 程序舉例 139
本章小結 140
習題五 141
第6章 函數 145
6.1 模塊化程序設計方法 145
6.2 函數的定義、調用和聲明 147
6.2.1 函數定義 147
6.2.2 函數調用 150
6.2.3 函數聲明 151
6.3 函數參數及其傳遞方式 153
6.3.1 函數的參數 153
6.3.2 函數參數的傳遞方式 155
6.4 函數的嵌套調用和遞歸調用 161
6.4.1 函數的嵌套調用 161
6.4.2 函數的遞歸調用 164
6.5 函數指針和指向函數的指針變量 167
6.5.1 函數指針和指向函數的指針變量的定義 167
6.5.2 指向函數的指針作為函數的參數 168
6.6 main()函數的參數 170
6.7 exit()函數 172
6.8 變量的作用域規則與存儲類別 172
6.8.1 局部變量和全局變量 173
6.8.2 變量的存儲類別 176
6.8.3 內部函數和外部函數 181
6.9 程序舉例 183
本章小結 186
習題六 187
第7章 用戶自定義類型 193
7.1 結構體 193
7.1.1 結構體類型定義 193
7.1.2 結構體類型變量、數組和指針的定義 195
7.1.3 結構體類型變量、數組和指針的初始化 197
7.1.4 結構體類型變量的引用 198
7.1.5 結構體應用舉例 200
7.1.6 結構體指針與函數 204
7.1.7 位域 206
7.2 動態存儲分配 207
7.2.1 內存的分配與釋放 208
7.2.2 內存動態分配應用舉例 210
7.3 共用體 216
7.3.1 共用體類型的定義 217
7.3.2 共用體變量定義 217
7.4 枚舉類型 219
7.4.1 枚舉類型的定義 219
7.4.2 枚舉類型數據的使用 220
7.5 類型標識符的定義 221
本章小結 221
習題七 222
第8章 文件 225
8.1 文件概述 225
8.1.1 文件的基本概念 225
8.1.2 文件類型和常用函數 226
8.1.3 文件類型指針 227
8.2 文件的打開與關閉 228
8.2.1 文件的打開 228
8.2.2 文件的關閉 229
8.3 文件的讀/寫 229
8.3.1 順序文件的讀/寫 230
8.3.2 隨機文件的讀/寫 236
8.4 程序舉例 239
本章小結 242
習題八 243
第9章 編譯預處理 245
9.1 宏定義 245
9.1.1 不帶參數的宏定義 246
9.1.2 帶參數的宏定義 248
9.2 文件包含 251
9.3 條件編譯 253
本章小結 255
習題九 256
第10章 上機實驗 258
實驗一 C語言程序的運行環境和運行過程 259
實驗二 簡單程序設計 263
實驗三 分支結構和循環結構程序設計(1) 263
實驗四 分支結構和循環結構程序設計(2) 264
實驗五 數組應用和字符串處理程序設計 265
實驗六 指針應用程序設計 266
實驗七 模塊化程序設計 266
實驗八 結構體應用和文件操作程序設計 267
附錄A ASCII碼字符表 269
附錄B C語言運算符 270
附錄C 位運算 271
附錄D 常用的C庫函數 273
附錄E 實驗報告 279
附錄F Visual C++常見錯誤 280
參考文獻 284