出版信息
C語言程式設計
作者:K. N. King
出版社:人民郵電出版社
副標題:現代方法
譯者:呂秀鋒/黃倩
出版年:2010-4
頁數:600
定價:79.00元
裝幀:平裝
叢書:圖靈程式設計叢書
ISBN:9787115219572
內容簡介
C語言仍然是計算機領域的通用語言之一,但最初的 C語言已經和最初的時候大不相同了。本書最主要的一個目的就是通過一種“現代方法”來介紹 C語言,書中強調標準 C,強調軟體工程,不再強調“手工最佳化”。這一版中緊密結合了 C99標準,並與 C89標準進行對照,補充了 C99中的最新特性。本書分為 C語言的基礎特性、 C語言的高級特性、 C語言標準庫和參考資料 4個部分。每章末尾都有一個“問與答”小節給出一系列與該章內容相關的問題及答案,此外還包含適量的習題。
本書是為大學本科階段的 C語言課程編寫的教材,同時也非常適合作為其他課程的輔助用書。
作者簡介
K. N. King ,電腦程式設計教育家,現為喬治亞州立大學數學與計算機科學系副教授。他擁有耶魯大學計算機科學碩士學位,加州大學伯克利分校計算機科學博士學位,曾任教於喬治亞理工學院。。
呂秀鋒,亞洲理工大學(AIT)計算機軟體碩士,現為北京理工大學軟體學院教師。多年來一直從事“計算機基礎(雙語)”、“C語言程式設計(雙語)”以及“程式設計開發與實踐”等本科生課程的教學工作,深受學生歡迎。她還譯有《數據結構與算法:C#語言描述》一書。
黃倩,中國科學院計算技術研究所工學博士,中國計算機學會會員。研究方向包括視頻處理、視頻監控等,已在知名的國際期刊和國際會議論文集上發表10篇論文。譯有《編程珠璣(第2版)》一書。
目錄
第1章 C語言概述1
1.1 C語言的歷史1
1.1.1 起源1
1.1.2 標準化1
1.1.3 基於C的語言2
1.2 C語言的優缺點3
1.2.1 C語言的優點3
1.2.2 C語言的缺點3
1.2.3 高效地使用C語言4
問與答5
第2章 C語言基本概念7
2.1 編寫一個簡單的C程式7
程式顯示雙關語7
2.1.1 編譯和連結8
2.1.2 集成開發環境8
2.2 簡單程式的一般形式9
2.2.1 指令9
2.2.2 函式9
2.2.3 語句10
2.2.4 顯示字元串10
2.3 注釋11
2.4 變數和賦值12
2.4.1 類型12
2.4.2 聲明13
2.4.3 賦值13
2.4.4 顯示變數的值14
程式計算箱子的空間重量14
2.4.5 初始化15
2.4.6 顯示表達式的值16
2.5 讀入輸入16
程式計算箱子的空間重量(改進版)16
2.6 定義常量的名字17
程式華氏溫度轉換為攝氏溫度17
2.7 標識符18
2.8 C程式的書寫規範19
問與答21
練習題23
編程題24
第3章 格式化輸入/輸出26
3.1 printf函式26
3.1.1 轉換說明27
程式用printf函式格式化數28
3.1.2 轉義序列28
3.2 scanf函式29
3.2.1 scanf函式的工作方法30
3.2.2 格式串中的普通字元31
3.2.3 易混淆的printf函式和scanf函式32
程式分數相加32
問與答33
練習題34
編程題35
第4章 表達式36
4.1 算術運算符36
程式計算通用產品代碼的校驗位38
4.2 賦值運算符39
4.2.1 簡單賦值40
4.2.2 左值41
4.2.3 複合賦值41
4.3 自增運算符和自減運算符42
4.4 表達式求值43
4.5 表達式語句45
問與答45
練習題47
編程題49
第5章 選擇語句50
5.1 邏輯表達式50
5.1.1 關係運算符50
5.1.2 判等運算符51
5.1.3 邏輯運算符51
5.2 if語句52
5.2.1 複合語句53
5.2.2 else子句53
5.2.3 級聯式if語句54
程式計算股票經紀人的佣金55
5.2.4 “懸空else”的問題56
5.2.5 條件表達式57
5.2.6 C89中的布爾值58
5.2.7 C99中的布爾值58
5.3 switch語句59
程式顯示法定格式的日期61
問與答62
練習題65
編程題67
第6章 循環69
6.1 while語句69
程式顯示平方表71
程式數列求和71
6.2 do語句72
程式計算整數的位數73
6.3 for語句73
6.3.1 for語句的慣用法74
6.3.2 在for語句中省略表達式75
6.3.3 C99中的for語句75
6.3.4 逗號運算符76
程式顯示平方表(改進版)77
6.4 退出循環78
6.4.1 break語句78
6.4.2 continue語句78
6.4.3 goto語句79
程式賬簿結算80
6.5 空語句81
問與答83
練習題84
編程題85
第7章 基本類型88
7.1 整數類型88
7.1.1 C99中的整數類型90
7.1.2 整數常量90
7.1.3 C99中的整數常量91
7.1.4 整數溢出91
7.1.5 讀/寫整數91
程式數列求和(改進版)92
7.2 浮點類型93
7.2.1 浮點常量94
7.2.2 讀/寫浮點數94
7.3 字元類型94
7.3.1 字元操作95
7.3.2 有符號字元和無符號字元95
7.3.3 算術類型96
7.3.4 轉義序列96
7.3.5 字元處理函式97
7.3.6 用scanf和printf讀/寫字元98
7.3.7 用getchar和putchar讀/寫字元98
程式確定訊息的長度99
7.4 類型轉換100
7.4.1 常用算術轉換101
7.4.2 賦值過程中的轉換102
7.4.3 C99中的隱式轉換103
7.4.4 強制類型轉換103
7.5 類型定義105
7.5.1 類型定義的優點105
7.5.2 類型定義和可移植性105
7.6 sizeof運算符106
問與答107
練習題109
編程題110
第8章 數組113
8.1 一維數組113
8.1.1 數組下標113
程式數列反向115
8.1.2 數組初始化115
8.1.3 指定初始化式116
程式檢查數中重複出現的數字116
8.1.4 對數組使用sizeof運算符117
程式計算利息118
8.2 多維數組119
8.2.1 多維數組初始化120
8.2.2 常量數組121
程式發牌121
8.3 C99中的變長數組122
問與答123
練習題124
編程題125
第9章 函式129
9.1 函式的定義和調用129
程式計算平均值129
程式顯示倒計數130
程式顯示雙關語(改進版)131
9.1.1 函式定義132
9.1.2 函式調用133
程式判定素數134
9.2 函式聲明135
9.3 實際參數136
9.3.1 實際參數的轉換137
9.3.2 數組型實際參數138
9.3.3 變長數組形式參數140
9.3.4 在數組參數聲明中使用static141
9.3.5 複合字面量141
9.4 return語句142
9.5 程式終止143
9.6 遞歸144
程式快速排序146
問與答147
練習題150
編程題153
第10章 程式結構155
10.1 局部變數155
10.1.1 靜態局部變數156
10.1.2 形式參數156
10.2 外部變數156
10.2.1 示例:用外部變數實現棧156
10.2.2 外部變數的利與弊157
程式猜數158
10.3 程式塊161
10.4 作用域162
10.5 構建C程式163
程式給一手牌分類163
問與答169
練習題169
編程題170
第11章 指針172
11.1 指針變數172
11.2 取地址運算符和間接定址運算符173
11.2.1 取地址運算符173
11.2.2 間接定址運算符174
11.3 指針賦值174
11.4 指針作為參數176
程式找出數組中的最大元素和最小元素177
11.5 指針作為返回值179
問與答180
練習題181
編程題182
第12章 指針和數組184
12.1 指針的算術運算184
12.1.1 指針加上整數185
12.1.2 指針減去整數185
12.1.3 兩個指針相減186
12.1.4 指針比較186
12.1.5 指向複合常量的指針186
12.2 指針用於數組處理186
12.3 用數組名作為指針188程式數列反向(改進版)189
12.3.1 數組型實際參數(改進版)189
12.3.2 用指針作為數組名191
12.4 指針和多維數組191
12.4.1 處理多維數組的元素191
12.4.2 處理多維數組的行192
12.4.3 處理多維數組的列192
12.4.4 用多維數組名作為指針192
12.5 C99中的指針和變長數組193
問與答194
練習題195
編程題197
第13章 字元串198
13.1 字元串字面量198
13.1.1 字元串字面量中的轉義序列198
13.1.2 延續字元串字面量199
13.1.3 如何存儲字元串字面量199
13.1.4 字元串字面量的操作200
13.1.5 字元串字面量與字元常量200
13.2 字元串變數200
13.2.1 初始化字元串變數201
13.2.2 字元數組與字元指針202
13.3 字元串的讀和寫203
13.3.1 用printf函式和puts函式寫字元串203
13.3.2 用scanf函式和gets函式讀字元串203
13.3.3 逐個字元讀字元串204
13.4 訪問字元串中的字元205
13.5 使用C語言的字元串庫206
13.5.1 strcpy函式207
13.5.2 strlen函式208
13.5.3 strcat函式208
13.5.4 strcmp函式209程式顯示一個月的提醒列表209
13.6 字元串慣用法211
13.6.1 搜尋字元串的結尾211
13.6.2 複製字元串213
13.7 字元串數組214
程式核對行星的名字217
問與答218
練習題220
編程題222
第14章 預處理器225
14.1 預處理器的工作原理225
14.2 預處理指令227
14.3 宏定義227
14.3.1 簡單的宏227
14.3.2 帶參數的宏229
14.3.3 #運算符231
14.3.4 ##運算符231
14.3.5 宏的通用屬性232
14.3.6 宏定義中的圓括弧233
14.3.7 創建較長的宏233
14.3.8 預定義宏234
14.3.9 C99中新增的預定義宏235
14.3.10 空的宏參數236
14.3.11 參數個數可變的宏236
14.3.12 __func__標識符237
14.4 條件編譯237
14.4.1 #if指令和#endif指令238
14.4.2 defined運算符238
14.4.3 #ifdef指令和#ifndef指令239
14.4.4 #elif指令和#else指令239
14.4.5 使用條件編譯240
14.5 其他指令240
14.5.1 #error指令240
14.5.2 #line指令241
14.5.3 #pragma指令242
14.5.4 _Pragma運算符242
問與答243
練習題245
第15章 編寫大型程式248
15.1 源檔案248
15.2 頭檔案249
15.2.1 #include指令249
15.2.2 共享宏定義和類型定義250
15.2.3 共享函式原型251
15.2.4 共享變數聲明252
15.2.5 嵌套包含253
15.2.6 保護頭檔案253
15.2.7 頭檔案中的#error指令254
15.3 把程式劃分成多個檔案254程式文本格式化255
15.4 構建多檔案程式260
15.4.1 makefile260
15.4.2 連結期間的錯誤262
15.4.3 重新構建程式262
15.4.4 在程式外定義宏264
問與答264
練習題265
編程題266
第16章 結構、聯合和枚舉267
16.1 結構變數267
16.1.1 結構變數的聲明267
16.1.2 結構變數的初始化269
16.1.3 指定初始化269
16.1.4 對結構的操作270
16.2 結構類型270
16.2.1 結構標記的聲明271
16.2.2 結構類型的定義272
16.2.3 結構作為參數和返回值272
16.2.4 複合字面量273
16.3 嵌套的數組和結構274
16.3.1 嵌套的結構274
16.3.2 結構數組274
16.3.3 結構數組的初始化275程式維護零件資料庫275
16.4 聯合281
16.4.1 用聯合來節省空間282
16.4.2 用聯合來構造混合的數據結構284
16.4.3 為聯合添加“標記欄位”284
16.5 枚舉285
16.5.1 枚舉標記和類型名286
16.5.2 枚舉作為整數286
16.5.3 用枚舉聲明“標記欄位”286
問與答287
練習題289
編程題293
第17章 指針的高級套用294
17.1 動態存儲分配294
17.1.1 記憶體分配函式294
17.1.2 空指針295
17.2 動態分配字元串296
……
第18章 聲明 327
第19章 程式設計 345
第20章 底層程式設計 363
第21章 標準庫 377
第22章 輸入/輸出 384
第23章 庫對數值和字元數據的支持 419
第24章 錯誤處理 446
第25章 國際化特性 456
第26章 其他庫函式 482
第27章 C99對數學計算的新增支持 503
附錄A C語言運算符 524
附錄B C99與C89的比較 525
附錄C C89與經典C的比較 529
附錄D 標準庫函式 532
附錄E ASCII字元集 569
參考文獻 570
索引 573