本書(shū)從用戶、計(jì)算機(jī)、程序員及C語(yǔ)言之間的關(guān)系開(kāi)始,以計(jì)算機(jī)由五大部件組成且采用二進(jìn)制為背景知識(shí),深刻剖析了C語(yǔ)言的知識(shí)點(diǎn)。如本書(shū)給出了完整的表達(dá)式求值規(guī)則;明確了指針變量的主要作用,即指針變量作為形參時(shí),可用于擴(kuò)展存儲(chǔ)單元的使用范圍,并像數(shù)組那樣標(biāo)識(shí)一組存儲(chǔ)單元。除此之外,本書(shū)還引入了虛擬變量的概念,清晰地揭示了二維數(shù)組的結(jié)構(gòu),并將它與動(dòng)態(tài)二維數(shù)組的結(jié)構(gòu)進(jìn)行比較,深刻而簡(jiǎn)明。本書(shū)將知識(shí)和能力有機(jī)融合,訓(xùn)練了讀者解決復(fù)雜問(wèn)題的綜合能力和思維。本書(shū)便于讀者自主學(xué)習(xí),每章有導(dǎo)學(xué)和討論。本書(shū)用近百幅圖直觀地展示了知識(shí)點(diǎn),如計(jì)算機(jī)與C語(yǔ)言的關(guān)系圖、函數(shù)圖、遞歸函數(shù)執(zhí)行圖、二維數(shù)組圖和動(dòng)態(tài)二維數(shù)組圖等。本書(shū)通過(guò)畫(huà)表格法分析了循環(huán)執(zhí)行過(guò)程,可幫助初學(xué)者快速提升編程能力。另外,本書(shū)除了注重呈現(xiàn)算法從產(chǎn)生到完善的過(guò)程,還強(qiáng)調(diào)“提出問(wèn)題、設(shè)計(jì)算法和編程測(cè)試”能力的培養(yǎng)。本書(shū)講解深刻而簡(jiǎn)明,便于自學(xué),易于探究,既可作為各類院校C語(yǔ)言課程的教材,又可作為社會(huì)工作者的培訓(xùn)用書(shū)。
周二強(qiáng),主要從事軟件設(shè)計(jì)與開(kāi)發(fā)相關(guān)研究工作。主講C語(yǔ)音程序設(shè)計(jì)課程多年,深受學(xué)生喜愛(ài),是C語(yǔ)言課程建設(shè)負(fù)責(zé)人。曾出版《新編C語(yǔ)言程序設(shè)計(jì)教程》《C語(yǔ)言內(nèi)涵教程》《新概念C語(yǔ)言能力教程》等書(shū)。
第1章 計(jì)算機(jī)和C語(yǔ)言 1
1.1 用戶、計(jì)算機(jī)和程序員 2
1.2 C語(yǔ)言、計(jì)算機(jī)和程序員 3
1.3 C語(yǔ)言自定義命令——函數(shù) 5
1.3.1 使用函數(shù)命令 5
1.3.2 函數(shù)定義 5
1.3.3 函數(shù)調(diào)用 7
1.3.4 main函數(shù) 8
1.4 “懂”C語(yǔ)言的計(jì)算機(jī) 8
1.4.1 虛擬的C語(yǔ)言計(jì)算機(jī) 8
1.4.2 VC6.0編譯程序 9
1.5 與虛擬C語(yǔ)言計(jì)算機(jī)深入交流 15
1.5.1 C語(yǔ)言語(yǔ)法規(guī)則 15
1.5.2 printf函數(shù)的用法 15
1.5.3 用VC6.0觀察程序的運(yùn)行過(guò)程 16
1.6 C語(yǔ)言語(yǔ)句簡(jiǎn)析 21
練習(xí)1 21
第2章 基本數(shù)據(jù)類型 24
2.1 計(jì)算機(jī)中的數(shù)據(jù) 25
2.2 整型 25
2.2.1 整型的類別 25
2.2.2 整型字面量 26
2.2.3 整型數(shù)據(jù)的輸入和輸出 27
2.2.4 查看整數(shù)的存儲(chǔ)狀態(tài) 30
2.2.5 整型的使用 30
2.3 浮點(diǎn)型 31
2.3.1 浮點(diǎn)型的類別 31
2.3.2 浮點(diǎn)型字面量和浮點(diǎn)型數(shù)據(jù)的輸入和輸出 32
2.3.3 浮點(diǎn)型的誤差 34
2.4 字符型 35
2.4.1 字符型數(shù)據(jù)的編碼 35
2.4.2 字符型字面量 36
2.4.3 字符型數(shù)據(jù)的輸入和輸出 37
2.5 再談printf函數(shù)的使用 39
2.6 典型例題 40
練習(xí)2 47
第3章 表達(dá)式 50
3.1 概述 50
3.2 賦值表達(dá)式 53
3.2.1 賦值操作符 53
3.2.2 類型不匹配的賦值操作 54
3.2.3 復(fù)合賦值操作符 56
3.3 算術(shù)表達(dá)式 56
3.3.1 算術(shù)表達(dá)式求值 56
3.3.2 強(qiáng)制類型轉(zhuǎn)換操作符 57
3.3.3 自增自減操作符 58
3.4 逗號(hào)表達(dá)式 59
3.5 典型例題 60
練習(xí)3 64
第4章 邏輯運(yùn)算和選擇結(jié)構(gòu) 67
4.1 C語(yǔ)言中的邏輯型 68
4.2 關(guān)系表達(dá)式 69
4.3 邏輯表達(dá)式 70
4.3.1 邏輯操作符 70
4.3.2 短路計(jì)算 71
4.4 if選擇結(jié)構(gòu) 72
4.4.1 if選擇結(jié)構(gòu)的語(yǔ)法 72
4.4.2 if選擇結(jié)構(gòu)的用法 75
4.5 if-else選擇結(jié)構(gòu) 78
4.6 嵌套的選擇結(jié)構(gòu) 80
4.7 條件操作符 84
4.8 switch選擇結(jié)構(gòu) 85
4.8.1 基本的switch選擇結(jié)構(gòu) 85
4.8.2 包含break語(yǔ)句的switch選擇結(jié)構(gòu) 87
4.9 典型例題 90
練習(xí)4 96
第5章 循環(huán)結(jié)構(gòu) 102
5.1 while循環(huán)結(jié)構(gòu) 102
5.1.1 while循環(huán)結(jié)構(gòu)語(yǔ)法 102
5.1.2 while循環(huán)結(jié)構(gòu)用法 104
5.2 for循環(huán)結(jié)構(gòu) 108
5.2.1 for循環(huán)結(jié)構(gòu)語(yǔ)法 108
5.2.2 for循環(huán)結(jié)構(gòu)用法 110
5.3 break語(yǔ)句和continue語(yǔ)句 112
5.4 循環(huán)嵌套 114
5.5 do-while循環(huán)結(jié)構(gòu) 118
5.6 典型例題 120
練習(xí)5 124
第6章 數(shù)組 132
6.1 一維數(shù)組 133
6.1.1 一維數(shù)組定義 133
6.1.2 一維數(shù)組初始化 134
6.1.3 一維數(shù)組應(yīng)用 136
6.2 多維數(shù)組 141
6.2.1 二維數(shù)組定義及初始化 141
6.2.2 二維數(shù)組應(yīng)用 141
6.2.3 三維數(shù)組簡(jiǎn)介 144
6.3 字符型數(shù)組和字符串 145
6.3.1 字符型數(shù)組應(yīng)用 145
6.3.2 字符串簡(jiǎn)介 146
6.3.3 字符串的輸入和輸出 147
6.3.4 字符串處理 148
6.4 綜合示例:求大整數(shù)的階乘 149
練習(xí)6 152
第7章 用函數(shù)編程 157
7.1 函數(shù)語(yǔ)法 157
7.1.1 再談函數(shù)定義 157
7.1.2 再談函數(shù)調(diào)用 159
7.1.3 函數(shù)聲明 161
7.2 函數(shù)重用 162
7.2.1 單獨(dú)定義函數(shù) 162
7.2.2 重用函數(shù) 164
7.3 作用域 165
7.3.1 變量作用域 165
7.3.2 變量生命周期 169
7.3.3 擴(kuò)展文件作用域 170
7.3.4 限制文件作用域 172
7.3.5 一維數(shù)組作為形參 174
7.4 函數(shù)的易用性 176
7.4.1 使用全局變量的函數(shù) 176
7.4.2 不用全局變量的函數(shù) 178
7.5 遞歸 180
7.5.1 遞歸算法與遞歸函數(shù) 180
7.5.2 遞歸算法示例 183
7.6 庫(kù)函數(shù)簡(jiǎn)介 188
7.6.1 getchar函數(shù)、getch函數(shù)和getche函數(shù) 188
7.6.2 rand函數(shù)、srand函數(shù)和time函數(shù) 190
7.6.3 字符串函數(shù) 190
7.7 綜合示例:確定公元y年m月d日是星期幾 192
練習(xí)7 196
第8章 預(yù)處理 203
8.1 程序編譯 203
8.2 宏定義 204
8.2.1 簡(jiǎn)單宏 204
8.2.2 參數(shù)化宏 205
8.3 文件包含 206
8.4 條件編譯 208
練習(xí)8 209
第9章 指針 213
9.1 指針類型 213
9.1.1 存儲(chǔ)單元的地址 213
9.1.2 指針變量的定義和賦值 214
9.2 間接引用 215
9.2.1 指針變量的用法 215
9.2.2 野指針和空指針 217
9.3 指針與函數(shù) 218
9.3.1 指針變量作為形參 218
9.3.2 函數(shù)返回指針 220
9.4 地址運(yùn)算 222
9.5 指針與數(shù)組 223
9.5.1 指針與一維數(shù)組 223
9.5.2 指針與二維數(shù)組 227
9.5.3 指針與字符串 229
9.5.4 指針數(shù)組與指針型指針變量 230
9.5.5 指針數(shù)組作為形參 232
9.6 main函數(shù)和命令行參數(shù) 233
9.7 指向函數(shù)的指針變量 235
9.8 使用堆空間 236
9.9 典型例題 239
練習(xí)9 245
第10章 用戶自定義數(shù)據(jù)類型 257
10.1 結(jié)構(gòu)型 258
10.1.1 結(jié)構(gòu)型的定義 258
10.1.2 結(jié)構(gòu)型指針變量 260
10.1.3 鏈表 262
10.2 聯(lián)合型 267
10.3 枚舉型 268
10.4 為類型自定義別名 269
練習(xí)10 271
第11章 文件 275
11.1 文件概述 276
11.1.1 C語(yǔ)言文件 276
11.1.2 文本文件與二進(jìn)制文件 276
11.2 文件的打開(kāi)和關(guān)閉 277
11.2.1 (新建后)打開(kāi)文件 277
11.2.2 文件關(guān)閉 278
11.3 文件讀寫(xiě) 278
11.3.1 fputc函數(shù)和fgetc函數(shù) 278
11.3.2 文件結(jié)束狀態(tài) 281
11.3.3 fprintf函數(shù)和fscanf函數(shù) 282
11.3.4 fwrite函數(shù)和fread函數(shù) 285
11.4 標(biāo)準(zhǔn)設(shè)備文件 286
11.5 文件隨機(jī)讀寫(xiě) 288
11.5.1 調(diào)整文件位置指針指向的位置 288
11.5.2 可讀寫(xiě)的文件 289
11.6 綜合示例:簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng) 290
練習(xí)11 294
第12章 位運(yùn)算 297
12.1 位操作符 297
12.1.1 按位與操作符& 297
12.1.2 按位或操作符| 298
12.1.3 異或操作符^ 298
12.1.4 取反操作符~ 299
12.1.5 左移操作符<< 299
12.1.6 右移操作符>> 299
12.2 位運(yùn)算示例 300
12.3 位段 301
練習(xí)12 301
第13章 數(shù)字化信息編碼 303
13.1 二進(jìn)制 303
13.1.1 位權(quán) 303
13.1.2 十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù) 304
13.1.3 二進(jìn)制的計(jì)算 305
13.1.4 八進(jìn)制和十六進(jìn)制 306
13.2 計(jì)算機(jī)中的計(jì)算 307
13.3 整數(shù)編碼 308
13.4 計(jì)算機(jī)中的整數(shù) 309
13.4.1 整數(shù)加法示例 309
13.4.2 補(bǔ)碼的符號(hào)位 310
13.4.3 整數(shù)構(gòu)成一個(gè)環(huán) 311
13.5 小數(shù)編碼 312
13.5.1 定點(diǎn)小數(shù) 312
13.5.2 浮點(diǎn)數(shù)編碼 313
13.5.3 浮點(diǎn)數(shù)的特點(diǎn) 314
13.6 字符編碼 315
13.6.1 機(jī)內(nèi)碼 315
13.6.2 輸入碼和字形碼 317
附錄A C語(yǔ)言關(guān)鍵字 319
附錄B 格式化輸入和輸出 320
附錄C ASCII碼表 326
附錄D 常用的C語(yǔ)言庫(kù)函數(shù) 327
附錄E C語(yǔ)言操作符 331
參考文獻(xiàn) 332