內容簡介
《國外計算機科學教材系列:C語言大學教程(第6版)》:自20世紀90年代以來,超過一百萬的學生和專業人士通過Deitel的“大學教程”系列教材學習如何編程和軟體開發。《C語言大學教程》(第六版)詳細介紹了三種當今流行的程式設計方法——C過程式程式設計,C++面向對象程式設計和C++泛型程式設計。《國外計算機科學教材系列:C語言大學教程(第6版)》適用於初級和中級C/C++程式設計課程。主要內容新增了“更上一層樓”練習題。內部設計做了更新,以圖形方式使內容層次更清晰、重點更突出,並增強了《國外計算機科學教材系列:C語言大學教程(第6版)》的教育功能。C99附錄更加完善,相應的關鍵字及術語都能在書中找到。對查找和排序算法引入了大O時間複雜度計算的介紹。基於AllegroC函式館的遊戲編程。新增了介紹Visual C++ 2008和GNUgdb調試內容的附錄。更新了C++面向對象程式設計的內容。C安全程式設計資源中心。在Visual C++2008/GNUGCC4.3中運行代碼。新增了函式指針練習。
C過程式程式設計、控制語句、程式開發、函式、數組、指針、字元串、輸入/輸出、檔案、結構體、共用體、“更上一層樓”練習題、位操作、枚舉、C99、數據結構、遊戲編程、GNUgdb與VisualC++調試器、C++面向對象程式設計、C++,更好的C、輸入/輸出、類、對象、重載、繼承、多態、模板、異常處理。
《國外計算機科學教材系列:C語言大學教程(第6版)》是全球暢銷的C語言教程之一。全書系統地介紹了4種當今流行的程式設計方法——面向過程、基於對象、面向對象以及泛型編程,內容全面、生動、易懂,作者由淺入深地介紹了結構化編程及軟體工程的基本概念,從簡單的概念到最終的完整的語言描述,清晰、準確、透徹、詳細地講解了C語言,尤其注重程式設計思想和方法的介紹。相對於上一版,這一版在內容方面新增加了C安全程式設計、“更上一層樓”練習集,更新了C++和面向對象程式設計、基於Allegro的遊戲編程、C99標準介紹等內容。“活代碼”方法(即通過可執行的代碼來講解理論概念的方法)是《國外計算機科學教材系列:C語言大學教程(第6版)》的另一特色,它可以促進學生積極地參與到程式設計中來。被突出顯示的各種程式設計提示,則是作者多年教學的經驗總結。《國外計算機科學教材系列:C語言大學教程(第6版)》不僅適合於初學者學習,作為高校電腦程式設計教學的教科書,也同樣適用於有經驗的程式設計師,作為軟體開發人員的專業參考書。
作者簡介
作者:(美國)戴特爾 (Paul Deitel) (美國)戴特爾 (Harvey Deitel) 譯者:蘇小紅 等
作品目錄
第1章 計算機、Internet 和全球資訊網導論 1
1.1 引言 2
1.2 計算機:硬體和軟體 3
1.3 計算機組成 3
1.4 個人計算、分散式計算和客戶/伺服器計算 4
1.5 網際網路和全球資訊網 4
1.6 機器語言、彙編語言和高級語言 4
1.7 C語言的發展歷史 5
1.8 C語言標準庫 6
1.9 C++語言 7
1.10 Java語言 7
1.11 著名的高級語言Fortran,COBOL,Pascal 和Ada 7
1.12 BASIC,Visual Basic,Visual C++ ,Visual C#語言和.NET編程平台 8
1.13 軟體發展的重要趨勢:對象技術 8
1.14 典型的C語言程式開發環境 9
1.15 硬體的發展趨勢 11
1.16 關於C語言和本書的一些註解 11
1.17 有價值的Web站點 12
第2章 C語言程式設計入門 19
2.1 引言 20
2.2 一個簡單的C程式:列印一行文字 20
2.3 另一個簡單的C程式:兩個整數求和 23
2.4 存儲單元的基本概念 26
2.5 C語言中的算術運算 27
2.6 做出判斷:相等和關係運算符 30
第3章 結構化的C程式設計 43
3.1 引言 44
3.2 算法 44
3.3 偽碼 44
3.4 控制結構 44
3.5 if選擇語句 46
3.6 if else選擇語句 47
3.7 while循環語句 49
3.8 算法設計案例1:計數控制的循環 50
3.9 自頂向下、逐步求精的算法設計案例2:標記控制的循環 52
3.10 自頂向下、逐步求精的算法設計案例3:嵌套的控制結構 57
3.11 賦值運算符 60
3.12 增1和減1運算符 60
第4章 C程式控制 77
4.1 引言 78
4.2 循環的基本原理 78
4.3 計數控制的循環 78
4.4 for循環語句 79
4.5 for循環語句:注意事項 81
4.6 套用for循環語句的例子 82
4.7 switch多重選擇語句 85
4.8 do while循環語句 89
4.9 break和continue 語句 90
4.10 邏輯運算符 91
4.11 區分相等運算符(==)和賦值運算符(=) 93
4.12 結構化程式設計總結 94
第5章 C函式 110
5.1 引言 111
5.2 C語言中的程式模組 111
5.3 數學庫函式 112
5.4 函式 113
5.5 函式定義 113
5.6 函式原型 116
5.7 函式調用堆疊及活動記錄 118
5.8 頭檔案 118
5.9 按值或按引用調用函式 119
5.10 隨機數的生成 119
5.11程式案例:運氣遊戲 123
5.12 存儲類型 126
5.13 標識符作用域的規定 128
5.14 遞歸 130
5.15 使用遞歸的例子:Fibonacci數列 133
5.16 遞歸與疊代 135
第6章 C數組 154
6.1 引言 155
6.2 數組 155
6.3 數組的定義 156
6.4 數組的套用舉例 156
6.5 向函式傳遞數組 166
6.6 數組元素的排序 169
6.7 案例分析:採用數組來計算平均值、中值和眾數 171
6.8 數組元素的查找 174
6.9 多下標數組 178
第7章 C指針 198
7.1 引言 199
7.2 指針變數的定義和初始化 199
7.3 指針運算符 200
7.4 按引用向函式傳遞實參 201
7.5 對指針使用const 限定符 204
7.6 使用按引用調用方法實現冒泡法排序 209
7.7 sizeof 運算符 211
7.8 指針表達式和指針運算 213
7.9 指針和數組的關係 215
7.10 指針數組 218
7.11 案例學習:撲克牌洗牌和發牌模擬 218
7.12 函式指針 222
第8章 C 字元和字元串 242
8.1 引言 243
8.2 字元串和字元基礎 243
8.3 字元處理函式館 244
8.4 字元串轉換函式 248
8.5 標準輸入輸出庫函式 251
8.6 字元串處理函式館中的字元串處理函式 254
8.7 字元串處理函式館中的比較函式 256
8.8 字元串處理函式館中的查找函式 258
8.9 字元串處理函式館中的記憶體函式 262
8.10 字元串處理函式館中的其他函式 265
第9章 格式化輸入/ 輸出 279
9.1 引言 280
9.2 流 280
9.3 用printf 函式實現格式化輸出 280
9.4 列印整數 281
9.5 列印浮點數 282
9.6 列印字元串或字元 283
9.7 其他的轉換說明符 284
9.8 帶域寬和精度的列印 285
9.9 在printf 函式的格式控制字元串中使用標記 286
9.10 列印文本和轉義序列 288
9.11 用scanf 函式讀取格式化的輸入 289
第10章 結構體、共用體、位操作和枚舉類型 300
10.1 引言 301
10.2 結構體的定義 301
10.3 結構體的初始化 303
10.4 對結構體成員的訪問 303
10.5 在函式中使用結構體 304
10.6 typedef 的使用 305
10.7 實例:高性能的洗牌與發牌模擬 305
10.8 共用體 307
10.9 位運算符 309
10.10 位域 315
10.11 枚舉常量 318
第11章 檔案處理 328
11.1 引言 329
11.2 數據的層次結構 329
11.3 檔案與流 330
11.4 順序存取檔案的創建 330
11.5 從順序存取檔案中讀取數據 334
11.6 隨機存取檔案 338
11.7 隨機存取檔案的創建 338
11.8 隨機地向一個隨機存取檔案中寫入數據 340
11.9 從一個隨機存取檔案中讀取數據 342
11.10 案例學習:事務處理程式 343
第12章 數據結構 356
12.1 引言 357
12.2 自引用結構體 357
12.3 動態記憶體分配 358
12.4 鍊表 359
12.5 堆疊 365
12.6 佇列 369
12.7 樹 373
第13章 C 預處理 388
13.1 引言 389
13.2 #include 預處理命令 389
13.3 #define 預處理命令:符號常量 389
13.4 #define 預處理命令:宏 389
13.5 條件編譯 391
13.6 #error 和#pragma 預處理命令 392
13.7 #和##運算符 392
13.8 行號 392
13.9 預定義的符號常量 393
13.10 斷言 393
第14章 C語言的其他專題 397
14.1 引言 398
14.2 I/ O 的重定向 398
14.3 可變長的實參列表 398
14.4 使用命令行實參 400
14.5 由多個源檔案組成的程式的編譯問題 401
14.6 使用exit 和atexit 終止程式 402
14.7 volatile 類型限定符 403
14.8 整型和浮點型常量的後綴 403
14.9 關於檔案的深入討論 404
14.10 信號處理 405
14.11 動態記憶體分配:函式calloc 和realloc 407
14.12 用goto 實現無條件轉移 407
第15章 C++ :介紹對象技術 413
15.1 簡介 414
15.2 C++ 414
15.3 簡單程式:兩個整數相加 414
15.4 C++ 標準庫 416
15.5 頭檔案 416
15.6 內聯函式 417
15.7 引用和引用形參 419
15.8 空形參列表 423
15.9 默認實參 423
15.10 一元作用域運算符 424
15.11 函式重載 425
15.12 函式模板 427
15.13 對象技術與UML 簡介 429
15.14 本章小結 431
第16章 類與對象簡介 437
16.1 簡介 438
16.2 類、對象、成員函式以及數據成員 438
16.3 定義一個具有成員函式的類 439
16.4 定義一個有參成員函式 441
16.5 數據成員、set 函式與get 函式 443
16.6 用構造函式初始化對象 447
16.7 將類放在單獨的檔案中以增強重用性 450
16.8 將接口與實現分離 452
16.9 用set 函式驗證數據 456
16.10 本章小結 460
第17章 類:深入剖析(1) 466
17.1 簡介 467
17.2 Time 類的案例學習 467
17.3 類域和訪問類的成員 472
17.4 將接口與實現分離 473
17.5 訪問函式和工具函式 473
17.6 Time 類的案例學習:具有默認實參的構造函式 475
17.7 析構函式 479
17.8 構造函式與析構函式的調用時間 479
17.9 Time 類的案例學習:隱蔽陷阱——-返回private 數據成員的引用 482
17.10 默認按成員賦值 483
17.11 本章小結 485
第18章 類:深入剖析(2) 490
18.1 簡介 491
18.2 const 對象和const 成員函式 491
18.3 組合:對象作為類的成員 497
18.4 友元函式和友元類 501
18.5 使用this 指針 503
18.6 static 類成員 507
18.7 數據抽象和信息隱藏 510
18.8 本章小結 511
第19章 運算符重載 517
19.1 簡介 518
19.2 運算符重載基礎 518
19.3 運算符重載的限制 519
19.4 作為類的成員和作為全局函式的運算符函式的比較 520
19.5 重載流插入和流讀取運算符 521
19.6 重載一元運算符 523
19.7 重載二元運算符 524
19.8 動態記憶體管理 524
19.9 案例學習:Array 類 525
19.10 類型轉換 534
19.11 創建String 類 534
19.12 重載++ 和—— 535
19.13 案例學習:Date 類 536
19.14 標準庫類string 540
19.15 explicit 構造函式 542
19.16 代理類 544
19.17 本章小結 546
第20章 面向對象編程:繼承 556
20.1 簡介 557
20.2 基類和派生類 557
20.3 protected 成員 559
20.4 基類和派生類的關係 559
20.5 派生類的構造函式與析構函式 580
20.6 public、protected 和private 繼承 586
20.7 關於繼承的軟體工程 586
20.8 本章小結 587
第21章 面向對象編程:多態 591
21.1 簡介 592
21.2 多態的實例 592
21.3 繼承層次結構中對象間的關係 593
21.4 類型域和switch 語句 605
21.5 抽象類和純虛函式 605
21.6 案例學習:利用多態的工資系統 607
21.7 (選講)多態、虛函式以及動態聯編 618
21.8 案例學習:利用多態的和運行時類型信息的工資系統,通過向下類型轉換、
dynamic_cast、typeid 以及type_info 使用運行時類型信息 621
21.9 虛析構函式 624
21.10 本章小結 624
第22章 模板 629
22.1 簡介 630
22.2 函式模板 630
22.3 重載函式模板 632
22.4 類模板 633
22.5 類模板的非類型形參和默認類型 637
22.6 模板與繼承 638
22.7 模板與友元 638
22.8 模板與static 成員 639
22.9 本章小結 639
第23章 輸入/ 輸出流 643
23.1 簡介 644
23.2 流 644
23.3 輸出流 646
23.4 輸入流 647
23.5 用read、write 和gcount 進行無格式I/ O 650
23.6 流操縱符簡介 651
23.7 流格式狀態和流操縱符 654
23.8 流錯誤狀態 660
23.9 將輸出流綁定到輸入流上 662
23.10 本章小結 662
第24章 異常處理 672
24.1 簡介 673
24.2 異常處理概述 673
24.3 實例:處理除數為0 的異常 674
24.4 何時使用異常處理 677
24.5 重新拋出異常 678
24.6 異常規範 679
24.7 處理意外異常 680
24.8 棧展開 680
24.9 構造函式、析構函式與異常處理 681
24.10 異常與繼承 682
24.11 處理new 故障 682
24.12 auto_ptr 類與動態記憶體分配 684
24.13 標準庫的異常層次結構 686
24.14 其他錯誤處理技術 687
24.15 本章小結 687
附錄A 運算符優先權表 693
附錄B ASCII 字元集 696
附錄C 數制系統 697
附錄D 遊戲編程:解決數獨問題 707
Web 網站中提供的附錄 713
索引 714