《C程序設計實用教程》是作者多年以譚浩強先生的《C程序設計》為教材從事C語言教學的經驗、應用和研究成果的總結,在很多方面還有所延伸和創新。本書能夠加深讀者的理解,開闊讀者的視野,提高讀者的編程能力。本書面向應用,注重算法應用和解題方法,將函數和指針視為家常便飯。全書突出了計算思維的運用。
全書共分7章,內容包括C語言概述、分支與循環、數組與結構體、指針與鏈表、遞歸、文件操作和程序設計競賽介紹。
電子數字計算機和Internet的出現縮短了人與人之間的距離,在時間、空間、情感和思維等多個方面改變了人類的生活、生產和思維方式,把人類社會推向了一個嶄新的階段。現在,世界上已經幾乎沒有人能夠避免與計算機直接或間接地打交道了。但計算機并不能理解人們的情感、行為和語言,人們與計算機的“交往”一般是通過計算機的操作系統調度執行各種程序來實現的。而程序是按照一定規則組織起來實現一定功能或完成一定任務的計算機指令集合,是計算機能夠“理解”的語言。最常見的程序是 *.exe文件。
要得到一個計算機程序,首先要用計算機編程語言編寫相應的源程序。在計算機編程語言發展的早期,操作系統(如UNIX、DOS)等系統軟件甚至一些應用軟件主要是用匯編語言編寫的。用匯編程序對一個正確的匯編語言源程序進行匯編、鏈接就得到一個程序。由于匯編語言是低級編程語言,它直接針對計算機硬件,因此只有非常了解計算機硬件才能編寫匯編語言程序。這樣一來,用匯編語言所編寫的系統軟件和應用程序的可讀性和可移植性都比較差,而且程序編寫和維護的難度也很大,因此匯編語言不能為廣大計算機應用人員和計算機編程人員所普遍接受。于是各種高級編程語言(高級語言)就應運而生了。人們熟知的高級語言有BASIC語言、FORTRAN語言、PASCAL語言、C語言和C++語言等,現在更有Visual BASIC、Visual C++、C#和Java等可視化的面向對象的高級編程語言。
用高級語言編寫的源程序也是計算機不能直接執行的。BASIC語言源程序(程序)的每一次執行必須通過BASIC解釋程序進行解釋,邊解釋邊執行; 解釋程序的作用就像外交場合的“同聲翻譯”一樣。其他高級語言源程序要經過相應語言的編譯系統編譯、鏈接成計算機程序,才能執行; 編譯系統的作用就像外交場合的“書面翻譯”一樣,只要翻譯一次,得到的程序一般就可以在不同的機器上多次執行。
然而,一般高級語言難以實現匯編語言的某些功能(如地址操作和位操作等)。人們需要一種既具有低級語言優點,又具有一般高級語言優點的高級語言。C語言正是集二者之優點于一身的當之無愧的高級語言,它是國內外廣泛使用的執行效率最高且可以直接操作硬件的計算機編程語言。C語言既可以用來開發系統軟件,也可以用來編寫應用軟件,甚至在某些場合可以用來代替匯編語言開發硬件驅動程序。因而C語言是計算機專業人員和計算機應用人員都應當掌握的一種高級編程語言。
國內最著名的C語言教科書莫過于譚浩強先生的《C程序設計》。以譚先生的著作為藍本的其他C語言教科書也非常多。本書是作者多年以譚先生著作為教材從事C語言教學的經驗、應用和研究成果的總結,在許多方面還有所延伸和創新。本書能夠加深讀者的理解,開闊讀者的視野,提高讀者的編程能力。本書面向應用,將C語言的絕大多數理論和語法集中在第1章講解,以便使讀者從整體上系統地了解和掌握,而其他章節主要講述算法應用和解題方法。由于函數的重要性并為了突出模塊化程序設計的思想,本書從第1章就開始使用函數,而未將函數單獨列章; 又由于指針的困難性,本書也從第1章就開始使用指針以加強訓練; 總之,本書將函數和指針視為家常便飯。另外,由于共用體類型和位運算都很少使用,本書沒有展開講解它們,對枚舉類型講述也較少。
全書共分7章,其中,第1章和第5章由周煒執筆,第2章由周煒、徐云飛執筆,第3章由周煒、雷曉莉執筆,第4章由鐘紅艷執筆,第6章和第7章由王曉楠執筆,附錄A由王曉楠制作。全書由周煒策劃、修改和統稿。第1章集中了C語言除文件操作以外的大部分理論和語法,因而值得結合有關章節反復研讀和練習。電子課件由徐云飛制作。
本書可以作為國內高校各層次、各專業C語言程序設計課程的教材和參考書,也可以作為國家計算機等級考試和國內外各種程序設計大賽的復習、參考和強化訓練用書。
在本書中,對“程序”和“源程序”兩個術語不加區別,請讀者根據上下文理解。
本書大部分內容曾在空軍工程大學防空反導學院本科生和大專生中講授多年。本書以Turbo C++3.0為主要平臺,兼顧Turbo C 2.0和Microsoft Visual C++6.0。由于作者水平有限,書中(特別是例程序中)一定還有作者未發現的錯誤、缺點和紕漏。懇請廣大讀者批評指正,作者不勝感激!
周煒
2014年6月