簡介
作者:[印] E. Balagurusamy 著 李周芳 譯
定價:79.80元
印次:1-1
ISBN:9787302471202
出版日期:2017.07.01
印刷日期:2017.06.13
內容
本書專門用於滿足渴望成為程式設計師的學生,最新版按照Bloom分類法所定的學習目標來呈現主題,支持基於學習的成果。本書解釋了基本概念和高級內容,且主要關注編程基礎。本書詳盡地解釋了數組、字元串、函式、指針和數據結構。大量示例使內容更相關,提高了學習效果。本書適用於初學者和有經驗的專業人員,有關C語言的幾乎所有問題在這本書中都能找到答案。
目錄
第1章 C語言概述 1
1.1 C語言的歷史 1
1.2 C語言的主要特性 3
1.3 示例程式1:顯示一條訊息 3
1.4 示例程式2:兩個數相加 6
1.5 示例程式3:利息計算 7
1.6 示例程式4:子例程的使用 9
1.7 示例程式5:數學函式的使用 10
1.8 C程式的基本結構 11
1.9 編程風格 12
1.10 運行C程式 13
1.11 在UNIX系統環境下 14
1.11.1 創建程式 14
1.11.2 編譯與連結 15
1.11.3 運行程式 15
1.11.4 創建自己的可運行檔案 15
1.11.5 多個源檔案問題 16
1.12 在MS-DOS系統環境下 17
重要術語 17
謹記 17
複習題 18
調試練習 19
編程練習 20
第2章 常量、變數及數據類型 23
2.1 概述 23
2.2 字元集 23
2.3 C標記符 25
2.4 關鍵字與標識符 25
2.5 常量 26
2.5.1 整型常量 26
2.5.2 實數常量 28
2.5.3 單字元常量 29
2.5.4 字元串常量 29
2.5.5 反斜槓字元常量 29
2.6 變數 30
2.7 數據類型 31
2.7.1 整型 32
2.7.2 浮點型 33
2.7.3 void類型 34
2.7.4 字元類型 34
2.8 變數的聲明 34
2.8.1 基本類型的聲明 34
2.8.2 自定義類型的聲明 36
2.9...
2.10變數的賦值38
2.10.1賦值語句39
2.10.2從鍵盤讀取數據41
2.11符號常量的定義43
2.11.1可修改性43
2.11.2可理解性43
2.12將變數聲明為常量44
2.13將變數聲明為可變的45
2.14數據的上溢和下溢45
重要術語45
謹記46
2.15案例學習46
2.15.1平均數計算(中級難度)46
2.15.2溫度轉換問題(中級難度)47
複習題48
調試練習50
編程練習50
第3章運算符與表達式53
3.1概述53
3.2算術運算符54
3.2.1整數算術運算54
3.2.2實數算術運算55
3.2.3混合算術運算56
3.3關係運算符56
3.4邏輯運算符57
3.5賦值運算符58
3.6遞增和遞減運算符60
3.7條件運算符61
3.8逐位運算符61
3.9特殊運算符62
3.9.1逗號運算符62
3.9.2sizeof運算符63
3.10算術表達式64
3.11表達式的計算64
3.12算術表達式的優先權65
3.13一些可計算性問題67
3.14表達式中的類型轉換68
3.14.1隱式類型轉換68
3.14.2顯式類型轉換70
3.15運算符的優先權及其關聯性71
3.16數學函式73
關鍵術語74
謹記74
3.17案例學習75
3.17.1銷售人員的工資
(中等難度)75
3.17.2二次方程的求解
(高級難度)76
複習題77
調試練習80
編程練習81
第4章管理輸入和輸出操作85
4.1概述85
4.2讀取一個字元86
4.3寫一個字元88
4.4格式化輸入90
4.4.1整數輸入90
4.4.2輸入實數92
4.4.3輸入字元串93
4.4.4混合數據類型的讀取95
4.4.5錯誤輸入的檢測96
4.4.6使用scanf函式時應記住的
幾個要點98
4.5格式化輸出98
4.5.1整數的輸出99
4.5.2實數的輸出100
4.5.3單個字元的顯示102
4.5.4字元串的顯示102
4.5.5混合數據的輸出103
4.5.6提高輸出的可讀性104
關鍵術語105
謹記105
4.6案例學習106
4.6.1庫存報告(中級難度)106
4.6.2可靠性圖形(高級難度)107
複習題109
調試練習111
編程練習112
第5章判斷與分支115
5.1概述115
5.2if判斷語句115
5.3簡單if語句116
5.4if…else語句120
5.5嵌套if…else語句122
5.6階梯式elseif語句125
5.7switch語句128
5.8?:運算符132
5.9goto語句136
關鍵術語138
謹記139
5.10案例學習139
5.10.1數值的分布範圍
(中級難度)139
5.10.2賬單計算(中級難度)141
練習題143
調試練習147
編程練習148
第6章判斷與循環153
6.1概述153
6.2while語句155
6.3do語句157
6.4for語句159
6.4.1簡單的for循環159
6.4.2for循環的其他特性163
6.4.3for循環的嵌套165
6.5循環中的跳轉168
6.5.1跳出循環168
6.5.2跳過循環的一部分171
6.5.3避免使用goto語句173
6.5.4跳出程式174
6.6簡潔的測試表達式174
關鍵術語175
謹記175
6.7案例學習176
6.7.1二項式係數表(中級難度)176
6.7.2柱狀圖(中級難度)177
6.7.3最小成本(中級難度)179
6.7.4描繪兩函式的曲線圖
(高級難度)180
複習題182
調試練習184
編程練習185
第7章數組189
7.1概述189
7.2一維數組191
7.3一維數組的聲明192
7.4一維數組的初始化194
7.4.1編譯時初始化194
7.4.2運行時初始化195
7.5二維數組199
7.6二維數組的初始化203
7.7多維數組210
7.8動態數組211
7.9與數組相關的其他內容211
關鍵術語212
謹記212
7.10案例學習213
7.10.1數列的中值問題
(中級難度)213
7.10.2標準差的計算(中級難度)215
7.10.3測試評分(高級難度)217
7.10.4產品與銷售分析
(高級難度)219
複習題224
調試練習225
編程練習227
第8章字元數組與字元串231
8.1概述231
8.2字元串變數的聲明與初始化232
8.3從終端讀取字元串233
8.3.1使用scanf函式233
8.3.2讀取文本行235
8.3.3使用getchar和gets函式235
8.4在螢幕上顯示字元串239
8.4.1使用printf函式239
8.4.2使用putchar和puts函式242
8.5字元的算術運算243
8.6將字元串組合在一起245
8.7兩個字元串的比較246
8.8字元串處理函式246
8.8.1strcat函式247
8.8.2strcmp函式248
8.8.3strcpy函式248
8.8.4strlen函式249
8.8.5其他字元串函式251
8.9字元串表253
8.10字元串的其他特性254
關鍵術語255
謹記255
8.11案例學習255
8.11.1計算文本中的單詞數
(中級難度)255
8.11.2客戶列表的處理
(中級難度)257
複習題259
調試練習261
編程練習262
第9章用戶自定義函式265
9.1概述265
9.2為什麼需要自定義函式265
9.3多函式程式266
9.4自定義函式的元素269
9.5函式定義269
9.5.1函式頭270
9.5.2函式體271
9.6返回值及其類型271
9.7函式調用273
9.8函式聲明274
9.9函式的類型276
9.10無參數、無返回值的函式276
9.11有參數、無返回值的函式278
9.12有參數、有返回值的函式281
9.13無參數但有一個返回值的
函式285
9.14返回多個值的函式285
9.15函式的嵌套287
9.16函式的遞歸288
9.17將數組傳遞給函式289
9.17.1一維數組289
9.17.2二維數組292
9.18將字元串傳遞給函式293
9.19變數的作用域、可見性和
生存期294
9.19.1自動變數294
9.19.2外部變數296
9.19.3外部聲明298
9.19.4靜態變數300
9.19.5暫存器變數301
9.19.6嵌套代碼塊302
9.20多檔案程式303
關鍵術語304
謹記305
9.21案例學習306
複習題308
調試練習311
編程練習312
第10章結構體與共用體315
10.1概述315
10.2結構體的定義316
10.3聲明結構體變數317
10.4訪問結構體成員319
10.5結構體的初始化320
10.6結構體變數的複製與比較322
10.7單個成員的運算323
10.8結構體數組324
10.9結構體中的數組326
10.10結構體中的結構體328
10.11結構體與函式330
10.12共用體332
10.13結構體的大小333
10.14位域334
關鍵術語336
謹記336
10.15案例學習337
複習題340
調試練習343
編程練習344
第11章指針347
11.1概述347
11.2理解指針348
11.3訪問變數的地址350
11.4指針變數的聲明351
11.5指針變數的初始化352
11.6通過指針訪問變數353
11.7指針鏈355
11.8指針表達式356
11.9指針的遞增與比例因子357
11.10指針與數組358
11.11指針與字元串361
11.12指針數組363
11.13將指針作為函式的參數364
11.14函式返回指針367
11.15指向函式的指針368
11.16指針與結構體370
11.17指針存在的問題373
關鍵術語374
謹記374
11.18案例學習375
11.18.1考試成績處理程式
(高級難度)375
11.18.2庫存更新程式
(中級難度)378
複習題379
調試練習381
編程練習382
第12章檔案管理385
12.1概述385
12.2定義並打開檔案386
12.3關閉檔案387
12.4檔案的輸入/輸出操作388
12.4.1getc與putc函式388
12.4.2getw和putw函式389
12.4.3fprintf與fscanf函式391
12.5I/O操作的錯誤處理393
12.6隨機訪問檔案396
12.7命令行參數401
關鍵術語403
謹記404
複習題404
調試練習405
編程練習406
第13章動態記憶體分配與鍊表407
13.1概述407
13.2動態記憶體分配407
13.3用malloc函式分配一塊記憶體408
13.4用calloc函式分配多個
記憶體塊410
13.5用free函式釋放已用的空間411
13.6用realloc函式改變記憶體塊的
大小411
13.7鍊表的概念413
13.8鍊表的優點416
13.9鍊表的種類417
13.10再論指針417
13.11創建鍊表419
13.12插入一個數據項422
13.13刪除數據項425
13.14鍊表的套用427
關鍵術語428
謹記428
13.15案例學習429
13.15.1在已排序鍊表中插入
數據(中級難度)429
13.15.2構建已排序的鍊表
(高級難度)432
複習題434
調試練習436
編程練習437
第14章預處理器439
14.1概述439
14.2宏替換指令440
14.2.1簡單宏替換440
14.2.2帶參數的宏442
14.2.3宏嵌套443
14.2.4取消宏定義444
14.3檔案包含444
14.4編譯器控制指令445
14.4.1情形1445
14.4.2情形2446
14.4.3情形3447
14.4.4情形4447
14.5ANSIC的其他預處理指令448
14.5.1#elif指令448
14.5.2#pragma指令449
14.5.3#error指令449
14.5.4字元串化運算符#450
14.5.5標記符貼上運算符##450
關鍵術語451
謹記451
複習題451
調試練習452
編程練習452
第15章C程式開發的一些指導原則455
15.1概述455
15.2程式設計455
15.2.1問題分析456
15.2.2勾勒出程式的結構456
15.2.3算法開發456
15.2.4控制結構的選擇457
15.3程式編碼457
15.3.1自身文檔化457
15.3.2語句的構造458
15.3.3輸入/輸出格式459
15.3.4程式的通用性459
15.4常見的程式錯誤459
15.4.1丟失分號459
15.4.2誤用分號460
15.4.3丟失括弧460
15.4.4丟失引號461
15.4.5誤用引號461
15.4.6使用不正確的注釋字元461
15.4.7未聲明變數462
15.4.8忽視了運算符的優先權462
15.4.9忽視了遞增/遞減運算符
的計算順序463
15.4.10忽視了函式參數的
說明463
15.4.11在函式調用中實參和
形參類型不匹配463
15.4.12函式未聲明464
15.4.13在scanf函式的參數中
丟失了&運算符464
15.4.14超出了數組的邊界464
15.4.15忘記了給字元串的
空字元留出空間465
15.4.16使用未初始化的指針465
15.4.17丟失了間接運算符和
地址運算符465
15.4.18在指針表達式中
丟失括弧466
15.4.19宏定義語句中的參數
遺漏了括弧466
15.5程式測試與調試467
15.5.1錯誤的類型467
15.5.2程式測試468
15.5.3程式調試468
15.6程式的效率469
15.6.1運行時間469
15.6.2記憶體需求469
關鍵術語469
謹記470
複習題470
附錄A位級程式設計473
附錄B字元的ASCII值479
附錄CANSIC語言的庫函式481
附錄D項目設計485
附錄EC99/C11的特性527
附錄F使用C語言進行圖形編程535