再版說明
第1版作者自序
教學建議
例題索引
第0章 引言1
第1章 C程序的創(chuàng)建及其基本結構8
1.1 C程序的創(chuàng)建過程8
1.2 C程序的基本組成10
1.3 調試初步—語法錯誤的定位15
1.4 數據的輸入/輸出和標準文件18
習題19
第2章 常量、變量和表達式20
2.1 常量20
2.1.1 數字常量20
2.1.2 字符常量23
2.1.3 字符串字面量23
2.2 變量24
2.2.1 變量名和變量類型24
2.2.2 變量的賦值和類型轉換26
2.2.3 變量的初始化27
2.2.4 類型限定符const27
2.3 算術表達式28
2.3.1 算術運算符28
2.3.2 增量和減量運算符30
2.3.3 位運算31
2.3.4 復合賦值運算符31
2.4 強制類型轉換32
2.5 數據輸出/輸入函數printf()和scanf()36
2.5.1 數值的輸出函數printf()36
2.5.2 數值的輸入函數scanf()37
2.6 常量的符號表示方法39
2.6.1 常量宏39
2.6.2 枚舉常量40
習題41
第3章 條件語句和開關語句44
3.1 關系運算符和邏輯運算符44
3.2 運算符的優(yōu)先級46
3.3 從實際問題中的條件到邏輯表達式47
3.4 條件語句48
3.4.1 條件語句中的條件49
3.4.2 復合語句49
3.4.3 條件語句的嵌套和級聯51
3.4.4 使用條件語句時的注意事項54
3.4.5 條件運算符和條件表達式55
3.5 switch語句56
習題59
第4章 循環(huán)語句和goto語句61
4.1 while語句61
4.2 for語句64
4.3 do while語句67
4.4 循環(huán)語句的選擇和使用69
4.5 逗號表達式69
4.6 循環(huán)語句的嵌套70
4.7 循環(huán)語句中的非常規(guī)控制73
4.8 goto語句76
習題77
第5章 函數80
5.1 函數的基本概念80
5.2 函數的調用81
5.3 函數的結構84
5.4 函數的定義85
5.5 函數的調用關系和返回值89
5.6 局部變量和全局變量90
5.6.1 局部變量91
5.6.2 全局變量92
5.6.3 對全局變量的訪問93
5.7 函數參數的傳遞94
5.8 標準庫函數95
5.8.1 常用的頭文件95
5.8.2 常用的數據輸入/輸出函數96
5.8.3 字符類型判斷函數98
5.8.4 字符串處理函數100
5.8.5 其他常用函數100
5.9 遞歸初步101
習題104
第6章 數組106
6.1 一維數組106
6.1.1 一維數組的定義和初始化106
6.1.2 一維數組元素的使用108
6.1.3 數組的復制111
6.1.4 作為函數參數的一維數組111
6.1.5 數組元素的排序和查找114
6.2 使用一維數組的常用數據結構118
6.2.1 散列表118
6.2.2 棧120
6.2.3 隊123
6.3 字符串和字符數組125
6.3.1 字符串126
6.3.2 字符數組126
6.4 常用的標準字符串函數127
6.4.1 字符串輸出函數127
6.4.2 字符串輸入函數130
6.4.3 字符串復制和追加函數131
6.4.4 字符串比較函數133
6.4.5 字符串檢查函數134
6.4.6 字符串掃描函數sscanf()135
6.5 二維數組136
6.5.1 二維數組的定義136
6.5.2 二維數組元素的引用137
6.5.3 二維數組元素的遍歷138
6.5.4 二維數組元素的排列方式140
6.5.5 作為參數的二維數組142
習題145
第7章 指針初步148
7.1 地址與指針148
7.2 指針變量150
7.2.1 指針變量的定義和賦值150
7.2.2 通過指針訪問數據151
7.2.3 作為函數參數的指針152
7.2.4 返回指針的函數154
7.3 指針運算156
7.3.1 指針與整數的加減156
7.3.2 指針相減157
7.3.3 指針的比較157
7.3.4 指針的強制類型轉換和void *160
7.3.5 不合法的指針運算161
7.3.6 指針類型與數組類型的差異161
7.4 指針與數組162
7.5 指向二維數組的指針164
7.6 多重指針165
7.7 指針數組166
7.7.1 一維指針數組166
7.7.2 命令行參數168
7.8 函數指針170
7.8.1 函數指針變量的定義170
7.8.2 具有函數指針參數的庫函數171
習題174
第8章 結構和聯合177
8.1 結構177
8.1.1 結構類型的定義177
8.1.2 結構成員的訪問179
8.1.3 包含結構的結構182
8.2 聯合186
8.2.1 聯合類型的定義186
8.2.2 聯合成員的訪問187
8.3 類型定義語句190
8.4 復雜類型的解讀193
習題194
第9章 輸入/輸出和文件196
9.1 輸入/輸出的基本過程和文件類型196
9.2 文件的打開、創(chuàng)建和關閉197
9.3 文件數據的正文格式讀寫199
9.4 讀寫操作中的定位202
9.5 文件數據的二進制格式讀寫205
習題207
第10章 程序設計的基本方法210
10.1 程序設計的基本過程210
10.2 問題分析211
10.2.1 程序功能和輸入/輸出數據211
10.2.2 對程序性能的要求213
10.2.3 程序中的錯誤處理213
10.2.4 程序的測試214
10.2.5 問題分析的結果214
10.3 方案設計216
10.3.1 解題思路216
10.3.2 算法的描述218
10.3.3 數據結構和算法的選擇225
10.4 編碼:從算法到代碼231
10.4.1 代碼的結構232
10.4.2 代碼的檢查238
10.4.3 代碼中的注釋239
10.5 程序的調試239
10.5.1 調試的基本方法240
10.5.2 調試工具的基本功能和使用241
10.5.3 標準輸入/輸出的重新定向243
10.6 初學者程序中容易出現的錯誤244
10.6.1 容易混淆的運算符244
10.6.2 運算符優(yōu)先級和結合關系244
10.6.3 變量的初始化245
10.6.4 數