第1章 計算機、Internet和萬維網入門 1
1.1 簡介 1
1.2 計算機是什么 3
1.3 計算機的組織 3
1.4 操作系統(tǒng)的演變 4
1.5 個人計算、分布計算和客戶/服務器
計算 5
1.6 機器語言、匯編語言和高級語言 5
1.7 C語言的歷史 7
1.8 C語言的標準庫 8
1.9 重要的軟件發(fā)展趨勢:面向對象的
技術 8
1.10 C++語言以及C++編程 10
1.11 Java語言以及Java編程 11
1.12 其他高級語言 11
1.13 結構化編程 12
1.14 C程序開發(fā)環(huán)境基礎 12
1.15 硬件趨勢 15
1.16 Internet的歷史 15
1.17 萬維網的歷史 17
1.18 C語言及本書的注意事項 17
自測練習 18
練習 19
第2章 C程序設計入門 21
2.1 簡介 21
2.2 一個簡單的C程序:顯示一行文本 21
2.3 另一個簡單的C程序:兩個整數相加 25
2.4 內存的概念 29
2.5 C的算術運算 30
2.6 判斷:等式和關系運算符 34
自測練習 37
練習 41
第3章 C語言結構化程序開發(fā) 46
3.1 簡介 46
3.2 算法 46
3.3 偽代碼 47
3.4 控制結構 47
3.5 if 選擇結構 49
3.6 if/else選擇結構 51
3.7 while循環(huán)結構 55
3.8 表述算法:案例研究1(計數器控制
的循環(huán)) 56
3.9 使用自頂向下、逐步求精方法表述
算法:案例研究2(標記控制循環(huán)) 58
3.10 使用自頂向下、逐步求精方法表述
算法:案例研究3(嵌套控制結構) 64
3.11 賦值運算符 68
3.12 遞增運算符和遞減運算符 68
自測練習 71
練習 75
第4章 C程序控制 85
4.1 簡介 85
4.2 循環(huán)的本質 85
4.3 計數器控制的循環(huán) 86
4.4 for循環(huán)結構 88
4.5 for結構:說明和觀察 90
4.6 使用for結構的示例 91
4.7 switch多重選擇結構 95
4.8 do/while循環(huán)結構 100
4.9 break和continue語句 102
4.10 邏輯運算符 103
4.11 相等運算符(==)和賦值運算符
(=) 106
4.12 結構化編程小結 108
自測練習 113
練習 116
第5章 C函數 123
5.1 簡介 123
5.2 C語言的程序模塊 123
5.3 數學庫函數 124
5.4 函數 126
5.5 函數的定義 126
5.6 函數原型 130
5.7 頭文件 133
5.8 調用函數:按值調用和按引用調用 134
5.9 隨機數的生成 134
5.10 示例:運氣游戲 139
5.11 存儲類別 142
5.12 作用域的規(guī)則 144
5.13 遞歸 147
5.14 遞歸實例:斐波納契數列 150
5.15 遞歸與迭代 154
自測練習 156
練習 161
第6章 C數組 171
6.1 簡介 171
6.2 數組 171
6.3 聲明數組 173
6.4 數組使用示例 173
6.5 數組傳遞給函數 185
6.6 排序數組 190
6.7 案例研究:用數組計算平均值、中值
和最頻值 192
6.8 查找數組 196
6.9 多維數組 201
自測練習 207
練習 210
第7章 C指針 222
7.1 簡介 222
7.2 指針變量聲明和初始化 222
7.3 指針運算符 223
7.4 按引用調用函數 226
7.5 使用指針的const限定符 229
7.6 使用按引用調用的冒泡排序 235
7.7 指針表達式和指針算法 240
7.8 指針和數組的關系 243
7.9 指針數組 247
7.10 案例研究:洗牌和發(fā)牌模擬 248
7.11 函數指針 253
自測練習 257
練習 260
第8章 C字符和字符串 275
8.1 簡介 275
8.2 字符串和字符的基本知識 275
8.3 字符處理庫 277
8.4 字符串轉換函數 282
8.5 標準輸入/輸出庫函數 287
8.6 字符串處理庫的字符串處理函數 291
8.7 字符處理庫的比較函數 293
8.8 字符串處理庫的查找函數 295
8.9 字符串處理庫的內存函數 301
8.10 字符串處理庫的其他函數 305
自測練習 306
練習 309
第9章 C格式化的輸入/輸出 316
9.1 簡介 316
9.2 流 316
9.3 用printf格式化輸出 316
9.4 打印整數 317
9.5 打印浮點數 318
9.6 打印字符串和字符 320
9.7 其他轉換說明符 321
9.8 用字段寬度和精度打印 323
9.9 在printf格式控制字符串中使用標記 325
9.10 打印字面量和轉義序列 328
9.11 用scanf格式化輸入 329
自測練習 335
練習 337
第10章 C結構、聯(lián)合、位操作和枚舉 340
10.1 簡介 340
10.2 結構定義 340
10.3 初始化結構 343
10.4 訪問結構成員 343
10.5 在函數中使用結構 345
10.6 typedef 345
10.7 示例:高性能洗牌和發(fā)牌仿真程序 346
10.8 聯(lián)合 349
10.9 位運算符 351
10.10 位字段 359
10.11 枚舉常量 362
自測練習 363
練習 366
第11章 C文件處理 370
11.1 簡介 370
11.2 數據層次結構 370
11.3 文件和流 372
11.4 創(chuàng)建順序存取文件 373
11.5 從順序存取文件中讀取數據 377
11.6 隨機存取文件 382
11.7 創(chuàng)建隨機存取文件 383
11.8 隨機向隨機存取文件中寫入數據 385
11.9 隨機從隨機存取文件中讀取數據 387
11.10 案例研究:事務處理程序 389
自測練習 394
練習 396
第12章 C數據結構 401
12.1 簡介 401
12.2 自引用結構 402
12.3 動態(tài)內存分配 402
12.4 鏈表 403
12.5 堆棧 412
12.6 隊列 417
12.7 樹 424
自測練習 429
練習 432
第13章 C預處理器 452
13.1 簡介 452
13.2 #include預處理器偽指令 452
13.3 #define預處理器偽指令:符號常量 453
13.4 #define預處理器偽指令:宏 453
13.5 條件編譯 455
13.6 #error和#pragma預處理器偽指令 456
13.7 #和##運算符 456
13.8 行號 457
13.9 預定義符號常量 457
13.10 斷言 458
自測練習 458
練習 460
第14章 C語言高級技術 461
14.1 簡介 461
14.2 在UNIX和DOS系統(tǒng)上重定向
輸入/輸出 461
14.3 變長參數列表 462
14.4 使用命令行參數 464
14.5 編譯多個源文件程序的注釋 465
14.6 使用exit和atexit終止程序 467
14.7 volatile類型限定符 469
14.8 整數和浮點常量的前綴 469
14.9 其他文件問題 469
14.10 信號處理 471
14.11 動態(tài)內存分配:函數calloc和
realloc 474
14.12 無條件分支:goto 474
自測練習 476
練習 476
第2部分 C++編程
第15章 C的增強版本C++ 479
15.1 簡介 479
15.2 C++ 479
15.3 簡單的程序:兩個整數相加 480
15.4 C++標準庫 483
15.5 頭文件 483
15.6 嵌入函數 485
15.7 引用和引用參數 487
15.8 默認參數和空參數列表 491
15.9 一元作用域解析運算符 493
15.10 函數重載 495
15.11 函數模板 497
自測練習 499
練習 500
第16章 C++類和數據抽象 502
16.1 簡介 502
16.2 用類實現(xiàn)時間抽象數據類型 503
16.3 類作用域和訪問類成員 509
16.4 從實現(xiàn)中分離接口 511
16.5 控制訪問成員 515
16.6 訪問函數和實用函數 517
16.7 初始化類對象:構造函數 520
16.8 通過構造函數使用默認參數 521
16.9 使用析構函數 525
16.10 何時調用構造函數和析構函數 526
16.11 使用數據成員和成員函數 529
16.12 微妙的陷阱:返回private數據
成員的引用 534
16.13 使用默認的按成員復制來賦值 536
16.14 軟件重用性 538
自測練習 538
練習 539
第17章 C++類:第二部分 542
17.1 簡介 542
17.2 const(常量)對象和const成員函數 542
17.3 復合:作為類成員的對象 551
17.4 friend函數和friend類 556
17.5 使用this指針 560
17.6 使用運算符new和delete動態(tài)
分配內存 565
17.7 static類成員 566
17.8 數據抽象和信息隱藏 572
17.8.1 示例:數組抽象數據類型 573
17.8.2 示例:字符串抽象數據類型 574
17.8.3 示例:隊列抽象數據類型 574
17.9 容器類和迭代器 575
自測練習 575
練習 576
第18章 C++運算符重載 578
18.1 簡介 578
18.2 運算符重載的基礎知識 579
18.3 運算符重載的限制 580
18.4 作為類成員和友元函數的運算符函數 581
18.5 重載流插入和流提取運算符 582
18.6 重載一元運算符 585
18.7 重載二元運算符 586
18.8 案例研究:數組類 587
18.9 類型轉換 600
18.10 重載++和 601
自測練習 602
練習 603
第19章 C++繼承 607
19.1 簡介 607
19.2 繼承:基類和派生類 608
19.3 Protected 成員 610
19.4 基類指針轉換為派生類指針 611
19.5 使用成員函數 616
19.6 在派生類中覆蓋基類成員 617
19.7 公共、受保護和私有繼承 621
19.8 直接基類和間接基類 622
19.9 在派生類中使用構造函數和析構
函數 622
19.10 隱含派生類對象到基類對象的
轉換 626
19.11 使用繼承的軟件工程 627
19.12 復合與繼承 628
19.13 “使用一個”和“了解一個”
的關系 628
19.14 案例研究:點、圓和圓柱 629
自測練習 637
練習 637
第20章 C++虛擬函數和多態(tài)性 639
20.1 簡介 639
20.2 類型字段和switch語句 639
20.3 虛擬函數 640
20.4 抽象基類和具體類 640
20.5 多態(tài)性 641
20.6 新類和動態(tài)綁定 643
20.7 虛擬析構函數 643
20.8 案例研究:繼承接口和實現(xiàn) 644
20.9 多態(tài)性、虛擬函數和動態(tài)綁定內幕 652
自測練習 655
練習 655
第21章 C++流輸入/輸出 657
21.1 簡介 657
21.2 流 658
21.2.1 iostream庫頭文件 658
21.2.2 流輸出/輸入類和對象 658
21.3 流輸出 660
21.3.1 流插入運算符 660
21.3.2 級聯(lián)流插入/提取運算符 662
21.3.3 char *變量的輸出 663
21.3.4 用成員函數put輸出字符:
級聯(lián)多個put 664
21.4 流輸入 664
21.4.1 流提取運算符 664
21.4.2 get和getline成員函數 667
21.4.3 istream成員函數peek、
putback和ignore 670
21.4.4 類型安全的輸入/輸出 670
21.5 用read、gcount和write的非格式
化輸入/輸出 670
21.6 流操縱符 671
21.6.1 整數流基數:dec、oct、hex
和setbase 672
21.6.2 浮點精度(precision,
setprecision) 673
21.6.3 字段寬度(setw, width) 674
21.6.4 用戶定義操縱符 676
21.7 流格式狀態(tài) 677
21.7.1 格式狀態(tài)標記 677
21.7.2 尾部0和小數點
(ios::showpoint) 678
21.7.3 對齊(ios::left,ios::right,
ios::internal) 679
21.7.4 填充(fill, setfill) 681
21.7.5 整數流基數(ios::dec,ios::oct,
ios::hex,ios::showbase) 682
21.7.6 浮點數:科學記數法
(ios::scientific, ios::fixed) 683
21.7.7 大寫/小寫控制
(ios::uppercase) 684
21.7.8 設置和重新設置狀態(tài)標記
(flags, setiosflags,
resetiosflags) 685
21.8 流錯誤狀態(tài) 687
21.9 將輸出流轉移到輸入流 689
自測練習 689
練習 694
第22章 C++模板 697
22.1 簡介 697
22.2 類模板 697
22.3 類模板與非類型參數 703
22.4 模板與繼承 704
22.5 模板與友元 704
22.6 模板與static成員 706
自測練習 706
練習 707
第23章 C++異常處理 708
23.1 簡介 708
23.2 何時使用異常處理 710
23.3 其他錯誤處理技術 710
23.4 C++異常處理基礎知識:
try、throw、catch 711
23.5 異常處理的簡單例子:零除 712
23.6 引發(fā)異常 714
23.7 捕獲異常 715
23.8 重新引發(fā)異常 718
23.9 異常規(guī)約 720
23.10 處理無法預料的異常 720
23.11 堆棧展開 721
23.12 構造函數、析構函數與異常處理 722
23.13 異常與繼承 723
23.14 處理new錯誤 723
23.15 auto_ptr類與動態(tài)內存分配 727
23.16 標準庫異常層次 729
自測練習 730
練習 731
第3部分 Java編程
第24章 Java應用程序與小程序入門 733
24.1 簡介 733
24.2 典型的Java環(huán)境基礎 734
24.3 Java和本書的總說明 737
24.4 簡單的程序:打印文本行 738
24.5 另一個Java應用程序:整數相加 745
24.6 Java 2 SDK的小程序示例 751
24.6.1 TicTacToe小程序 751
24.6.2 DrawTest小程序 754
24.6.3 Java2D小程序 755
24.7 一個簡單的Java小程序:繪制
字符串 756
24.8 另外兩個示例:繪制字符串與線 762
24.9 另一個Java小程序:整數相加 764
自測練習題 771
練習 773
第25章 獨特的Java運算符、
方法與數組 775
25.1 簡介 775
25.2 基本數據類型與關鍵字 775
25.3 邏輯運算符 777
25.4 方法定義 782
25.5 Java API 包 787
25.6 隨機數生成 791
25.7 示例:運氣游戲 794
25.8 JApplet類的方法 802
25.9 數組的聲明與分配 804
25.10 數組應用示例 804
25.11 引用和引用參數 815
25.12 多維數組 815
自測練習 819
練習 821
第26章 基于對象的Java編程 826
26.1 簡介 826
26.2 用類實現(xiàn)時間抽象數據類型 827
26.3 類的作用域 834
26.4 創(chuàng)建包 835
26.5 類對象的初始化:構造函數 839
26.6 使用Set和Get方法 840
26.7 使用this引用 847
26.8 結束函數 850
26.9 靜態(tài)類成員 850
自測練習 854
練習 855
第27章 面向對象的Java編程 859
27.1 簡介 859
27.2 超類和子類 861
27.3 protected成員 863
27.4 超類對象和子類對象的關系 863
27.5 子類對象向超類對象的隱式轉換 870
27.6 具有繼承的軟件工程 871
27.7 復合與繼承的比較 872
27.8 多態(tài)簡介 872
27.9 類型字段和switch語句 872
27.10 動態(tài)方法綁定 873
27.11 final方法和類 873
27.12 抽象超類和具體類 874
27.13 多態(tài)示例 875
27.14 新類和動態(tài)綁定 876
27.15 案例研究:繼承接口和實現(xiàn) 877
27.16 案例研究:創(chuàng)建和使用接口 883
27.17 內部類定義 889
27.18 內部類定義的說明 900
27.19 基本類型的類型包裝類 900
自測練習 901
練習 901
第28章 Java圖形和Java2D 904
28.1 簡介 904
28.2 圖形環(huán)境和圖形對象 906
28.3 顏色控制 907
28.4 字體控制 914
28.5 繪制直線、矩形和橢圓 920
28.6 繪制弧 923
28.7 繪制多邊形和折線 926
28.8 Java2D API 929
28.9 Java2D形狀 929
自測練習 937
練習 938
第29章 Java GUI組件 941
29.1 簡介 941
29.2 Swing概述 942
29.3 JLabel 944
29.4 事件處理模型 948
29.5 JTextField和JPasswordField 950
29.6 JTextArea 956
29.7 JButton 959
29.8 JCheckBox 963
29.9 JComboBox 966
29.10 鼠標事件處理 969
29.11 布局管理器 974
29.11.1 FlowLayout 974
29.11.2 BorderLayout 977
29.11.3 GridLayout 980
29.12 面板 983
29.13 創(chuàng)建自包含的Jpanel子類 984
29.14 窗口 990
29.15 使用有邊框的菜單 992
自測練習 999
練習 1001
第30章 Java多媒體:圖像、
動畫及音頻 1004
30.1 簡介 1004
30.2 加載、顯示和縮放圖像 1005
30.3 加載和播放音頻剪輯 1008
30.4 使一系列圖像動起來 1011
30.5 動畫問題 1016
30.6 通過param HTML標記自定義
小程序 1017
30.7 圖像映射 1022
30.8 Java插件 1025
30.9 Internet和萬維網資源 1027
自測練習 1027
練習 1028
第4部分 附 錄
附錄A Internet與Web資源 1031
A.1 C/C++資源 1031
A.2 C++教程 1033
A.3 C/C++ FAQ 1034
A.4 Visual C++ 1034
A.5 comp.lang.c++ 1035
A.6 C/C++編譯程序 1037
A.7 C++開發(fā)工具 1039
A.8 Java資源 1039
A.9 Java產品 1041
A.10 Java FAQ 1042
A.11 Java教程 1042
A.12 Java期刊 1043
A.13 Java 小程序 1043
A.14 多媒體 1044
A.15 Java 新聞組 1045
附錄B C99 Internet與Web資源 1047
附錄C 運算符優(yōu)先級 1050
附錄D ASCII字符集 1055
附錄E 數制系統(tǒng) 1056
E.1 簡介 1056
E.2 將二進制數縮寫為八進制和
十六進制數 1059
E.3 將八進制數和十六進制數
轉換成二進制數 1060
E.4 從二進制、八進制、十六進制
轉換成十進制 1060
E.5 從十進制轉換為八進制、十六進制
或二進制 1061
E.6 負二進制數:補碼記數法 1063
自測練習 1064
練習 1066