C語言程序設計
內容描述
學習任何程序設計語言的好方法都是創建良好的程序,C 語言也不例外。一旦決定編寫程序我們就會發現,總是有至少兩種方法可以實現。那麽,如何才能找到好的方法來實現程序?本書就能幫助讀者解決此類問題。本書是一本C 語言程序設計的教材。多年來,本書被很多工程和科學研究所及院校指定為學習教材。
本書這一版本(第17 版)除了講解C 語言中基本的函數、指針、控制指令、數據類型、數組、字符串、輸入輸出、位操作等內容外,還增加了C 語言程序設計的各個主題的實例和麵試問題,以便讀者盡快熟悉C 語言的實際應用。書中的實例和習題已經過作者認真挑選,集中體現了各個知識要點的具體用法。本書提供可供讀者下載的程序源代碼,並配套出版《C 語言程序設計 習題解答》。
本書結構合理,內容深入淺出,既適合用作高等學校本科和專科學生學習C 語言程序設計的教材,也適合用作零基礎的程序設計初學者的自學用書。
目錄大綱
第 1 章 起步 001
本章內容 002
1.1 什麽是C 語言 003
1.2 C 語言的基礎知識 003
1.2.1 字母、數字和特殊符號 004
1.2.2 常量、變量和關鍵字 004
1.2.3 C 語言的常量類型 004
1.2.4 整型常量的創建規則 005
1.2.5 浮點型常量的創建規則 005
1.2.6 字符型常量的創建規則 005
1.2.7 C 語言的變量類型 006
1.2.8 變量名的創建規則 006
1.2.9 C 語言的關鍵字 006
1.3 第 1 個C 語言程序 007
1.3.1 C 語言程序的格式 007
1.3.2 C 語言程序中的註釋 007
1.3.3 什麽是main() 008
1.3.4 變量及其用法 009
1.3.5 printf() 及其用法 009
1.3.6 編譯和運行 010
1.4 接收輸入 010
1.5 程序 011
習題 012
課後筆記 014
第 2 章 C 語言的指令 017
本章內容 018
2.1 指令的類型 019
2.2 類型聲明指令 019
2.3 算術指令 019
2.4 整型和浮點型的轉換 021
2.5 賦值時的類型轉換 021
2.6 操作符的優先層次 022
2.7 操作符的結合性 024
2.8 控制指令 024
2.9 程序 024
習題 026
課後筆記 028
第3 章 決策控制指令 031
本章內容 032
3.1 if-else 語句 033
3.2 if-else 中的多條語句 034
3.3 嵌套的if-else 語句 035
3.4 一點告誡 036
3.5 程序 037
習題 038
課後筆記 041
第4 章 更復雜決策的創建 043
本章內容 044
4.1 使用邏輯操作符:檢測範圍 045
4.2 使用邏輯操作符:是 否問題 046
4.3 ! 操作符 048
4.4 再論操作符的優先層次 049
4.5 條件操作符 049
4.6 程序 050
習題 052
課後筆記 056
第5 章 循環控制指令 059
本章內容 060
5.1 循環 061
5.2 while 循環 061
5.2.1 提示和陷阱 062
5.2.2 其他操作符 063
5.3 程序 065
習題 066
課後筆記 068
第6 章 更復雜的循環控制
指令 069
本章內容 070
6.1 for 循環 071
6.1.1 循環的嵌套 073
6.1.2 for 循環的多重初始化 074
6.2 break 語句 074
6.3 continue 語句 075
6.4 do-while 循環 076
6.5 非常規循環 077
6.6 程序 078
習題 079
課後筆記 081
第7 章 case 控制指令 083
本章內容 084
7.1 使用switch 的決策 085
7.2 switch 與if-else 梯狀結構的對比 088
7.3 goto 關鍵字 088
7.4 程序 090
習題 092
課後筆記 095
第8 章 函數 097
本章內容 098
8.1 什麽是函數 099
8.2 在函數之間傳遞值 101
8.3 參數的傳遞順序 104
8.4 使用庫函數 104
8.5 一個不確定的問題 105
8.6 函數的返回類型 105
8.7 程序 106
習題 108
課後筆記 109
第9 章 指針 111
本章內容 112
9.1 傳值調用和傳引用調用 113
9.2 指針概述 113
9.3 再論函數調用 116
9.4 結論 118
9.5 程序 118
習題 120
課後筆記 122
第 10 章 遞歸 125
本章內容 126
10.1 遞歸的概念 127
10.2 程序 128
習題 130
課後筆記 131
第 11 章 再論數據類型 133
本章內容 134
11.1 整型:long、short、signed、unsigned 135
11.2 字符型:signed、unsigned 136
11.3 浮點型:float、double、long double 136
11.4 一些其他問題 137
11.5 C 語言的存儲類型 138
11.5.1 自動存儲類型 138
11.5.2 寄存器存儲類型 139
11.5.3 靜態存儲類型 140
11.5.4 外部存儲類型 140
11.5.5 一些微妙的問題 142
11.5.6 何時何地使用存儲類型 143
習題 143
課後筆記 145
第 12 章 C 預處理器 149
本章內容 150
12.1 C 預處理器的特性 151
12.2 宏展開指令 151
12.2.1 帶參數的宏 152
12.2.2 宏與函數的比較 153
12.3 文件包含指令 153
12.4 條件編譯指令 154
12.5 #if 和#elif 指令 155
12.6 其他指令 156
12.6.1 #undef 指令 156
12.6.2 #pragma 指令 156
12.7 構建過程 158
12.8 程序 159
習題 161
課後筆記 162
第 13 章 數組 165
本章內容 166
13.1 什麽是數組 167
13.2 關於數組的其他信息 168
13.2.1 數組的初始化 168
13.2.2 內存中的數組元素 168
13.2.3 邊界檢查 169
13.2.4 向函數傳遞數組元素 169
13.3 指針和數組 170
13.3.1 使用指針訪問數組元素 171
13.3.2 把數組傳遞給函數 172
13.4 可變長數組 174
13.5 程序 175
習題 176
課後筆記 179
第 14 章 多維數組 181
本章內容 182
14.1 二維數組 183
14.1.1 二維數組的初始化 183
14.1.2 二維數組的內存映射 184
14.1.3 指針和二維數組 184
14.1.4 指向數組的指針 186
14.1.5 把二維數組傳遞給函數 186
14.2 指針數組 187
14.3 三維數組 188
14.4 程序 189
習題 191
課後筆記 193
第 15 章 字符串 195
本章內容 196
15.1 什麽是字符串 197
15.2 關於字符串的其他說明 197
15.3 指針和字符串 199
15.4 字符串處理函數 200
15.4.1 strlen() 201
15.4.2 strcpy() 202
15.4.3 strcat() 203
15.4.4 strcmp() 203
15.5 程序 204
習題 206
課後筆記 208
第 16 章 處理多個字符串 211
本章內容 212
16.1 二維字符數組 213
16.2 字符串指針數組 214
16.3 字符串指針數組的限制 216
16.4 程序 216
習題 218
課後筆記 219
第 17 章 結構體 221
本章內容 222
17.1 為什麽要使用結構體 223
17.2 結構體數組 224
17.3 結構體的細節 225
17.3.1 結構體的聲明 225
17.3.2 結構體元素的存儲 226
17.3.3 復制結構體元素 227
17.3.4 嵌套的結構體 227
17.3.5 傳遞結構體元素 結構體變量 228
17.3.6 結構體元素的對齊 229
17.4 結構體的應用 230
17.5 程序 230
習題 233
課後筆記 234
第 18 章 控制台輸入輸出 237
本章內容 238
18.1 I O 的類型 239
18.2 控制台I O 函數 239
18.2.1 格式化的控制台I O 函數 240
18.2.2 sprintf() 和sscanf() 函數 244
18.2.3 未格式化的控制台I O 函數 245
習題 246
課後筆記 249
第 19 章 文件輸入輸出 251
本章內容 252
19.1 文件操作 253
19.1.1 打開文件 253
19.1.2 讀取文件 254
19.1.3 關閉文件 255
19.2 對字符、製表符、空格等進行計數 255
19.3 一個文件復製程序 256
19.4 文件打開模式 257
19.5 文件中的字符串(行)I O 257
19.6 文本文件和二進制文件 259
19.7 文件中的記錄I O 259
19.8 低層文件I O 262
19.9 程序 264
習題 266
課後筆記 267
第 20 章 關於輸入輸出的更多知識 271
本章內容 272
20.1 使用argc 和argv 273
20.2 在讀取 寫入時檢測錯誤 275
20.3 標準文件指針 276
20.4 I O 重定向 276
20.4.1 輸出重定向 276
20.4.2 輸入重定向 277
20.4.3 同時重定向 278
習題 278
課後筆記 279
第 21 章 對位進行操作 281
本章內容 282
21.1 位的編號和轉換 283
21.2 位操作 284
21.3 反碼操作符 284
21.4 右移位和左移位操作符 285
21.4.1 警告 286
21.4.2 << 操作符的用途 287
21.5 AND、OR 和XOR 位操作符 287
21.5.1 & 操作符的用途 288
21.5.2 | 操作符的用途 289
21.5.3 ^ 操作符的用途 289
21.6 showbits() 函數 290
21.7 位復合賦值操作符 290
21.8 程序 291
習題 292
課後筆記 294
第 22 章 C 語言的其他特性 295
本章內容 296
22.1 枚舉數據類型 297
22.1.1 枚舉數據類型的用途 297
22.1.2 枚舉真有必要嗎 298
22.2 使用typedef 對數據類型進行重命名 299
22.3 強制類型轉換 300
22.4 位段 300
22.5 函數指針 301
22.6 返回指針的函數 302
22.7 接收可變數量參數的函數 302
22.8 聯合體 303
22.9 volatile 限定符 306
22.10 程序 306
習題 307
課後筆記 309
第 23 章 常見的C 語言面試問題 311
附錄A 編譯和運行 325
附錄B 優先級表格 331
附錄C 追蹤缺陷 333
附錄D ASCII 表 339
附錄E 階段測驗 343
作者介紹
亚沙万特·卡内特卡尔(Yashavant Kanetkar)是一位极受欢迎的IT 领域演说家,在TedEx、印度理工学院(IIT)、印度国家理工学院(NIT)、印度信息技术学院(IIIT)和一些全球软件公司举办过研讨会和讲习班。他的作品在世界范围内广受欢迎,数以百万计的学生和专业人员从中受益。他的作品被翻译为印地语、古吉拉特语、英语、日语、韩语和汉语,分别在印度、美国、日本、韩国和中国出版。由于在创业、专业以及教育方面的建树,他被印度理工学院坎普尔校区授予久负盛名的“杰出校友奖”(distinguished alumnus award)。连续5 年,他被微软公司授予“最佳.NET 技术撰稿人”和“ 最有价值专家”称号。