《C語言大學教程(第6版)》是全球暢銷的C語言教程之一。《C語言大學教程(第6版)》系統地介紹了4種當今流行的程序設計方法--面向過程、基于對象、面向對象以及泛型編程,內容全面、生動、易懂,作者由淺入深地介紹了結構化編程及軟件工程的基本概念,從簡單的概念到最終的完整的語言描述,清晰、準確、透徹、詳細地講解了C語言,尤其注重程序設計思想和方法的介紹。
相對于上一版,這一版在內容方面新增加了C安全程序設計、“更上一層樓”練習集,更新了C++和面向對象程序設計、基于Allegro的游戲編程、C99標準介
譯者序
這是一本極具吸引力的引進版C語言教材,雖然譯者本人曾多年從事C語言教學,也曾編寫C語言教材,但這本書依然讓譯者愛不釋手。相信您在閱讀本書之后也會有同樣的感受。
本書的權威性毋庸置疑。本書作者的著作曾被翻譯成日文、德文、俄文、西班牙文、繁體中文、簡體中文、韓文、法文、波蘭文、意大利文、葡萄牙文、希臘文、烏爾都文和土耳其文,并擁有非常完備的網絡教學資源,從中可看出作者的細心、精心與用心。
講述C語言的書籍很多,其中不乏優秀和經典之作,在如此眾多的C語言書籍中,本書依然脫穎而出,長期保持旺銷的記錄,可見本書的受歡迎程度。
一本書能夠獲得如此多國家的讀者的認可與喜愛,恐怕并不多見。
現在譯者翻譯的是本書的第六版。相對于前幾版而言,這一版做了大量修訂,新增加了C安全程序設計、“更上一層樓”練習集,更新了C++和面向對象程序設計、基于Allegro的游戲編程、C99標準介紹,并且在附錄中增加了VisualC++2008和GNUgdb調試的內容。
本書的特色在前言中已有敘述,譯者從讀者角度看,認為其最重要、最難得的三個特色如下:
1.內容寬廣,講解細致,有深度。不同于那種單純的面面俱到的介紹方式,作者能夠從更深入的層次去解釋C語言的特性,讓讀者不僅知其然而且知其所以然,簡單地說,就是讓讀者懂得“為什么”。
2.實例豐富,面向應用。幾乎每一個實例都是來源于實際應用的,同時又是那么地有趣,讓讀者不僅通過實例理解和掌握C語言的特性,而且還懂得了如何運用這些特性去解決生活中的實際問題。這也許是本書最引人入勝的地方了。
3.相對于那些單純介紹C語言語法知識的書籍而言,本書另一個與眾不同的特色就是在內容講解的同時,適時穿插了一些“良好的編程習慣”、“常見的編程錯誤”、“錯誤預防提示”、“性能提示”、“可移植性提示”、“軟件工程視點”等提示信息。這些小貼士讓讀者能夠站在更高的角度上去審視C語言的特性,進一步加深對內容的理解。
本書各章的正文由蘇小紅、李東、王甜甜完成完成,譯者在個別地方修改了原著的一些筆誤。翻譯內容的審核工作由馬培軍、黃虎杰、王宇穎和郭茂祖教授負責。前言、附錄和索引的翻譯由馬建芬完成。馬吉權、楊景景、孫志崗、趙巍、車萬翔、張彥航、傅忠傳、張衛、溫東新、侯俊英、郭萍、李希然、秦兵、陳惠鵬、孫大烈、李秀坤、徐志明、唐好選、單麗莉、劉旭東、劉國軍、張洪志、郭勇、王慶北分別參與了第1-24章習題的翻譯工作,郝惠馨、婁久、李漾參與了全部書稿的文字校對工作。在此對全部參與本書翻譯和校對工作的人員的辛勤付出表示衷心的感謝,沒有大家的密切合作,本書不可能順利完稿。
本書全部譯稿的完成用了近兩年的時間,雖然經過反復推敲和字斟句酌,但錯誤或不準確之處也在所難免,歡迎讀者來信批評指正。
最后譯者想對讀者說的是,初識本書,您千萬不要被本書的篇幅所嚇倒,翻開它,那些智慧的火花就像黑暗中的明燈一樣,一定會照亮您學習C語言的征程。相信我們吧,千萬不要錯過。
譯者
2011年11月于哈爾濱工業大學
計算機科學與技術學院
第1章 計算機、Internet 和萬維網導論
1.1 引言
1.2 計算機:硬件和軟件
1.3 計算機組成
1.4 個人計算、分布式計算和客戶/服務器計算
1.5 因特網和萬維網
1.6 機器語言、匯編語言和高級語言
1.7 C語言的發展歷史
1.8 C語言標準庫
1.9 C++語言
1.10 Java語言
1.11 著名的高級語言Fortran,COBOL,Pascal 和Ada
1.12 BASIC,Visual Basic,Visual C++ ,Visual C#語言和.NET編程平臺
1.13 軟件發展的重要趨勢:對象技術
1.14 典型的C語言程序開發環境
1.15 硬件的發展趨勢
1.16 關于C語言和本書的一些注解
1.17 有價值的Web站點
第2章 C語言程序設計入門
2.1 引言
2.2 一個簡單的C程序:打印一行文字
2.3 另一個簡單的C程序:兩個整數求和
2.4 存儲單元的基本概念
2.5 C語言中的算術運算
2.6 做出判斷:相等和關系運算符
第3章 結構化的C程序設計
3.1 引言
3.2 算法
3.3 偽碼
3.4 控制結構
3.5 if選擇語句
3.6 if else選擇語句
3.7 while循環語句
3.8 算法設計案例1:計數控制的循環
3.9 自頂向下、逐步求精的算法設計案例2:標記控制的循環
3.10 自頂向下、逐步求精的算法設計案例3:嵌套的控制結構
3.11 賦值運算符
3.12 增1和減1運算符
第4章 C程序控制
4.1 引言
4.2 循環的基本原理
4.3 計數控制的循環
4.4 for循環語句
4.5 for循環語句:注意事項
4.6 應用for循環語句的例子
4.7 switch多重選擇語句
4.8 do while循環語句
4.9 break和continue 語句
4.10 邏輯運算符
4.11 區分相等運算符(==)和賦值運算符(=)
4.12 結構化程序設計總結
第5章 C函數
5.1 引言
5.2 C語言中的程序模塊
5.3 數學庫函數
5.4 函數
5.5 函數定義
5.6 函數原型
5.7 函數調用堆棧及活動記錄
5.8 頭文件
5.9 按值或按引用調用函數
5.10 隨機數的生成
5.11程序案例:運氣游戲
5.12 存儲類型
5.13 標識符作用域的規定
5.14 遞歸
5.15 使用遞歸的例子:Fibonacci數列
5.16 遞歸與迭代
第6章 C數組
6.1 引言
6.2 數組
6.3 數組的定義
6.4 數組的應用舉例
6.5 向函數傳遞數組
6.6 數組元素的排序
6.7 案例分析:采用數組來計算平均值、中值和眾數
6.8 數組元素的查找
6.9 多下標數組
第7章 C指針
7.1 引言
7.2 指針變量的定義和初始化
7.3 指針運算符
7.4 按引用向函數傳遞實參
7.5 對指針使用const 限定符
7.6 使用按引用調用方法實現冒泡法排序
7.7 sizeof 運算符
7.8 指針表達式和指針運算
7.9 指針和數組的關系
7.10 指針數組
7.11 案例學習:撲克牌洗牌和發牌模擬
7.12 函數指針
第8章 C 字符和字符串
8.1 引言
8.2 字符串和字符基礎
8.3 字符處理函數庫
8.4 字符串轉換函數
8.5 標準輸入輸出庫函數
8.6 字符串處理函數庫中的字符串處理函數
8.7 字符串處理函數庫中的比較函數
8.8 字符串處理函數庫中的查找函數
8.9 字符串處理函數庫中的內存函數
8.10 字符串處理函數庫中的其他函數
第9章 格式化輸入/ 輸出
9.1 引言
9.2 流
9.3 用printf 函數實現格式化輸出
9.4 打印整數
9.5 打印浮點數
9.6 打印字符串或字符
9.7 其他的轉換說明符
9.8 帶域寬和精度的打印
9.9 在printf 函數的格式控制字符串中使用標記
9.10 打印文本和轉義序列
9.11 用scanf 函數讀取格式化的輸入
第10章 結構體、共用體、位操作和枚舉類型
10.1 引言
10.2 結構體的定義
10.3 結構體的初始化
10.4 對結構體成員的訪問
10.5 在函數中使用結構體
10.6 typedef 的使用
10.7 實例:高性能的洗牌與發牌模擬
10.8 共用體
10.9 位運算符
10.10 位域
10.11 枚舉常量
第11章 文件處理
11.1 引言
11.2 數據的層次結構
11.3 文件與流
11.4 順序存取文件的創建
11.5 從順序存取文件中讀取數據
11.6 隨機存取文件
11.7 隨機存取文件的創建
11.8 隨機地向一個隨機存取文件中寫入數據
11.9 從一個隨機存取文件中讀取數據
11.10 案例學習:事務處理程序
第12章 數據結構
12.1 引言
12.2 自引用結構體
12.3 動態內存分配
12.4 鏈表
12.5 堆棧
12.6 隊列
12.7 樹
第13章 C 預處理
13.1 引言
13.2 #include 預處理命令
13.3 #define 預處理命令:符號常量
13.4 #define 預處理命令:宏
13.5 條件編譯
13.6 #error 和#pragma 預處理命令
13.7 #和##運算符
13.8 行號
13.9 預定義的符號常量
13.10 斷言
第14章 C語言的其他專題
14.1 引言
14.2 I/ O 的重定向
14.3 可變長的實參列表
14.4 使用命令行實參
14.5 由多個源文件組成的程序的編譯問題
14.6 使用exit 和atexit 終止程序
14.7 volatile 類型限定符
14.8 整型和浮點型常量的后綴
14.9 關于文件的深入討論
14.10 信號處理
14.11 動態內存分配:函數calloc 和realloc
14.12 用goto 實現無條件轉移
第15章 C++ :介紹對象技術
15.1 簡介
15.2 C++
15.3 簡單程序:兩個整數相加
15.4 C++ 標準庫
15.5 頭文件
15.6 內聯函數
15.7 引用和引用形參
15.8 空形參列表
15.9 默認實參
15.10 一元作用域運算符
15.11 函數重載
15.12 函數模板
15.13 對象技術與UML 簡介
15.14 本章小結
第16章 類與對象簡介
16.1 簡介
16.2 類、對象、成員函數以及數據成員
16.3 定義一個具有成員函數的類
16.4 定義一個有參成員函數
16.5 數據成員、set 函數與get 函數
16.6 用構造函數初始化對象
16.7 將類放在單獨的文件中以增強重用性
16.8 將接口與實現分離
16.9 用set