C語言從誕生之日起就一直保持著旺盛的生命力,在不斷地發展壯大、日臻完善,已經成為目前使用最廣泛的編程語言之一。與其他高級語言相比,C語言處理功能豐富,表達能力強,使用靈活方便,執行程序效率高,可移植性強;具有豐富的數據類型和運算符,語句非常簡單,源程序簡潔清晰;可以直接處理硬件繫統和對外圍設備接口進行控制。同時C語言是一種結構化的程序設計語言,支持自頂向下、逐步求精的結構化程序設計技術。另外,C語言程序的函數結構也為實現程序的模塊化設計提供了強有力的保障。因此雖然有C++、Java這樣的後繼者,但到目前為止,它們依然沒有取代C的跡像。尤其C99標準發布以後,C語言的旺盛生命力再次得到了保持和延續。
本教材的編寫者全部是長期在各高等學校教學一線、承擔“C語言程序設計”課程的教學任務的大學教師,這些老師有豐富的教學經驗,並長期從事C語言編程工作,並有著將自己積累的“C語言程序設計”經驗介紹給大家的強烈願望,因為在教學實踐中,作者感受最深的就是,學習者普遍反映C語言難學難懂,而事實上,學習者感覺難的部分往往並不是C語言的核心內容,學習的過程就是一個學習者與教師、學習者與教材交互的過程,隻要遵照一定的學習規律,這個交互過程並不難達成。學習者應該明白選擇一本交互性好的教材是至關重要的。不可否認,一些經典的C語言教材在教學中所起的巨大作用。但是,傳統教材過細的內容組織也讓學習者迷失了方向。另外,本教材也特別強調實踐能力的培養,學習者首先應該學會用適當的編程工具編制、調試程序。學習者在編程實踐中不斷遇到問題、不斷解決問題,自然就會明白許多細節。本教材主張,在介紹核心語法的基礎上,以培養動手編程能力為首要目標,把那些煩瑣煩心的內容留待以後慢慢研究。
本教材共分13章,將C語言的內容由淺入深、層次分明地講述給讀者。把編譯預處理從一般教材的第7章提前到了第3章,讓讀者更早地接觸到相關的內容,以方便在編程中使用。
第1章“程序設計基礎”介紹了程序設計的基本知識,詳細闡述了軟件的編制方法,使學習者對軟件的編制有一個概念上的認識和理解,並能將這些方法應用於後續章節的學習中,同時對計算思維的概念進行簡單的介紹。
第2章“數據類型、運算符與表達式”介紹了C語言的中的變量與常量、基本數據類型,常用的運算符及表達式的運算方式。最後詳細地講述了不同類型數據之間的轉換。
第3章“編譯預處理”介紹了C語言中編譯預處理的相關命令,包括宏定義和宏替換、文件包含(又稱頭文件)、條件編譯。
第4章“選擇結構”介紹了分支結構的相關語法,使學習者能夠解決分支結構所涉及的問題。
第5章“循環結構”介紹了循環結構的相關語法,使學習者能夠解決循環結構所涉及的問題。
第6章“函數”介紹了函數的相關知識,重點介紹了基本使用方法、函數參數的傳值調用和傳址調用,使學習者能夠綜合使用函數參數的傳值調用和傳址調用來解決實際問題。
第7章“數組”介紹了C語言中數值型一維數組和二維數組的相關知識,使學習者能夠熟練使用函數來解決數組的相關問題。
第8章“字符數組與字符串”介紹了字符串與字符數組的相關知識,使學習者能夠處理與字符串和字符數組相關的問題。
第9章“結構和聯合”介紹了結構和聯合的基本概念,使學生能夠綜合使用數組、指針以及結構和聯合來解決一些實際問題。
第10章“文件”介紹了文件的概念以及處理文件問題所涉及到的函數,使學生在掌握常用文件函數的基礎上來解決一些實際問題。
第11章“指針與鏈表”介紹了指針的高級使用,使學習者能夠處理涉及指針數組、函數指針和指針函數的相關問題,同時,介紹了單鏈表的概念、創建、操作、輸出等。
第12章“位運算”介紹了位運算的相關知識,使學生對位運算有一個較為繫統的認識並能夠使用所學的位運算知識解決相關問題。
第13章“從C到C++”介紹了C與C++在基本操作上的區別,以使讀者對C++的基本操作有初步的了解。
在本教材的編寫過程中參考了許多同行的著作,有的甚至還不方便列在參考目錄中,作者在此一並表達感謝之情。以上各部分都可以獨立教學,自成體繫。教師可根據情況適當取舍。感謝鄭州輕工業學院和電子工業出版社的大力支持。
本書由鄭州輕工業學院的尚展壘、王鵬遠、陳嫄玲等編著,參加本書編寫的還有鄭州輕工業學院的蘇虹、李萍,其中尚展壘任主編,王鵬遠、陳嫄玲、蘇虹、李萍任副主編。第1、5章由陳嫄玲編寫,第2、6章由蘇虹編寫,第3、9、12章由尚展壘編寫,第4、8章由李萍編寫,第7、10、11、13章和附錄由王鵬遠編寫。在組織編寫的過程中,尚展壘負責本書的審稿工作,王鵬遠負責本書的統稿工作。
如果您能夠愉快地讀完本教材,並告之身邊的朋友,原來C語言並不難學,那就是作者最大的欣慰。盡管作者盡了最大努力,也有良好而負責任的態度,但是由於作者學識所限,難免存在缺點和錯誤,從而影響寫作目的,因此,懇請各位讀者批評指正,以在再版時修訂。
編著者