關(guān)于我們
書單推薦
新書推薦
|
C程序設(shè)計教程(第9版)
本書是優(yōu)秀的C語言教程。全書系統(tǒng)地介紹了4種當今流行的程序設(shè)計方法——面向過程、基于對象、面向?qū)ο笠约胺盒途幊,?nèi)容全面、生動、易懂。作者由淺入深地介紹了結(jié)構(gòu)化編程及軟件工程的基本概念,從簡單概念到最終完整的語言描述,清晰、正確、透徹、詳細地講解了C語言,尤其注重程序設(shè)計思想和方法的介紹。此外,還涉及安全的C程序涉及、提高練習題,覆蓋C++和面向?qū)ο蟪绦蛟O(shè)計、基于Allegro的游戲編程、C標準介紹等內(nèi)容。
1.廣受認可的《C程序設(shè)計教程》系列的第9版(個別版本也譯作《C語言大學教程》),秉承了該系列一貫的豐富而詳細的風格。該系列一些版本因封面畫有螞蟻形象而被稱為“C語言螞蟻書”。
2.專業(yè)作者:計算機領(lǐng)域的專家保羅·戴特爾和哈維·戴特爾力作,他們擁有多年的教學和實踐經(jīng)驗,合作出版物被全球廣泛認可。
3.內(nèi)容豐富:介紹了C語言的基礎(chǔ)知識和常用語法,涵蓋了流行的程序設(shè)計方法,包括結(jié)構(gòu)化編程、軟件工程、面向過程、基于對象、面向?qū)ο蠛头盒途幊獭?4.實踐性強:通過大量的示例和練習題,以及項目練習,幫助讀者鞏固所學知識,提高編程實踐能力。
5.生動易懂:由淺入深地介紹C語言和程序設(shè)計方法,清晰、正確、透徹、詳細地講解了C語言的核心概念和技術(shù)。
6.適用范圍廣泛:可作為計算機科學、軟件工程、信息技術(shù)等專業(yè)學生的教材或參考書,也可作為程序員和技術(shù)人員的參考書籍或培訓(xùn)教材。
Paul J. Deitel是Deitel & Associates公司的首席執(zhí)行官和首席技術(shù)官,他畢業(yè)于麻省理工學院,在計算機領(lǐng)域有41年的經(jīng)驗。保羅是世界上頗有經(jīng)驗的編程語言培訓(xùn)師之一,自1992年以來一直為軟件開發(fā)人員教授專業(yè)課程。他已經(jīng)為國際上的學術(shù)、工業(yè)、政府和軍事客戶提供了數(shù)百個編程課程,包括加州大學洛杉磯分校、思科、IBM、西門子、Sun Microsystems(現(xiàn)在的Oracle)、戴爾、Fidelity、肯尼迪航天中心的NASA、美國國家嚴重風暴實驗室、白沙導(dǎo)彈發(fā)射場、Rogue Wave軟件、波音、北電網(wǎng)絡(luò)、Puma、iRobot和其他許多機構(gòu)。他和他的合著者哈維·M·迪特爾博士是世界上熱銷的編程語言教科書、專業(yè)書籍、視頻和互動多媒體電子學習作者,以及虛擬和現(xiàn)場培訓(xùn)主持人。
Dr. Harvey M. Deitel 是Deitel & Associates, Inc.的主席兼首席戰(zhàn)略官,在計算機領(lǐng)域有59年的經(jīng)驗。Deitel博士在麻省理工學院獲得了電子工程的學士和碩士學位,并在波士頓大學獲得了數(shù)學博士學位,他在這些項目中的每一個項目都是在計算機科學項目分出之前研究的。他有豐富的大學教學經(jīng)驗,包括獲得終身教職并擔任波士頓學院計算機科學系主任,然后于1991年與他的兒子Paul一起成立了Deitel & Associates, Inc.。Deitel父子的出版物贏得了國際認可,在日語、德語、俄語、西班牙語、法語、波蘭語、意大利語、簡體中文、繁體中文、韓語、葡萄牙語、希臘語、烏爾都語和土耳其語中出版了100多部翻譯作品。Deitel博士已經(jīng)為學術(shù)界、企業(yè)、政府和軍事客戶提供了數(shù)百個編程課程。
第 1章 計算機和C語言簡介 1
1.1 簡介 2
1.2 硬件和軟件 2
1.2.1 摩爾定律 3
1.2.2 計算機組織 3
1.3 數(shù)據(jù)層次結(jié)構(gòu) 5
1.4 機器語言、匯編語言和高級語言 7
1.5 操作系統(tǒng) 9
1.6 C編程語言 11
1.7 C語言標準庫和開源庫 12
1.8 其他流行的編程語言 13
1.9 典型的C語言程序開發(fā)環(huán)境 14
1.9.1 第 1階段:創(chuàng)建一個程序 14
1.9.2 第 2和第3階段:預(yù)處理和
編譯C程序 15
1.9.3 第4階段:鏈接 15
1.9.4 第5階段:加載 16
1.9.5 第6階段:執(zhí)行 16
1.9.6 執(zhí)行時可能出現(xiàn)的問題 16
1.9.7 標準輸入、標準輸出和標準
錯誤流 17
1.10 在Windows、Linux和macOS中
測試驅(qū)動一個C應(yīng)用程序 17
1.10.1 在Windows 10上用Visual Studio
2019社區(qū)版編譯和運行一個C語言
程序 17
1.10.2 在macOS上用Xcode編譯和運行
一個C程序
20
1.10.3 在Linux上用GNU gcc編譯和
運行一個C應(yīng)用程序 22
1.10.4 在GCC Docker容器中編譯和
運行一個C應(yīng)用程序,并在
Windows 10、macOS或Linux上
原生運行。 24
1.11 因特網(wǎng)、萬維網(wǎng)、云和物聯(lián)網(wǎng) 25
1.11.1 因特網(wǎng):一個網(wǎng)絡(luò)的網(wǎng)絡(luò) 26
1.11.2 萬維網(wǎng):讓因特網(wǎng)變得更友好 26
1.11.3 云 26
1.11.4 物聯(lián)網(wǎng) 27
1.12 軟件技術(shù) 27
1.13 大數(shù)據(jù)有多大? 28
1.13.1 大數(shù)據(jù)分析 32
1.13.2 數(shù)據(jù)科學和大數(shù)據(jù)正在產(chǎn)生變化:
使用案例 33
1.14 案例研究:大數(shù)據(jù)移動應(yīng)用 33
1.15 AI:在計算機科學和數(shù)據(jù)科學的
交匯處 34
第 2章 C語言編程入門 39
2.1 簡介 39
2.2 一個簡單的C程序:打印一行文本 39
2.3 另一個簡單的C程序:兩個整數(shù)
相加 42
2.4 內(nèi)存概念 45
2.5 C語言中的算術(shù) 46
2.6 判斷:相等和關(guān)系操作符 49
2.7 安全的C語言編程 52
第3章 結(jié)構(gòu)體化程序開發(fā) 61
3.1 簡介 61
3.2 算法 61
3.3 偽代碼 62
3.4 控制結(jié)構(gòu)體 63
3.5 if選擇語句 64
3.6 if...else選擇語句 65
3.7 while循環(huán)語句 68
3.8 制訂算法案例研究1:計數(shù)器控制的
循環(huán) 69
3.9 用自頂向下、逐步細化的方式制定算法
案例研究2:標記控制的循環(huán) 70
3.10 用自頂向下、逐步細化的方式制定算法
案例研究3:嵌套控制語句 75
3.11 賦值操作符 78
3.12 遞增和遞減操作符 79
3.13 安全的C語言編程 81
第4章 程序控制 95
4.1 簡介 95
4.2 循環(huán)要點 95
4.3 計數(shù)器控制的循環(huán) 96
4.4 for循環(huán)語句 97
4.5 使用for語句的例子 99
4.6 switch多重選擇語句 102
4.7 do...while循環(huán)語句 106
4.8 break和continue語句 107
4.9 邏輯操作符 109
4.10 區(qū)分相等 (==) 和賦值 (
=)
操作符 111
4.11 結(jié)構(gòu)體化編程的總結(jié) 112
4.12 安全的C語言編程 116
第5章 函數(shù) 128
5.1 簡介 128
5.2 C語言中的程序模塊化 128
5.3 數(shù)學庫函數(shù) 129
5.4 函數(shù) 131
5.5 函數(shù)的定義 131
5.5.1 square函數(shù) 131
5.5.2 maximum函數(shù) 133
5.6 函數(shù)原型:更深入的觀察 134
5.7 函數(shù)調(diào)用棧和棧幀 136
5.8 頭文件 139
5.9 通過值和引用傳遞參數(shù) 140
5.10 隨機數(shù)生成 140
5.11 隨機數(shù)字模擬案例研究:建立一個
賭場游戲 144
5.12 存儲類型 146
5.13 作用域規(guī)則 147
5.14 遞歸 150
5.15 使用遞歸的例子:斐波那契數(shù)列 153
5.16 遞歸與循環(huán) 155
5.17 安全的C語言編程:安全的隨機數(shù)
生成 157
第6章 數(shù)組 172
6.1 簡介 173
6.2 數(shù)組 173
6.3 定義數(shù)組 174
6.4 數(shù)組示例 174
6.4.1 定義一個數(shù)組并使用循環(huán)來設(shè)置
數(shù)組的元素值 174
6.4.2 在定義中用初始值列表初始化
數(shù)組
175
6.4.3 用符號常量指定數(shù)組的大小,
用計算方法初始化數(shù)組元素 176
6.4.4 對數(shù)組中的元素求和 177
6.4.5 使用數(shù)組來總結(jié)調(diào)查的結(jié)果 177
6.4.6 用條形圖表示數(shù)組元素的值 178
6.4.7 擲骰子60,000,000次并將結(jié)果
匯總到一個數(shù)組中 179
6.5 使用字符數(shù)組來存儲和操作字符串 180
6.5.1 用一個字符串初始化一個
字符數(shù)組 180
6.5.2 用字符的初始化列表初始化
一個字符數(shù)組 181
6.5.3 訪問一個字符串中的字符 181
6.5.4 輸入一個字符數(shù)組 181
6.5.5 輸出一個代表字符串的字符
數(shù)組 181
6.5.6 演示字符數(shù)組 181
6.6 靜態(tài)局部數(shù)組和自動局部數(shù)組 182
6.7 將數(shù)組傳遞給函數(shù) 184
6.8 對數(shù)組排序 187
6.9 數(shù)據(jù)科學入門案例研究:
調(diào)查數(shù)據(jù)分析 189
6.10 搜索數(shù)組 193
6.10.1 用線性搜索來搜索一個數(shù)組 193
6.10.2 用二分搜索來搜索數(shù)組 194
6.11 多維數(shù)組 197
6.11.1 展示二維數(shù)組 197
6.11.2 初始化雙下標數(shù)組 198
6.11.3 設(shè)置某一行的元素 199
6.11.4 計算二維數(shù)組中的元素總數(shù) 200
6.11.5 二維數(shù)組操作 200
6.12 可變長度數(shù)組 203
6.13 安全的C語言編程 205
第7章 指針 220
7.1 簡介 221
7.2 指針變量的定義和初始化 221
7.3 指針操作符 222
7.4 按引用向函數(shù)傳遞參數(shù) 224
7.5 在指針中使用const限定符 227
7.5.1 使用指向可變數(shù)據(jù)的可變指針
將字符串轉(zhuǎn)換為大寫字母 227
7.5.2 用常量數(shù)據(jù)的可變指針逐個
字符打印字符串 228
7.5.3 試圖修改可變數(shù)據(jù)的常量指針 229
7.5.4 試圖修改常量數(shù)據(jù)的常量指針 230
7.6 使用按引用傳遞的冒泡排序 231
7.7 sizeof操作符 233
7.8 指針表達式和指針算術(shù) 235
7.8.1 指針算術(shù)操作符 235
7.8.2 將一個指針指向一個數(shù)組 235
7.8.3 將一個整數(shù)添加到一個指針上 235
7.8.4 從一個指針中減去一個整數(shù) 236
7.8.5 指針的遞增和遞減 236
7.8.6 用一個指針減去另一個指針 236
7.8.7 互相賦值指針 236
7.8.8 void指針 236
7.8.9
比較指針 237
7.9 指針和數(shù)組的關(guān)系 237
7.9.1 指針/偏移量表示法 237
7.9.2 指針/下標表示法 238
7.9.3 不能用指針算術(shù)修改數(shù)組名稱 238
7.9.4 演示指針下標和偏移量 238
7.9.5 用數(shù)組和指針復(fù)制字符串 239
7.10 指針的數(shù)組 240
7.11 隨機數(shù)模擬案例研究:
洗牌和發(fā)牌 241
7.12 函數(shù)指針 245
7.12.1 按升序或降序排序 245
7.12.2 使用函數(shù)指針創(chuàng)建一個菜單
驅(qū)動的系統(tǒng) 247
7.13 安全的C語言編程 248
第8章 和字符串 276
8.1 簡介 277
8.2 字符串和字符的基本原理 277
8.3 字符處理庫 278
8.3.1 函數(shù)isdigit、isalpha、isalnum和
isxdigit 279
8.3.2
函數(shù)islower、isupper、tolower和
toupper 280
8.3.3 函數(shù)isspace、iscntrl、ispunct、
isprint和isgraph 280
8.4 字符串轉(zhuǎn)換函數(shù) 282
8.4.1 函數(shù)strtod 282
8.4.2
函數(shù)strtol 283
8.4.3 函數(shù)strtoul 283
8.5 標準輸入/輸出庫函數(shù) 284
8.5.1 函數(shù)fgets和putchar 285
8.5.2
函數(shù)getchar 286
8.5.3 函數(shù)sprintf 286
8.5.4
函數(shù)scanf 287
8.6 字符串處理庫的字符串操作函數(shù) 287
8.6.1 函數(shù)strcpy和strncpy 288
8.6.2
函數(shù)strcat和strncat 289
8.7 字符串處理庫的比較函數(shù) 290
8.8 字符串處理庫的搜索函數(shù) 291
8.8.1 函數(shù)strchr 292
8.8.2
函數(shù)strcspn 292
8.8.3 函數(shù)strpbrk 293
8.8.4
函數(shù)strrchr 293
8.8.5
函數(shù)strspn 293
8.8.6
函數(shù)strstr 294
8.8.7
函數(shù)strtok 294
8.9 字符串處理庫的內(nèi)存函數(shù) 296
8.9.1 函數(shù)memcpy 296
8.9.2
函數(shù)memmove 297
8.9.3 函數(shù)memcmp 297
8.9.4
函數(shù)memchr 298
8.9.5
函數(shù)memset 298
8.10 字符串處理庫的其他函數(shù) 299
8.10.1 函數(shù)strerror 299
8.10.2 函數(shù)strlen 299
8.11 安全的C語言編程 300
第9章 格式化的輸入/輸出 321
9.1 簡介 321
9.2 流 322
9.3 用printf格式化輸出 322
9.4 打印整數(shù) 323
9.5 打印浮點數(shù)值 324
9.5.1 轉(zhuǎn)換規(guī)范e、E和f 324
9.5.2 轉(zhuǎn)換規(guī)范g和G 324
9.5.3 示范浮點轉(zhuǎn)換規(guī)范 325
9.6 打印字符串和字符 326
9.7 其他轉(zhuǎn)換規(guī)范 326
9.8 用域?qū)捄途却蛴? 327
9.8.1 整數(shù)的域?qū)? 327
9.8.2 整數(shù)、浮點數(shù)和字符串的精度 328
9.8.3 結(jié)合域?qū)捄途? 329
9.9 printf格式標記 329
9.9.1 右對齊和左對齊 330
9.9.2 打印帶有或不帶有+標記的
正數(shù)和負數(shù) 330
9.9.3 使用空格標記 330
9.9.4 使用#標記 331
9.9.5 使用0標記 331
9.10 打印字面量和轉(zhuǎn)義序列 332
9.11 用scanf格式化輸入 333
9.11.1 scanf 語法 333
9.11.2 scanf轉(zhuǎn)換規(guī)范 333
9.11.3 讀取整數(shù) 334
9.11.4 讀取浮點數(shù)字 334
9.11.5 讀取字符和字符串 335
9.11.6 使用掃描集 335
9.11.7 使用域?qū)? 336
9.11.8 跳過輸入流中的字符 337
9.12 安全的C語言編程 338
第 10章 結(jié)構(gòu)體體、共用體、位操作
和枚舉 344
10.1 簡介 345
10.2 結(jié)構(gòu)體體的定義 345
10.2.1
自引用結(jié)構(gòu)體體 345
10.2.2 定義結(jié)構(gòu)體體類型的變量 346
10.2.3 結(jié)構(gòu)體體標簽名稱 346
10.2.4 可以對結(jié)構(gòu)體體進行的操作 346
10.3 初始化結(jié)構(gòu)體體 347
10.4 用.和->訪問結(jié)構(gòu)體體成員 348
10.5 在函數(shù)中使用結(jié)構(gòu)體體 349
10.6 typedef 349
10.7 隨機數(shù)模擬案例研究:高性能的
洗牌和發(fā)牌 350
10.8 共用體 352
10.8.1 共用體的聲明 353
10.8.2 允許的共用體操作 353
10.8.3 在聲明中初始化union 353
10.8.4 示范共用體 353
10.9 位操作符 354
10.9.1 顯示無符號整數(shù)的位數(shù) 355
10.9.2 使函數(shù)displayBits更加通用和
可移植 356
10.9.3 使用按位與、按位或、按位異或
和按位取反操作符 356
10.9.4 使用左移位和右移位操作符 359
10.9.5 位運算賦值操作符 360
10.10 位域 361
10.10.1 定義位域 361
10.10.2 使用位域來表示牌面、花色 362
10.10.3 未命名位域 363
10.11 枚舉常量 364
10.12 匿名結(jié)構(gòu)體體和共用體 365
10.13 安全的C語言編程 366
第 11章 文件處理 385
11.1 簡介 385
11.2 文件和流 385
11.3 創(chuàng)建一個順序存取的文件 386
11.3.1 指向FILE的指針 387
11.3.2 使用fopen來打開一個文件 387
11.3.3 使用feof來檢查文件結(jié)束
標記 388
11.3.4 使用fprintf向文件寫數(shù)據(jù) 388
11.3.5 使用fclose來關(guān)閉一個文件 388
11.3.6 文件打開模式 389
11.4 從順序存取的文件中讀取數(shù)據(jù) 390
11.4.1 重置文件位置指針 391
11.4.2 信用查詢程序 391
11.5 隨機存取文件 394
11.6 創(chuàng)建一個隨機存取的文件 395
11.7 將數(shù)據(jù)隨機寫入隨機存取文件 396
11.7.1 用fseek定位文件位置指針 398
11.7.2 錯誤檢查 398
11.8 從隨機存取文件中讀取數(shù)據(jù) 399
11.9 案例研究:事務(wù)處理系統(tǒng) 400
11.10 安全的C語言編程 404
第 12章 數(shù)據(jù)結(jié)構(gòu)體 425
12.1 簡介 425
12.2
自引用結(jié)構(gòu)體 426
12.3 動態(tài)內(nèi)存管理 427
12.4 鏈表 428
12.4.1 函數(shù)insert 430
12.4.2
函數(shù)delete 432
12.4.3 函數(shù) isEmpty 和 printList 433
12.5 棧 434
12.5.1 函數(shù)push 437
12.5.2
函數(shù)pop 437
12.5.3 棧的應(yīng)用 438
12.6 隊列 438
12.6.1 函數(shù)enqueue 442
12.6.2
函數(shù)dequeue 443
12.7 樹 443
12.7.1 函數(shù)insertNode 446
12.7.2 遍歷:函數(shù) inOrder, preOrder 和
postOrder 446
12.7.3 消除重復(fù) 447
12.7.4 二叉樹搜索 447
12.7.5 其他二叉樹操作 447
12.8 安全的C語言編程 448
第 13章 計算機科學思維:排序算法
和大O 468
13.1 簡介 468
13.2 算法的效率:大O 469
13.2.1 O(1)算法 469
13.2.2 O(n)算法 469
13.2.3 O(n2)算法 469
13.3 選擇排序 470
13.3.1 選擇排序的實現(xiàn) 471
13.3.2 選擇排序的效率 473
13.4 插入排序 473
13.4.1 插入排序的實現(xiàn) 474
13.4.2 插入排序的效率 475
13.5 案例研究:高性能合并排序的
可視化 476
13.5.1 合并排序的實現(xiàn) 476
13.5.2 合并排序的效率 480
13.5.3 總結(jié)各種算法的大O符號 480
第 14章 預(yù)處理器 485
14.1 簡介 485
14.2 #include預(yù)處理器指令 486
14.3 #define預(yù)處理器指令:符號常量 486
14.4 #define 預(yù)處理器指令:宏 487
14.4.1 有一個參數(shù)的宏 487
14.4.2 雙參數(shù)宏 488
14.4.3 宏的續(xù)行字符 488
14.4.4 #undef預(yù)處理器指令 488
14.4.5 標準庫的宏 488
14.4.6 不要在宏中放置有副作用的
表達式 489
14.5 條件編譯 489
14.5.1 #if...#endif 預(yù)處理器指令 489
14.5.2 用#if...#endif注釋掉代碼塊 490
14.5.3 有條件地編譯調(diào)試代碼 490
14.6 #error和#pragma預(yù)處理器指令 490
14.7 #和##操作符 491
14.8 行號 491
14.9 預(yù)定義的符號常量 492
14.10 斷言 492
14.11 安全的C語言編程 493
第 15章 其他主題 497
15.1 簡介 497
15.2 可變長度的參數(shù)列表 497
15.3 使用命令行參數(shù) 499
15.4 編譯多源文件程序 500
15.4.1 其他文件中全局變量的extern
聲明 501
15.4.2
函數(shù)原型 501
15.4.3 用static限制作用域 501
15.5 exit和atexit終止程序
502
15.6 整數(shù)和浮點字面量的后綴 503
15.7 信號處理 504
15.8 動態(tài)內(nèi)存分配函數(shù)calloc和realloc 506
15.9 goto:無條件分支 507
附錄A 操作符優(yōu)先級 511
附錄B ASCII字符集 513
附錄C 多線程/多核和其他
C18/C11/C99主題 514
C.1 簡介 514
C.2 C99中增加的頭文件 515
C.3 指定的初始值和復(fù)合字面量 515
C.4 bool類型 517
C.5 復(fù)數(shù) 518
C.6 具有可變長度的參數(shù)列表的宏 518
C.7 其他C99特性 519
C.7.1 編譯器最小資源限制 519
C.7.2 restrict關(guān)鍵字 519
C.7.3 可靠的整數(shù)除法 519
C.7.4 靈活數(shù)組成員 520
C.7.5 泛型數(shù)學 520
C.7.6
內(nèi)聯(lián)函數(shù) 520
C.7.7 __func__ 預(yù)定義標識符 521
C.7.8 va_copy 宏程序 521
C.8 C11/C18特性 521
C.8.1 C11/C18頭文件 521
C.8.2 quick_exit函數(shù) 521
C.8.3 Unicode 支持 522
C.8.4 _Noreturn函數(shù)限定符 522
C.8.5 泛型表達式 522
C.8.6 Annex L:可分析性和未定義
行為 522
C.8.7
內(nèi)存對齊控制 523
C.8.8 靜態(tài)斷言 523
C.8.9 浮點類型 523
C.9 案例研究:多線程和多核系統(tǒng)的
性能 523
C.9.1 示例:兩個計算密集型任務(wù)的
順序執(zhí)行 526
C.9.2 示例:兩個計算密集型任務(wù)的
多線程執(zhí)行 527
C.9.3 其他多線程特性 530
附錄D 面向?qū)ο蟮木幊谈拍罱榻B 531
D.1 介紹 531
D.2 面向?qū)ο蟮木幊陶Z言 531
D.3 汽車作為一個對象 531
D.4 方法和類 531
D.5 實例化 532
D.6 復(fù)用 532
D.7 消息和方法調(diào)用 532
D.8 屬性和實例變量 532
D.9 繼承 532
D.10 面向?qū)ο蟮姆治龊驮O(shè)計(OOAD) 532
你還可能感興趣
我要評論
|