C程序設計教程, 9/e (C How to Program: With Case Studies in Applications and Systems Programming, 9/e)
[美]保羅·戴特爾(Paul Deitel)、哈維·戴特爾(Harvey Deitel)
- 出版商: 人民郵電
- 出版日期: 2023-10-01
- 定價: $839
- 售價: 8.5 折 $713
- 語言: 簡體中文
- 頁數: 532
- ISBN: 7115597219
- ISBN-13: 9787115597212
- 此書翻譯自: C How to Program: With Case Studies in Applications and Systems Programming, 9/e (GE-Paperback)
立即出貨
買這商品的人也買了...
-
$460$414 -
$499$424 -
$720$562 -
$4,980$4,731 -
$500$390 -
$408$388 -
$650$507 -
$1,200$948 -
$520$406 -
$750$675 -
$2,380$2,261 -
$2,350$2,233 -
$594$564 -
$630$498 -
$1,034C# 高級編程, 12/e
-
$560運算放大器權威指南(第5版)
-
$720$562 -
$474$450 -
$774$735 -
$680$537 -
$653車規級芯片技術
-
$450$428 -
$888$844 -
$680$530 -
$640$627
相關主題
商品描述
本書是優秀的C語言教程。全書系統地介紹了4種當今流行的程序設計方法——面向過程、基於對象、面向對象以及泛型編程,內容系統、生動、易懂。作者由淺入深地介紹了結構化編程及軟件工程的基本概念,從簡單概念到最終完整的語言描述,清晰、正確、透徹、詳細地講解了C語言,尤其註重程序設計思想和方法的介紹。此外,還涉及安全的C程序涉及、提高練習題,覆蓋C++和麵向對象程序設計、基於Allegro的游戲編程、C標準介紹等內容。
作者簡介
Paul J. Deitel是Deitel & Associates公司的首席执行官和首席技术官,他毕业于麻省理工学院,在计算机领域有41年的经验。保罗是世界上颇有经验的编程语言培训师之一,自1992年以来一直为软件开发人员教授专业课程。他已经为国际上的学术、工业、政府和军事客户提供了数百个编程课程,包括加州大学洛杉矶分校、思科、IBM、西门子、Sun Microsystems(现在的Oracle)、戴尔、Fidelity、肯尼迪航天中心的NASA、美国国家严重风暴实验室、白沙导弹发射场、Rogue Wave软件、波音、北电网络、Puma、iRobot和其他许多机构。他和他的合著者哈维·M·迪特尔博士是世界上热销的编程语言教科书、专业书籍、视频和互动多媒体电子学习作者,以及虚拟和现场培训主持人。
Dr. Harvey M. Deitel 是Deitel & Associates, Inc.的主席兼首席战略官,在计算机领域有59年的经验。Deitel博士在麻省理工学院获得了电子工程的学士和硕士学位,并在波士顿大学获得了数学博士学位,他在这些项目中的每一个项目都是在计算机科学项目分出之前研究的。他有丰富的大学教学经验,包括获得终身教职并担任波士顿学院计算机科学系主任,然后于1991年与他的儿子Paul一起成立了Deitel & Associates, Inc.。Deitel父子的出版物赢得了国际认可,在日语、德语、俄语、西班牙语、法语、波兰语、意大利语、简体中文、繁体中文、韩语、葡萄牙语、希腊语、乌尔都语和土耳其语中出版了100多部翻译作品。Deitel博士已经为学术界、企业、政府和军事客户提供了数百个编程课程。
目錄大綱
第 1章 電腦和C語言簡介 1
1.1 簡介 2
1.2 硬件和軟件 2
1.2.1 摩爾定律 3
1.2.2 電腦組織 3
1.3 數據層次結構 5
1.4 機器語言、匯編語言和高級語言 7
1.5 操作系統 9
1.6 C編程語言 11
1.7 C語言標準庫和開源庫 12
1.8 其他流行的編程語言 13
1.9 典型的C語言程序開發環境 14
1.9.1 第 1階段:創建一個程序 14
1.9.2 第 2和第3階段:預處理和
編譯C程序 15
1.9.3 第4階段:鏈接 15
1.9.4 第5階段:加載 16
1.9.5 第6階段:執行 16
1.9.6 執行時可能出現的問題 16
1.9.7 標準輸入、標準輸出和標準
錯誤流 17
1.10 在Windows、Linux和macOS中
測試驅動一個C應用程序 17
1.10.1 在Windows 10上用Visual Studio
2019社區版編譯和運行一個C語言
程序 17
1.10.2 在macOS上用Xcode編譯和運行
一個C程序
20
1.10.3 在Linux上用GNU gcc編譯和
運行一個C應用程序 22
1.10.4 在GCC Docker容器中編譯和
運行一個C應用程序,並在
Windows 10、macOS或Linux上
原生運行。 24
1.11 因特網、萬維網、雲和物聯網 25
1.11.1 因特網:一個網絡的網絡 26
1.11.2 萬維網:讓因特網變得更友好 26
1.11.3 雲 26
1.11.4 物聯網 27
1.12 軟件技術 27
1.13 大數據有多大? 28
1.13.1 大數據分析 32
1.13.2 數據科學和大數據正在產生變化:
使用案例 33
1.14 案例研究:大數據移動應用 33
1.15 AI:在電腦科學和數據科學的
交匯處 34
第 2章 C語言編程入門 39
2.1 簡介 39
2.2 一個簡單的C程序:打印一行文本 39
2.3 另一個簡單的C程序:兩個整數
相加 42
2.4 內存概念 45
2.5 C語言中的算術 46
2.6 判斷:相等和關系操作符 49
2.7 安全的C語言編程 52
第3章 結構體化程序開發 61
3.1 簡介 61
3.2 算法 61
3.3 偽代碼 62
3.4 控制結構體 63
3.5 if選擇語句 64
3.6 if...else選擇語句 65
3.7 while循環語句 68
3.8 制訂算法案例研究1:計數器控制的
循環 69
3.9 用自頂向下、逐步細化的方式制定算法
案例研究2:標記控制的循環 70
3.10 用自頂向下、逐步細化的方式制定算法
案例研究3:嵌套控制語句 75
3.11 賦值操作符 78
3.12 遞增和遞減操作符 79
3.13 安全的C語言編程 81
第4章 程序控制 95
4.1 簡介 95
4.2 循環要點 95
4.3 計數器控制的循環 96
4.4 for循環語句 97
4.5 使用for語句的例子 99
4.6 switch多重選擇語句 102
4.7 do...while循環語句 106
4.8 break和continue語句 107
4.9 邏輯操作符 109
4.10 區分相等 (==) 和賦值 (
=)
操作符 111
4.11 結構體化編程的總結 112
4.12 安全的C語言編程 116
第5章 函數 128
5.1 簡介 128
5.2 C語言中的程序模塊化 128
5.3 數學庫函數 129
5.4 函數 131
5.5 函數的定義 131
5.5.1 square函數 131
5.5.2 maximum函數 133
5.6 函數原型:更深入的觀察 134
5.7 函數調用棧和棧幀 136
5.8 頭文件 139
5.9 通過值和引用傳遞參數 140
5.10 隨機數生成 140
5.11 隨機數字模擬案例研究:建立一個
賭場游戲 144
5.12 存儲類型 146
5.13 作用域規則 147
5.14 遞歸 150
5.15 使用遞歸的例子:斐波那契數列 153
5.16 遞歸與循環 155
5.17 安全的C語言編程:安全的隨機數
生成 157
第6章 數組 172
6.1 簡介 173
6.2 數組 173
6.3 定義數組 174
6.4 數組示例 174
6.4.1 定義一個數組並使用循環來設置
數組的元素值 174
6.4.2 在定義中用初始值列表初始化
數組
175
6.4.3 用符號常量指定數組的大小,
用計算方法初始化數組元素 176
6.4.4 對數組中的元素求和 177
6.4.5 使用數組來總結調查的結果 177
6.4.6 用條形圖表示數組元素的值 178
6.4.7 擲骰子60,000,000次並將結果
匯總到一個數組中 179
6.5 使用字符數組來存儲和操作字符串 180
6.5.1 用一個字符串初始化一個
字符數組 180
6.5.2 用字符的初始化列表初始化
一個字符數組 181
6.5.3 訪問一個字符串中的字符 181
6.5.4 輸入一個字符數組 181
6.5.5 輸出一個代表字符串的字符
數組 181
6.5.6 演示字符數組 181
6.6 靜態局部數組和自動局部數組 182
6.7 將數組傳遞給函數 184
6.8 對數組排序 187
6.9 數據科學入門案例研究:
調查數據分析 189
6.10 搜索數組 193
6.10.1 用線性搜索來搜索一個數組 193
6.10.2 用二分搜索來搜索數組 194
6.11 多維數組 197
6.11.1 展示二維數組 197
6.11.2 初始化雙下標數組 198
6.11.3 設置某一行的元素 199
6.11.4 計算二維數組中的元素總數 200
6.11.5 二維數組操作 200
6.12 可變長度數組 203
6.13 安全的C語言編程 205
第7章 指針 220
7.1 簡介 221
7.2 指針變量的定義和初始化 221
7.3 指針操作符 222
7.4 按引用向函數傳遞參數 224
7.5 在指針中使用const限定符 227
7.5.1 使用指向可變數據的可變指針
將字符串轉換為大寫字母 227
7.5.2 用常量數據的可變指針逐個
字符打印字符串 228
7.5.3 試圖修改可變數據的常量指針 229
7.5.4 試圖修改常量數據的常量指針 230
7.6 使用按引用傳遞的冒泡排序 231
7.7 sizeof操作符 233
7.8 指針表達式和指針算術 235
7.8.1 指針算術操作符 235
7.8.2 將一個指針指向一個數組 235
7.8.3 將一個整數添加到一個指針上 235
7.8.4 從一個指針中減去一個整數 236
7.8.5 指針的遞增和遞減 236
7.8.6 用一個指針減去另一個指針 236
7.8.7 互相賦值指針 236
7.8.8 void指針 236
7.8.9
比較指針 237
7.9 指針和數組的關系 237
7.9.1 指針/偏移量表示法 237
7.9.2 指針/下標表示法 238
7.9.3 不能用指針算術修改數組名稱 238
7.9.4 演示指針下標和偏移量 238
7.9.5 用數組和指針復制字符串 239
7.10 指針的數組 240
7.11 隨機數模擬案例研究:
洗牌和發牌 241
7.12 函數指針 245
7.12.1 按升序或降序排序 245
7.12.2 使用函數指針創建一個菜單
驅動的系統 247
7.13 安全的C語言編程 248
第8章 和字符串 276
8.1 簡介 277
8.2 字符串和字符的基本原理 277
8.3 字符處理庫 278
8.3.1 函數isdigit、isalpha、isalnum和
isxdigit 279
8.3.2
函數islower、isupper、tolower和
toupper 280
8.3.3 函數isspace、iscntrl、ispunct、
isprint和isgraph 280
8.4 字符串轉換函數 282
8.4.1 函數strtod 282
8.4.2
函數strtol 283
8.4.3 函數strtoul 283
8.5 標準輸入/輸出庫函數 284
8.5.1 函數fgets和putchar 285
8.5.2
函數getchar 286
8.5.3 函數sprintf 286
8.5.4
函數scanf 287
8.6 字符串處理庫的字符串操作函數 287
8.6.1 函數strcpy和strncpy 288
8.6.2
函數strcat和strncat 289
8.7 字符串處理庫的比較函數 290
8.8 字符串處理庫的搜索函數 291
8.8.1 函數strchr 292
8.8.2
函數strcspn 292
8.8.3 函數strpbrk 293
8.8.4
函數strrchr 293
8.8.5
函數strspn 293
8.8.6
函數strstr 294
8.8.7
函數strtok 294
8.9 字符串處理庫的內存函數 296
8.9.1 函數memcpy 296
8.9.2
函數memmove 297
8.9.3 函數memcmp 297
8.9.4
函數memchr 298
8.9.5
函數memset 298
8.10 字符串處理庫的其他函數 299
8.10.1 函數strerror 299
8.10.2 函數strlen 299
8.11 安全的C語言編程 300
第9章 格式化的輸入/輸出 321
9.1 簡介 321
9.2 流 322
9.3 用printf格式化輸出 322
9.4 打印整數 323
9.5 打印浮點數值 324
9.5.1 轉換規範e、E和f 324
9.5.2 轉換規範g和G 324
9.5.3 示範浮點轉換規範 325
9.6 打印字符串和字符 326
9.7 其他轉換規範 326
9.8 用域寬和精度打印 327
9.8.1 整數的域寬 327
9.8.2 整數、浮點數和字符串的精度 328
9.8.3 結合域寬和精度 329
9.9 printf格式標記 329
9.9.1 右對齊和左對齊 330
9.9.2 打印帶有或不帶有+標記的
正數和負數 330
9.9.3 使用空格標記 330
9.9.4 使用#標記 331
9.9.5 使用0標記 331
9.10 打印字面量和轉義序列 332
9.11 用scanf格式化輸入 333
9.11.1 scanf 語法 333
9.11.2 scanf轉換規範 333
9.11.3 讀取整數 334
9.11.4 讀取浮點數字 334
9.11.5 讀取字符和字符串 335
9.11.6 使用掃描集 335
9.11.7 使用域寬 336
9.11.8 跳過輸入流中的字符 337
9.12 安全的C語言編程 338
第 10章 結構體體、共享體、位操作
和枚舉 344
10.1 簡介 345
10.2 結構體體的定義 345
10.2.1
自引用結構體體 345
10.2.2 定義結構體體類型的變量 346
10.2.3 結構體體標簽名稱 346
10.2.4 可以對結構體體進行的操作 346
10.3 初始化結構體體 347
10.4 用.和->訪問結構體體成員 348
10.5 在函數中使用結構體體 349
10.6 typedef 349
10.7 隨機數模擬案例研究:高性能的
洗牌和發牌 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 顯示無符號整數的位數 355
10.9.2 使函數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 匿名結構體體和共享體 365
10.13 安全的C語言編程 366
第 11章 文件處理 385
11.1 簡介 385
11.2 文件和流 385
11.3 創建一個順序存取的文件 386
11.3.1 指向FILE的指針 387
11.3.2 使用fopen來打開一個文件 387
11.3.3 使用feof來檢查文件結束
標記 388
11.3.4 使用fprintf向文件寫數據 388
11.3.5 使用fclose來關閉一個文件 388
11.3.6 文件打開模式 389
11.4 從順序存取的文件中讀取數據 390
11.4.1 重置文件位置指針 391
11.4.2 信用查詢程序 391
11.5 隨機存取文件 394
11.6 創建一個隨機存取的文件 395
11.7 將數據隨機寫入隨機存取文件 396
11.7.1 用fseek定位文件位置指針 398
11.7.2 錯誤檢查 398
11.8 從隨機存取文件中讀取數據 399
11.9 案例研究:事務處理系統 400
11.10 安全的C語言編程 404
第 12章 數據結構體 425
12.1 簡介 425
12.2
自引用結構體 426
12.3 動態內存管理 427
12.4 鏈表 428
12.4.1 函數insert 430
12.4.2
函數delete 432
12.4.3 函數 isEmpty 和 printList 433
12.5 棧 434
12.5.1 函數push 437
12.5.2
函數pop 437
12.5.3 棧的應用 438
12.6 隊列 438
12.6.1 函數enqueue 442
12.6.2
函數dequeue 443
12.7 樹 443
12.7.1 函數insertNode 446
12.7.2 遍歷:函數 inOrder, preOrder 和
postOrder 446
12.7.3 消除重復 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 選擇排序的實現 471
13.3.2 選擇排序的效率 473
13.4 插入排序 473
13.4.1 插入排序的實現 474
13.4.2 插入排序的效率 475
13.5 案例研究:高性能合並排序的
可視化 476
13.5.1 合並排序的實現 476
13.5.2 合並排序的效率 480
13.5.3 總結各種算法的大O符號 480
第 14章 預處理器 485
14.1 簡介 485
14.2 #include預處理器指令 486
14.3 #define預處理器指令:符號常量 486
14.4 #define 預處理器指令:宏 487
14.4.1 有一個參數的宏 487
14.4.2 雙參數宏 488
14.4.3 宏的續行字符 488
14.4.4 #undef預處理器指令 488
14.4.5 標準庫的宏 488
14.4.6 不要在宏中放置有副作用的
表達式 489
14.5 條件編譯 489
14.5.1 #if...#endif 預處理器指令 489
14.5.2 用#if...#endif註釋掉代碼塊 490
14.5.3 有條件地編譯調試代碼 490
14.6 #error和#pragma預處理器指令 490
14.7 #和##操作符 491
14.8 行號 491
14.9 預定義的符號常量 492
14.10 斷言 492
14.11 安全的C語言編程 493
第 15章 其他主題 497
15.1 簡介 497
15.2 可變長度的參數列表 497
15.3 使用命令行參數 499
15.4 編譯多源文件程序 500
15.4.1 其他文件中全局變量的extern
聲明 501
15.4.2
函數原型 501
15.4.3 用static限製作用域 501
15.5 exit和atexit終止程序
502
15.6 整數和浮點字面量的後綴 503
15.7 信號處理 504
15.8 動態內存分配函數calloc和realloc 506
15.9 goto:無條件分支 507
附錄A 操作符優先級 511
附錄B ASCII字符集 513
附錄C 多線程/多核和其他
C18/C11/C99主題 514
C.1 簡介 514
C.2 C99中增加的頭文件 515
C.3 指定的初始值和復合字面量 515
C.4 bool類型 517
C.5 復數 518
C.6 具有可變長度的參數列表的宏 518
C.7 其他C99特性 519
C.7.1 編譯器最小資源限制 519
C.7.2 restrict關鍵字 519
C.7.3 可靠的整數除法 519
C.7.4 靈活數組成員 520
C.7.5 泛型數學 520
C.7.6
內聯函數 520
C.7.7 __func__ 預定義標識符 521
C.7.8 va_copy 宏程序 521
C.8 C11/C18特性 521
C.8.1 C11/C18頭文件 521
C.8.2 quick_exit函數 521
C.8.3 Unicode 支持 522
C.8.4 _Noreturn函數限定符 522
C.8.5 泛型表達式 522
C.8.6 Annex L:可分析性和未定義
行為 522
C.8.7
內存對齊控制 523
C.8.8 靜態斷言 523
C.8.9 浮點類型 523
C.9 案例研究:多線程和多核系統的
性能 523
C.9.1 示例:兩個計算密集型任務的
順序執行 526
C.9.2 示例:兩個計算密集型任務的
多線程執行 527
C.9.3 其他多線程特性 530
附錄D 面向對象的編程概念介紹 531
D.1 介紹 531
D.2 面向對象的編程語言 531
D.3 汽車作為一個對象 531
D.4 方法和類 531
D.5 實例化 532
D.6 復用 532
D.7 消息和方法調用 532
D.8 屬性和實例變量 532
D.9 繼承 532
D.10 面向對象的分析和設計(OOAD) 532