編輯推薦
適讀人群 :本書不僅適閤於初學者學習,作為高校計算機程序設計教學的教科書,也同樣適用於有經驗的程序員,作為軟件開發人員的專業參考書。 學習C語言的經典教材之一:
*提供瞭很多的基礎的、覆蓋麵很廣的實例。
*綜閤瞭C99和C11兩個標準的功能。
*增加“安全的C程序設計”章節。
*所有代碼都通過GNUgcc、VisualC++®或者Xcode®LLVM的測試
*所有代碼都采用GNUgdb、VisualC++®或者Xcode®來調試。
*緊扣時代發展的“更上一層樓”課後練習。
*介紹多綫程和多核程序設計
內容簡介
本書是全球暢銷的C語言教程之一。全書係統地介紹瞭4種當今流行的程序設計方法――麵嚮過程、基於對象、麵嚮對象以及泛型編程,內容全麵、生動、易懂,作者由淺入深地介紹瞭結構化編程及軟件工程的基本概念,從簡單的概念到最終的完整的語言描述,清晰、準確、透徹、詳細地講解瞭C語言,尤其注重程序設計思想和方法的介紹。相對於上一版,這一版在內容方麵新增加瞭C安全程序設計、"更上一層樓”練習集,更新瞭C++和麵嚮對象程序設計、基於Allegro的遊戲編程、C99標準介紹等內容。
作者簡介
Paul Deitel和Harvey Deitel是全球暢銷的編程語言教材和專業圖書作傢,“How to Program”係列是其*負盛名的一套計算機編程教材,已經銷售近40年,並被翻譯成中文在內的十幾種語言。他們成立的Deitel & Associates公司是一傢國際知名的企業培訓和寫作公司, 專門進行計算機編程語言、對象技術、移動應用開發及Internet和Web軟件技術方麵的培訓和寫作,齣版瞭一流的編程專業的大學教材、 專業圖書以及LiveLessons視頻課程。
蘇小紅,哈爾濱工業大學計算機學院博士生導師,計算機應用技術專傢,研究領域主要是色彩匹配,信息融閤,空間計算,人工神經網絡,進化算法,計算機圖形學,灰色預測,彩色圖像處理等。
目錄
目 錄
第1章 計算機、因特網和萬維網導論 1
1.1 引言 2
1.2 計算機硬件和軟件 2
1.2.1 摩爾定律 2
1.2.2 計算機組成 3
1.3 數據的層次結構 3
1.4 機器語言、匯編語言和高級語言 5
1.5 C程序設計語言 6
1.6 C標準庫 7
1.7 C++和其他基於C的程序設計語言 8
1.8 對象技術 8
1.8.1 對象――以汽車為例 9
1.8.2 方法與類 9
1.8.3 實例化 9
1.8.4 軟件重用 9
1.8.5 消息與方法調用 9
1.8.6 屬性與實例變量 9
1.8.7 封裝與信息隱藏 10
1.8.8 繼承 10
1.9 典型的C程序開發環境 10
1.9.1 第1步:創建一個C程序 11
1.9.2 第2步和第3步:預處理及編譯一個C程序 11
1.9.3 第4步:鏈接 11
1.9.4 第5步:裝載 11
1.9.5 第6步:執行 12
1.9.6 程序運行時可能會齣現的問題 12
1.9.7 標準輸入、標準輸齣和標準錯誤流 12
1.10 在Windows、Linux和Mac OS X上測試並運行一個C應用程序 12
1.10.1 在Windows命令提示符下運行一個C應用程序 13
1.10.2 使用Linux中的GNU C來運行一個C應用程序 15
1.10.3 使用Mac OS X終端來運行一個C應用程序 17
1.11 操作係統 19
1.11.1 Windows ―― 一個專有的操作係統 19
1.11.2 Linux ―― 一個開源的操作係統 19
1.11.3 蘋果公司的Mac OS X;麵嚮iPhone、iPad 和iPod Touch的iOS操作係統 20
1.11.4 榖歌公司的Android操作係統 20
1.12 因特網和萬維網 20
1.12.1 因特網:計算機網絡的網絡 21
1.12.2 萬維網:讓因特網對用戶更友好 21
1.12.3 萬維網服務 21
1.12.4 Ajax 23
1.12.5 物聯網 23
1.13 一些重要的軟件技術 23
1.14 跟上信息技術的發展 24
第2章 C語言程序設計入門 28
2.1 引言 28
2.2 一個簡單的C程序:打印一行文字 28
2.3 另一個簡單的C程序:兩個整數求和 31
2.4 存儲單元的基本概念 35
2.5 C語言中的算術運算 35
2.6 做齣決策:相等和關係運算符 38
2.7 安全的C程序設計 41
第3章 結構化的C程序設計 51
3.1 引言 51
3.2 算法 51
3.3 僞代碼 52
3.4 控製結構 52
3.5 if條件語句 54
3.6 if…else條件語句 54
3.7 while循環語句 57
3.8 算法設計案例1:計數控製的循環 58
3.9 自頂嚮下、逐步求精的算法設計案例2:標記控製的循環 60
3.10 自頂嚮下、逐步求精的算法設計案例3:嵌套控製結構 65
3.11 賦值運算符 67
3.12 增1和減1運算符 68
3.13 安全的C程序設計 70
第4章 C程序控製 84
4.1 引言 84
4.2 循環的基本原理 84
4.3 計數控製的循環 85
4.4 for循環語句 86
4.5 for語句:注意事項 88
4.6 使用 for語句的例子 89
4.7 switch多重選擇語句 91
4.8 do…while循環語句 96
4.9 break和continue語句 97
4.10 邏輯運算符 98
4.11 區分相等運算符(= =)和賦值運算符(=) 100
4.12 結構化程序設計小結 101
4.13 安全的C程序設計 105
第5章 C函數 117
5.1 引言 117
5.2 C語言中的程序模塊 117
5.3 數學庫函數 118
5.4 函數 119
5.5 函數定義 120
5.5.1 square函數 120
5.5.2 maximum函數 123
5.6 函數原型:一個深入的剖析 123
5.7 函數調用堆棧及活動記錄堆棧幀 125
5.8 頭文件 128
5.9 按值或按引用傳遞參數 129
5.10 隨機數的生成 129
5.11 案例分析:運氣遊戲;引入enum 133
5.12 存儲類型 135
5.13 作用域的規定 137
5.14 遞歸 139
5.15 遞歸應用案例:斐波那契數列 142
5.16 遞歸與迭代 144
5.17 安全的C程序設計 146
第6章 C數組 161
6.1 引言 162
6.2 數組 162
6.3 數組定義 163
6.4 數組實例 163
6.4.1 定義一個數組並用循環結構來設置數組元素值 163
6.4.2 在定義語句中用一個初始值列錶來初始化一個數組 164
6.4.3 用符號常量來定義數組的大小並通過計算來初始化數組元素 165
6.4.4 數組元素值求和 166
6.4.5 用數組來統計民意調查的結果 166
6.4.6 用直方圖來展示數組元素值 168
6.4.7 用數組來統計投擲骰子60 000 000次的結果 169
6.5 用字符數組來存儲和處理字符串 170
6.5.1 定義一個字符串來初始化一個字符數組 170
6.5.2 用一個字符初始化列錶來初始化一個字符數組 170
6.5.3 訪問一個字符串中的字符 170
6.5.4 針對一個字符數組的輸入 170
6.5.5 將一個代錶字符串的字符數組輸齣 171
6.5.6 字符數組的演示 171
6.6 靜態局部數組和自動局部數組 171
6.7 將數組傳遞給函數 173
6.8 數組排序 176
6.9 案例分析:用數組來計算平均值、中值和眾數 178
6.10 數組查找 181
6.10.1 綫性查找數組元素 181
6.10.2 摺半查找數組元素 182
6.11 多下標數組 185
6.11.1 雙下標數組概述 185
6.11.2 雙下標數組的初始化 186
6.11.3 設置某行元素的元素值 187
6.11.4 計算雙下標數組中所有元素值的總和 187
6.11.5 對雙下標數組的處理 188
6.12 可變長數組 190
6.13 安全的C程序設計 192
第7章 C指針 207
7.1 引言 207
7.2 指針變量的定義和初始化 208
7.3 指針運算符 208
7.4 按引用嚮函數傳遞實參 210
7.5 對指針使用const限定符 213
7.5.1 用指嚮可變數據的可變指針將字符串中的字符改成大寫 214
7.5.2 用指嚮常量數據的可變指針逐個打印字符串中的字符 215
7.5.3 試圖修改指嚮可變數據的常量指針 217
7.5.4 試圖修改指嚮常量數據的常量指針 217
7.6 采用按引用傳遞的冒泡排序 218
7.7 sizeof運算符 220
7.8 指針錶達式和指針算術運算 222
7.8.1 指針算術運算中可使用的運算符 222
7.8.2 將指針對準一個數組 222
7.8.3 給指針加上一個整數 222
7.8.4 給指針減去一個整數 223
7.8.5 指針增1或減1 223
7.8.6 從一個指針中減去另一個指針 223
7.8.7 將一個指針賦予另一個指針 223
7.8.8 指嚮void的指針 224
7.8.9 指針的比較 224
7.9 指針和數組的關係 224
7.9.1 指針/偏移量錶示法 224
7.9.2 指針/下標錶示法 225
7.9.3 不能用指針算術運算來修改數組名 225
7.9.4 指針下標和指針偏移量的使用演示 225
7.9.5 用數組和指針實現字符串的復製 226
7.10 指針數組 227
7.11 案例研究:模擬撲剋牌的洗牌和發牌 228
7.12 指嚮函數的指針 232
7.12.1 按升序或降序進行排序 232
7.12.2 使用函數指針來創建一個菜單驅動的係統 234
7.13 安全的C程序設計 236
第8章 C字符和字符串 252
8.1 引言 252
8.2 字符串和字符基礎 253
8.3 字符處理函數庫 254
8.3.1 函數isdigit,isalpha,isalnum和isxdigit 255
8.3.2 函數islower,isupper,tolower和toupper 256
8.3.3 函數isspace,iscntrl,ispunct,isprint和isgraph 257
8.4 字符串轉換函數 258
8.4.1 函數strtod 258
8.4.2 函數strtol 259
8.4.3 函數strtoul 260
8.5 標準輸入/輸齣庫函數 260
8.5.1 函數fgets和putchar 261
8.5.2 函數getchar 261
8.5.3 函數sprintf 262
8.5.4 函數sscanf 263
8.6 字符串處理函數庫中的字符串處理函數 263
8.6.1 函數strcpy和 strncpy 264
8.6.2 函數strcat和 strncat 264
8.7 字符串處理函數庫中的比較函數 265
8.8 字符串處理函數庫中的查找函數 266
8.8.1 函數strchr 267
8.8.2 函數strcspn 268
8.8.3 函數strpbrk 268
8.8.4 函數strrchr 268
8.8.5 函數strspn 269
8.8.6 函數strstr 269
8.8.7 函數strtok 270
8.9 字符串處理函數庫中的內存處理函數 271
8.9.1 函數memcpy 271
8.9.2 函數memmove 272
8.9.3 函數memcmp 272
8.9.4 函數memchr 273
8.9.5 函數memset 273
8.10 字符串處理函數庫中的其他函數 274
8.10.1 函數strerror 274
8.10.2 函數strlen 274
8.11 安全的C程序設計 275
第9章 C格式化輸入/輸齣 285
9.1 引言 285
9.2 流 286
9.3 用printf函數實現格式化輸齣 286
9.4 打印整數 286
9.5 打印浮點數 287
9.5.1 轉換說明符e,E或f 288
9.5.2 轉換說明符g或G 288
9.5.3 浮點數轉換說明符的使用演示 288
9.6 打印字符串或字符 289
9.7 其他的轉換說明符 289
9.8 帶域寬和精度的打印 290
9.8.1 在打印整數時指定域寬 290
9.8.2 在打印整數、浮點數和字符串時指定精度 291
9.8.3 同時指定域寬和精度 292
9.9 在printf函數的格式控製字符串中使用標記 292
9.9.1 右對齊和左對齊 292
9.9.2 用與不用+標記來打印正數和負數 293
9.9.3 使用空格標記 293
9.9.4 使用#標記 293
9.9.5 使用0標記 294
9.10 打印文本和轉義序列 294
9.11 用scanf函數讀取格式化的輸入 294
9.11.1 scanf的語法 295
9.11.2 scanf的轉換說明符 295
9.11.3 用scanf來讀入整數 295
9.11.4 用scanf來讀入浮點數 296
9.11.5 用scanf來讀入字符和字符串 296
9.11.6 在scanf中使用掃描集 297
9.11.7 在scanf中指定域寬 298
9.11.8 在輸入流中忽略掉特定字符 298
9.12 安全的C程序設計 299
第10章 結構體、共用體、位操作和枚舉類型 305
10.1 引言 306
10.2 結構體的定義 306
10.2.1 自引用結構體 306
10.2.2 定義結構體類型的變量 307
10.2.3 結構體標記名 307
10.2.4 可對結構體實施的操作 307
10.3 結構體的初始化 308
10.4 用.和?>訪問結構體成員 308
10.5 在函數中使用結構體 310
10.6 typedef的使用 310
10.7 實例分析:高性能的洗牌與發牌模擬 311
10.8 共用體 313
10.8.1 聲明一個共用體 313
10.8.2 可對共用體執行的操作 313
10.8.3 在聲明語句中對共用體進行初始化 313
10.8.4 使用共用體的演示 314
10.9 位運算符 315
10.9.1 按位顯示一個無符號整數 315
10.9.2 使函數displayBits更具可擴展性和可移植性 316
10.9.3 按位與、按位或、按位異或和按位取反運算符的使用 317
10.9.4 按位左移和按位右移運算符的使用 319
10.9.5 按位運算後賦值運算符 320
10.10 位域 321
10.10.1 位域的定義 321
10.10.2 用位域來錶示一張紙牌的花色、牌麵值和顔色 321
10.10.3 無名位域 323
10.11 枚舉常量 323
10.12 匿名的結構體和共用體 324
10.13 安全的C程序設計 325
第11章 文件處理 334
11.1 引言 334
11.2 文件與流 334
11.3 順序存取文件的創建 335
11.3.1 指嚮FILE結構體類型的指針 336
11.3.2 用函數fopen打開文件 336
11.3.3 用函數feof來檢查文件結束標記 337
11.3.4 用函數fprintf嚮文件寫入數據 337
11.3.5 用函數fclose來關閉文件 337
11.3.6 文件打開模式 338
11.4 從順序存取文件中讀取數據 339
11.4.1 文件位置指針的復位 340
11.4.2 信用查詢程序 340
11.5 隨機存取文件 343
11.6 隨機存取文件的創建 343
11.7 隨機地嚮一個隨機存取文件中寫入數據 345
11.7.1 用函數fseek來定位文件位置指針 346
11.7.2 齣錯檢查 347
11.8 從一個隨機存取文件中讀取數據 347
11.9 案例研究:事務處理程序 348
11.10 安全的C程序設計 352
第12章 C數據結構 361
12.1 引言 361
12.2 自引用結構體 362
12.3 動態內存分配 362
12.4 鏈錶 363
12.4.1 insert函數 367
12.4.2 delete函數 368
12.4.3 printList函數 369
12.5 堆棧 370
12.5.1 push函數 372
12.5.2 pop函數 373
12.5.3 堆棧的應用 373
12.6 隊列 374
12.6.1 enqueue函數 377
12.6.2 dequeue函數 378
12.7 樹 378
12.7.1 insertNode函數 381
12.7.2 遍曆函數inOrder,preOrder和postOrder 381
12.7.3 消除冗餘 382
12.7.4 二元樹搜索 382
12.7.5 二元樹的其他操作 382
12.8 安全的C程序設計 382
第13章 C預處理 392
13.1 引言 392
13.2 #include預處理命令 393
13.3 #define預處理命令:符號常量 393
13.4 #define預處理命令:宏 394
13.4.1 帶一個參數的宏 394
13.4.2 帶兩個參數的宏 395
13.4.3 宏連續符 395
13.4.4 #undef預處理命令 395
13.4.5 標準庫函數和宏 395
13.4.6 不要把帶有副作用的錶達式放在宏中 395
13.5 條件編譯 395
13.5.1 # if…# endif預處理命令 395
13.5.2 用# if…# endif將代碼塊注釋起來 396
13.5.3 對調試代碼的條件編譯 396
13.6 #error和#pragma預處理命令 396
13.7 #和# #運算符 397
13.8 行號 397
13.9 預定義的符號常量 397
13.10 斷言 398
13.11 安全的C程序設計 398
第14章 C語言的其他專題 402
14.1 引言 402
14.2 I/O的重定嚮 402
14.2.1 用<來重定嚮輸入 403
14.2.2 用|來重定嚮輸入 403
14.2.3 重定嚮輸齣 403
14.3 可變長的參數列錶 403
14.4 使用命令行實參 405
14.5 編譯由多個源文件組成的程序 406
14.5.1 在彆的文件中對全局變量進行extern聲明 406
14.5.2 函數原型 406
14.5.3 用static來限製作用域 407
14.5.4 Makefile 407
14.6 使用exit和atexit終止程序 407
14.7 整型和浮點型常量的後綴 408
14.8 信號處理 409
14.9 動態內存分配:函數calloc和realloc 410
14.10 用goto實現無條件轉移 411
第15章 C++,一個更好的C;介紹對象技術 416
15.1 引言 417
15.2 C++ 417
15.3 簡單程序:兩個整數相加 417
15.3.1 用C++編寫加法程序 417
15.3.2 <iostream>頭文件 418
15.3.3 main函數 418
15.3.4 變量聲明 418
15.3.5 標準輸齣流和標準輸入流對象 418
15.3.6 std::endl流操縱符 418
15.3.7 關於std::的說明 419
15.3.8 級聯的流輸齣 419
15.3.9 main函數中的return語句不是必需的 419
15.3.10 運算符重載 419
15.4 C++標準庫 419
15.5 頭文件 420
15.6 內聯函數 421
15.7 C++關鍵字 422
15.8 引用和引用形參 423
15.8.1 引用形參 423
15.8.2 按值和按引用傳參 423
15.8.3 函數體內引用作為彆名 425
15.8.4 從函數返迴引用 426
15.8.5 未初始化的引用的錯誤提示信息 426
15.9 空形參列錶 426
15.10 默認實參 426
15.11 一元作用域運算符 428
15.12 函數重載 429
15.13 函數模闆 431
15.13.1 定義一個函數模闆 431
15.13.2 使用函數模闆 431
15.14 對象技術與UML簡介 432
15.14.1 對象技術基本概念 433
15.14.2 類、數據成員和成員函數 434
15.14.3 麵嚮對象分析與設計 434
15.14.4 統一建模語言 435
15.15 C++標準庫類模闆vector簡介 435
15.15.1 C風格的基於指針的數組 435
15.15.2 使用類模闆vector 435
15.15.3 異常處理:處理下標越界 439
15.16 本章小結 439
第16章 類:對象和字符串簡介 444
16.1 引言 444
16.2 定義一個具有成員函數的類 444
16.3 定義一個有參成員函數 446
16.4 數據成員,set成員函數與get成員函數 449
16.5 用構造函數初始化對象 453
16.6 將類放在單獨的文件中以增強重用性 455
16.7 將接口與實現分離 458
16.8 用set函數驗證數據 462
16.9 本章小結 465
第17章 類:深入剖析;拋齣異常 471
17.1 引言 471
17.2 Time類的案例學習 472
17.3 類域和訪問類的成員 477
17.4 訪問函數和工具函數 477
17.5 Time類的案例學習:具有默認實參的構造函數 478
17.6 析構函數 482
17.7 構造函數與析構函數的調用時間 482
17.8 Time類的案例學習:隱蔽陷阱――返迴private數據成員的引用或指針 485
17.9 默認按成員賦值 487
17.10 const對象和const成員函數 488
17.11 組閤:對象作為類的成員 490
17.12 友元函數和友元類 494
17.13 使用this指針 495
17.14 static類成員 499
17.15 本章小結 503
第18章 運算符重載;string類 511
18.1 引言 511
18.2 使用標準庫模闆類string中的重載運算符 512
18.3 運算符重載基礎 514
18.4 重載二元運算符 515
18.5 重載流插入和流讀取運算符 516
18.6 重載一元運算符 518
18.7 重載一元前置和後置++和???運算符 519
18.8 案例學習:Date類 520
18.9 動態內存管理 523
18.10 案例學習:Array類 525
18.10.1 使用Array類 525
18.10.2 Array類定義 528
18.11 作為類的成員和作為非成員函數的運算符函數的比較 534
18.12 類型轉換 534
18.13 explicit構造函數和轉換運算符 535
18.14 重載函數調用運算符( ) 537
18.15 本章小結 537
第19章 麵嚮對象編程:繼承 546
19.1 引言 546
19.2 基類和派生類 547
19.3 基類和派生類的關係 548
19.3.1 創建並使用CommissionEmployee類 549
19.3.2 不用繼承創建BasePlusCommissionEmployee類 552
19.3.3 創建CommissionEmployee-BasePlusCommissionEmployee繼承層次結構 556
19.3.4 使用protected數據的CommissionEmployee-BasePlusCommission-Employee繼承層次
結構 559
19.3.5 使用private數據的CommissionEmployee-BasePlusCommission Employee繼承層次結構 561
19.4 派生類的構造函數與析構函數 565
19.5 public,protected和private繼承 566
19.6 關於繼承的軟件工程 567
19.7 本章小結 567
第20章 麵嚮對象編程:多態 571
20.1 引言 571
20.2 多態簡介:多態的視頻遊戲 572
20.3 繼承層次結構中對象間的關係 572
20.3.1 派生類對象調用基類的函數 573
20.3.2 派生類指針指嚮基類對象 575
20.3.3 用基類指針調用派生類成員函數 576
20.3.4 虛函數和虛析構函數 577
20.4 類型域和switch語句 582
20.5 抽象類和純虛函數 582
20.6 案例學習:利用多態的工資係統 583
20.6.1 創建抽象基類Employee 584
20.6.2 創建具體的派生類SalariedEmployee 587
20.6.3 創建具體的派生類CommissionEmployee 588
20.6.4 創建間接的具體派生類BasePlusCommissionEmployee 590
20.6.5 演示多態處理 591
20.7 (選講)多態、虛函數以及動態聯編的“幕後機製” 594
20.8 案例學習:利用多態的和運行時類型信息的工資係統,通過嚮下類型轉換,dynamic_cast,
typeid以及type_info使用運行時類型信息 596
20.9 本章小結 599
第21章 輸入/輸齣流:深入學習 603
21.1 引言 603
21.2 流 604
21.2.1 傳統流與標準流的比較 604
21.2.2 iostream類庫頭文件 605
21.2.3 輸入/輸齣流類和對象 605
21.3 輸齣流 606
21.3.1 輸齣char*變量 607
21.3.2 用成員函數put輸齣字符 607
21.4 輸入流 607
21.4.1 成員函數get和getline 608
21.4.2 istream類的成員函數peek,putback和ignore 610
21.4.3 類型安全的I/O 610
21.5 用read,write和gcount進行無格式I/O 610
21.6 流操縱符簡介 611
21.6.1 設置整數流的基數:dec,oct,hex和setbase 611
21.6.2 設置浮點數精度(precision,setprecision) 612
21.6.3 設置域寬(width,setw) 613
21.6.4 用戶定義的輸齣流操縱符 614
21.7 流格式狀態和流操縱符 614
21.7.1 設置尾數零和十進製小數點(showpoint) 615
21.7.2 設置對齊(left,right和internal) 616
21.7.3 設置填充字符(fill,setfill) 616
21.7.4 設置整數流的基數(dec,oct,hex,showbase) 617
21.7.5 設置浮點數;科學計數法和定點計數法(scientific、fixed) 618
21.7.6 大/小寫控製(uppercase) 619
21.7.7 指定布爾格式(boolalpha) 619
21.7.8 用成員函數flags設置和重置格式狀態 620
21.8 流錯誤狀態 621
21.9 將輸齣流綁定到輸入流上 622
21.10 本章小結 622
第22章 異常處理:深入學習 631
22.1 引言 631
22.2 實例:處理除數為0的異常 632
22.3 重新拋齣異常 635
22.4 棧展開 637
22.5 何時使用異常處理 638
22.6 構造函數、析構函數與異常處理 638
22.7 異常與繼承 639
22.8 處理new故障 639
22.9 unique_ptr類與動態內存分配 641
22.10 標準庫的異常層次結構 643
22.11 本章小結 645
第23章 模闆 649
23.1 引言 649
22.2 類模闆 649
23.3 函數模操作類模闆的特化對象 653
23.4 非類型形參 654
23.5 模闆類型形參的默認實參 654
23.6 重載函數模闆 654
23.7 本章小結 655
附錄A 運算符優先級錶 657
附錄B ASCII字符集 660
附錄C 數值係統 661
附錄D 排序:一個深入的分析 670
附錄E 多綫程及其他C11和C99專題 684
索引 704