再版說明
第1版作者自序
教學建議
例題索引
第0章 引言1
第1章 C程序的創(chuàng)建及其基本結構8
1.1 C程序的創(chuàng)建過程8
1.2 C程序的基本組成10
1.3 調試初步—語法錯誤的定位15
1.4 數(shù)據(jù)的輸入/輸出和標準文件18
習題19
第2章 常量、變量和表達式20
2.1 常量20
2.1.1 數(shù)字常量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 數(shù)據(jù)輸出/輸入函數(shù)printf()和scanf()36
2.5.1 數(shù)值的輸出函數(shù)printf()36
2.5.2 數(shù)值的輸入函數(shù)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 條件語句的嵌套和級聯(lián)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章 函數(shù)80
5.1 函數(shù)的基本概念80
5.2 函數(shù)的調用81
5.3 函數(shù)的結構84
5.4 函數(shù)的定義85
5.5 函數(shù)的調用關系和返回值89
5.6 局部變量和全局變量90
5.6.1 局部變量91
5.6.2 全局變量92
5.6.3 對全局變量的訪問93
5.7 函數(shù)參數(shù)的傳遞94
5.8 標準庫函數(shù)95
5.8.1 常用的頭文件95
5.8.2 常用的數(shù)據(jù)輸入/輸出函數(shù)96
5.8.3 字符類型判斷函數(shù)98
5.8.4 字符串處理函數(shù)100
5.8.5 其他常用函數(shù)100
5.9 遞歸初步101
習題104
第6章 數(shù)組106
6.1 一維數(shù)組106
6.1.1 一維數(shù)組的定義和初始化106
6.1.2 一維數(shù)組元素的使用108
6.1.3 數(shù)組的復制111
6.1.4 作為函數(shù)參數(shù)的一維數(shù)組111
6.1.5 數(shù)組元素的排序和查找114
6.2 使用一維數(shù)組的常用數(shù)據(jù)結構118
6.2.1 散列表118
6.2.2 棧120
6.2.3 隊123
6.3 字符串和字符數(shù)組125
6.3.1 字符串126
6.3.2 字符數(shù)組126
6.4 常用的標準字符串函數(shù)127
6.4.1 字符串輸出函數(shù)127
6.4.2 字符串輸入函數(shù)130
6.4.3 字符串復制和追加函數(shù)131
6.4.4 字符串比較函數(shù)133
6.4.5 字符串檢查函數(shù)134
6.4.6 字符串掃描函數(shù)sscanf()135
6.5 二維數(shù)組136
6.5.1 二維數(shù)組的定義136
6.5.2 二維數(shù)組元素的引用137
6.5.3 二維數(shù)組元素的遍歷138
6.5.4 二維數(shù)組元素的排列方式140
6.5.5 作為參數(shù)的二維數(shù)組142
習題145
第7章 指針初步148
7.1 地址與指針148
7.2 指針變量150
7.2.1 指針變量的定義和賦值150
7.2.2 通過指針訪問數(shù)據(jù)151
7.2.3 作為函數(shù)參數(shù)的指針152
7.2.4 返回指針的函數(shù)154
7.3 指針運算156
7.3.1 指針與整數(shù)的加減156
7.3.2 指針相減157
7.3.3 指針的比較157
7.3.4 指針的強制類型轉換和void *160
7.3.5 不合法的指針運算161
7.3.6 指針類型與數(shù)組類型的差異161
7.4 指針與數(shù)組162
7.5 指向二維數(shù)組的指針164
7.6 多重指針165
7.7 指針數(shù)組166
7.7.1 一維指針數(shù)組166
7.7.2 命令行參數(shù)168
7.8 函數(shù)指針170
7.8.1 函數(shù)指針變量的定義170
7.8.2 具有函數(shù)指針參數(shù)的庫函數(shù)171
習題174
第8章 結構和聯(lián)合177
8.1 結構177
8.1.1 結構類型的定義177
8.1.2 結構成員的訪問179
8.1.3 包含結構的結構182
8.2 聯(lián)合186
8.2.1 聯(lián)合類型的定義186
8.2.2 聯(lián)合成員的訪問187
8.3 類型定義語句190
8.4 復雜類型的解讀193
習題194
第9章 輸入/輸出和文件196
9.1 輸入/輸出的基本過程和文件類型196
9.2 文件的打開、創(chuàng)建和關閉197
9.3 文件數(shù)據(jù)的正文格式讀寫199
9.4 讀寫操作中的定位202
9.5 文件數(shù)據(jù)的二進制格式讀寫205
習題207
第10章 程序設計的基本方法210
10.1 程序設計的基本過程210
10.2 問題分析211
10.2.1 程序功能和輸入/輸出數(shù)據(jù)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 數(shù)據(jù)結構和算法的選擇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 初學者程序中容易出現(xiàn)的錯誤244
10.6.1 容易混淆的運算符244
10.6.2 運算符優(yōu)先級和結合關系244
10.6.3 變量的初始化245
10.6.4 數(shù)