本書從用戶、計算機、程序員及C語言之間的關系開始,以計算機由五大部件組成且采用二進制為背景知識,深刻剖析了C語言的知識點。如本書給出了完整的表達式求值規(guī)則;明確了指針變量的主要作用,即指針變量作為形參時,可用于擴展存儲單元的使用范圍,并像數(shù)組那樣標識一組存儲單元。除此之外,本書還引入了虛擬變量的概念,清晰地揭示了二維數(shù)組的結(jié)構(gòu),并將它與動態(tài)二維數(shù)組的結(jié)構(gòu)進行比較,深刻而簡明。本書將知識和能力有機融合,訓練了讀者解決復雜問題的綜合能力和思維。本書便于讀者自主學習,每章有導學和討論。本書用近百幅圖直觀地展示了知識點,如計算機與C語言的關系圖、函數(shù)圖、遞歸函數(shù)執(zhí)行圖、二維數(shù)組圖和動態(tài)二維數(shù)組圖等。本書通過畫表格法分析了循環(huán)執(zhí)行過程,可幫助初學者快速提升編程能力。另外,本書除了注重呈現(xiàn)算法從產(chǎn)生到完善的過程,還強調(diào)“提出問題、設計算法和編程測試”能力的培養(yǎng)。本書講解深刻而簡明,便于自學,易于探究,既可作為各類院校C語言課程的教材,又可作為社會工作者的培訓用書。
周二強,主要從事軟件設計與開發(fā)相關研究工作。主講C語音程序設計課程多年,深受學生喜愛,是C語言課程建設負責人。曾出版《新編C語言程序設計教程》《C語言內(nèi)涵教程》《新概念C語言能力教程》等書。
第1章 計算機和C語言 1
1.1 用戶、計算機和程序員 2
1.2 C語言、計算機和程序員 3
1.3 C語言自定義命令——函數(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語言的計算機 8
1.4.1 虛擬的C語言計算機 8
1.4.2 VC6.0編譯程序 9
1.5 與虛擬C語言計算機深入交流 15
1.5.1 C語言語法規(guī)則 15
1.5.2 printf函數(shù)的用法 15
1.5.3 用VC6.0觀察程序的運行過程 16
1.6 C語言語句簡析 21
練習1 21
第2章 基本數(shù)據(jù)類型 24
2.1 計算機中的數(shù)據(jù) 25
2.2 整型 25
2.2.1 整型的類別 25
2.2.2 整型字面量 26
2.2.3 整型數(shù)據(jù)的輸入和輸出 27
2.2.4 查看整數(shù)的存儲狀態(tài) 30
2.2.5 整型的使用 30
2.3 浮點型 31
2.3.1 浮點型的類別 31
2.3.2 浮點型字面量和浮點型數(shù)據(jù)的輸入和輸出 32
2.3.3 浮點型的誤差 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
練習2 47
第3章 表達式 50
3.1 概述 50
3.2 賦值表達式 53
3.2.1 賦值操作符 53
3.2.2 類型不匹配的賦值操作 54
3.2.3 復合賦值操作符 56
3.3 算術(shù)表達式 56
3.3.1 算術(shù)表達式求值 56
3.3.2 強制類型轉(zhuǎn)換操作符 57
3.3.3 自增自減操作符 58
3.4 逗號表達式 59
3.5 典型例題 60
練習3 64
第4章 邏輯運算和選擇結(jié)構(gòu) 67
4.1 C語言中的邏輯型 68
4.2 關系表達式 69
4.3 邏輯表達式 70
4.3.1 邏輯操作符 70
4.3.2 短路計算 71
4.4 if選擇結(jié)構(gòu) 72
4.4.1 if選擇結(jié)構(gòu)的語法 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語句的switch選擇結(jié)構(gòu) 87
4.9 典型例題 90
練習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)語法 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)語法 108
5.2.2 for循環(huán)結(jié)構(gòu)用法 110
5.3 break語句和continue語句 112
5.4 循環(huán)嵌套 114
5.5 do-while循環(huán)結(jié)構(gòu) 118
5.6 典型例題 120
練習5 124
第6章 數(shù)組 132
6.1 一維數(shù)組 133
6.1.1 一維數(shù)組定義 133
6.1.2 一維數(shù)組初始化 134
6.1.3 一維數(shù)組應用 136
6.2 多維數(shù)組 141
6.2.1 二維數(shù)組定義及初始化 141
6.2.2 二維數(shù)組應用 141
6.2.3 三維數(shù)組簡介 144
6.3 字符型數(shù)組和字符串 145
6.3.1 字符型數(shù)組應用 145
6.3.2 字符串簡介 146
6.3.3 字符串的輸入和輸出 147
6.3.4 字符串處理 148
6.4 綜合示例:求大整數(shù)的階乘 149
練習6 152
第7章 用函數(shù)編程 157
7.1 函數(shù)語法 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 單獨定義函數(shù) 162
7.2.2 重用函數(shù) 164
7.3 作用域 165
7.3.1 變量作用域 165
7.3.2 變量生命周期 169
7.3.3 擴展文件作用域 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 庫函數(shù)簡介 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
練習7 196
第8章 預處理 203
8.1 程序編譯 203
8.2 宏定義 204
8.2.1 簡單宏 204
8.2.2 參數(shù)化宏 205
8.3 文件包含 206
8.4 條件編譯 208
練習8 209
第9章 指針 213
9.1 指針類型 213
9.1.1 存儲單元的地址 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 地址運算 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
練習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
練習10 271
第11章 文件 275
11.1 文件概述 276
11.1.1 C語言文件 276
11.1.2 文本文件與二進制文件 276
11.2 文件的打開和關閉 277
11.2.1 (新建后)打開文件 277
11.2.2 文件關閉 278
11.3 文件讀寫 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 標準設備文件 286
11.5 文件隨機讀寫 288
11.5.1 調(diào)整文件位置指針指向的位置 288
11.5.2 可讀寫的文件 289
11.6 綜合示例:簡單的學生成績管理系統(tǒng) 290
練習11 294
第12章 位運算 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 位運算示例 300
12.3 位段 301
練習12 301
第13章 數(shù)字化信息編碼 303
13.1 二進制 303
13.1.1 位權(quán) 303
13.1.2 十進制數(shù)轉(zhuǎn)換為二進制數(shù) 304
13.1.3 二進制的計算 305
13.1.4 八進制和十六進制 306
13.2 計算機中的計算 307
13.3 整數(shù)編碼 308
13.4 計算機中的整數(shù) 309
13.4.1 整數(shù)加法示例 309
13.4.2 補碼的符號位 310
13.4.3 整數(shù)構(gòu)成一個環(huán) 311
13.5 小數(shù)編碼 312
13.5.1 定點小數(shù) 312
13.5.2 浮點數(shù)編碼 313
13.5.3 浮點數(shù)的特點 314
13.6 字符編碼 315
13.6.1 機內(nèi)碼 315
13.6.2 輸入碼和字形碼 317
附錄A C語言關鍵字 319
附錄B 格式化輸入和輸出 320
附錄C ASCII碼表 326
附錄D 常用的C語言庫函數(shù) 327
附錄E C語言操作符 331
參考文獻 332