第1章 C語言概述 1
1.1 程序設計語言的發展 1
1.2 C語言的發展及其特點 2
1.3 C程序的基本結構與書寫規則 4
1.3.1 C程序的基本結構 4
1.3.2 函數定義、聲明和調用 7
1.3.3 C程序的書寫規則 8
1.4 計算機運算基礎
(進位計數制、數值轉換) 8
1.4.1 數的二進制、十進制、八進制和
十六進制表示 8
1.4.2 數制轉換 8
1.5 C語言的編輯、編譯和運行 10
1.5.1 一般C程序的解題步驟 10
1.5.2 在Visual C++環境中運行C程序的
步驟 12
習題一 23
第2章 基本數據類型、運算符和
?表達式 26
2.1 字符集及詞法約定 26
2.1.1 C語言的字符集 26
2.1.2 詞法約定 27
2.2 C語言的基本數據類型 28
2.2.1 常量與變量 30
2.2.2 整型數據 31
2.2.3 實型數據 33
2.2.4 字符型數據 35
2.3 C語言的運算符與表達式 38
2.3.1 算術運算符與算術表達式 38
2.3.2 關系及邏輯運算符 44
2.3.3 賦值運算符與賦值表達式 46
2.3.4 條件運算符與條件表達式 50
2.3.5 逗號運算符與逗號表達式 51
2.3.6 sizeof運算符 52
2.3.7 運算符優先級小結 53
2.4 常見錯誤 54
習題二 57
第3章 順序結構程序設計 63
3.1 程序設計概述 63
3.1.1 基礎概念 63
3.1.2 算法 64
3.2 C語句 65
3.3 賦值語句 67
3.4 數據輸入輸出在C語言中的實現 68
3.5 格式化輸入輸出函數 68
3.5.1 格式化輸出函數printf() 68
3.5.2 格式化輸入函數scanf() 72
3.6 字符輸入輸出函數 76
3.6.1 字符輸出函數putchar() 76
3.6.2 字符輸入函數getchar() 77
3.7 順序程序設計舉例 79
習題三 80
第4章 選擇結構程序設計 85
4.1 if語句 85
4.1.1 if語句的三種基本形式 85
4.1.2 if語句的嵌套 90
4.1.3 條件表達式 92
4.2 switch語句 95
4.3 選擇分支程序舉例 98
習題四 105
第5章 循環結構程序設計 111
5.1 循環語句概述 111
5.2 goto語句 112
5.3 while語句 113
5.4 do-while語句 114
5.5 for語句 116
5.6 三種循環語句的選用 120
5.7 break語句 120
5.8 continue語句 123
5.9 循環的嵌套 125
5.10 程序舉例 128
5.11 常見錯誤 133
習題五 134
第6章 數組 140
6.1 一維數組 140
6.1.1 一維數組的定義 140
6.1.2 一維數組元素的引用 141
6.1.3 一維數組的初始化 142
6.1.4 一維數組程序舉例 142
6.2 二維數組 146
6.2.1 二維數組的意義 146
6.2.2 二維數組元素的引用 147
6.2.3 二維數組的初始化 147
6.2.4 二維數組程序舉例 148
6.3 字符數組和字符串 152
6.3.1 字符數組的定義 152
6.3.2 字符串 152
6.3.3 字符數組的初始化 153
6.3.4 字符數組的引用 154
6.3.5 字符數組的輸入與輸出 154
6.3.6 字符串處理函數 156
6.3.7 字符數組程序舉例 158
習題六 162
第7章 函數 166
7.1 函數的定義 166
7.2 函數的返回值與函數類型說明 167
7.2.1 函數的返回值 167
7.2.2 函數類型說明 169
7.3 函數的調用 171
7.3.1 函數的形式參數和實際參數 171
7.3.2 函數的調用 172
7.3.3 被調用函數的聲明和函數原型 175
7.4 函數的嵌套調用與遞歸調用 176
7.4.1 函數的嵌套調用 176
7.4.2 函數的遞歸調用 178
7.5 變量的存儲屬性 184
7.5.1 局部變量 184
7.5.2 全局變量 185
7.5.3 動態存儲變量 187
7.5.4 靜態存儲變量 188
7.6 多文件中函數和變量的處理 190
習題七 192
第8章 指針 197
8.1 指針變量的定義與引用 197
8.1.1 指針與指針變量 197
8.1.2 指針變量的定義 199
8.1.3 指針變量的賦值 199
8.1.4 指針變量的引用 200
8.2 指針運算符與指針表達式 201
8.2.1 指針運算符與指針表達式 201
8.2.2 指針變量作函數的參數 204
8.3 指針變量與數組 205
8.3.1 指針與一維數組 206
8.3.2 指針與二維數組 210
8.3.3 數組指針作函數的參數 213
8.4 字符指針 218
8.4.1 字符指針的定義和使用 218
8.4.2 字符串指針用作函數參數 221
8.4.3 字符指針與字符數組 223
8.5 函數與指針 223
8.5.1 指針型函數 223
8.5.2 函數指針變量 224
8.6 指針數組和指向指針變量的指針 226
8.6.1 指針數組 226
8.6.2 指向指針的指針變量 228
8.6.3 main函數的參數 231
習題八 232
第9章 其他數據類型、預編譯 239
9.1 結構體 239
9.1.1 結構說明和結構變量定義 239
9.1.2 結構變量的使用 241
9.1.3 結構數組和結構指針 244
9.2 共用體 249
9.2.1 共用體的定義和格式 249
9.2.2 共用體變量的引用 251
9.3 枚舉類型 252
9.4 宏定義 253
9.4.1 無參宏定義 253
9.4.2 帶參宏定義 257
9.5 文件包含 259
9.6 條件編譯 260
9.7 動態數據結構 262
9.7.1 動態分配內存 263
9.7.2 鏈表 264
習題九 269
第10章 位運算 272
10.1 位運算符與位運算 272
10.1.1 “按位與”運算符(&) 272
10.1.2 “按位或”運算符(?|?) 272
10.1.3 “按位異或”運算符(^) 273
10.1.4 “按位取反”運算符(~) 273
10.2 位移運算 274
10.2.1 左移運算 274
10.2.2 右移運算 275
10.2.3 與位運算有關的復合賦值
運算符 275
習題十 278
第11章 文件 280
11.1 C文件概述 280
11.2 文件的打開與關閉 281
11.3 文件的輸入和輸出 283
11.4 文件的定位 289
11.5 文件的錯誤檢測及錯誤處理函數 290
習題十一 290
附錄A 部分習題參考答案 293
附錄B 常用字符與ASCII代碼
對照表 297
附錄C Turbo C常用庫函數 299