目 錄
第1章 C語言概述 1
1.1 程序設計語言及其發展 1
1.1.1
機器語言 1
1.1.2
匯編語言 2
1.1.3
高級語言 2
1.2
C語言的歷史 3
1.3
C語言的標準 4
1.4
C語言的程序結構 4
1.4.1
簡單的C語言程序剖析 4
1.4.2
C語言程序的基本結構 8
1.5
C語言程序的運行 8
1.5.1
運行C語言程序的步驟 8
1.5.2
集成開發環境 9
1.6 本章小結 10
1.7 習題 10
第2章 C語言程序設計基礎 11
2.1 常量 11
2.1.1
整型常量 11
2.1.2
浮點型常量 12
2.1.3
單字符常量 12
2.1.4
字符串常量 13
2.1.5
符號常量 13
2.2 變量 14
2.2.1
變量名 15
2.2.2
變量的類型 15
2.2.3
變量的定義及操作 18
2.3 運算符與表達式 19
2.3.1
算術運算符和算術表達式 20
2.3.2
關系運算符和關系表達式 21
2.3.3
邏輯運算符和邏輯表達式 22
2.3.4
賦值運算符和賦值表達式 23
2.3.5
自增、自減運算符 24
2.3.6
條件運算符 25
2.3.7
逗號運算符和逗號表達式 25
2.4 運算符的優先級與結合性
26
2.4.1
優先級 26
2.4.2
結合性 26
2.5 類型轉換 27
2.5.1
隱式類型轉換 27
2.5.2
顯式類型轉換 29
2.6 本章小結 29
2.7 習題 29
第3章 輸入與輸出 31
3.1 讀入一個字符 31
3.2 輸出一個字符 32
3.3 格式化輸入 33
3.3.1
整數輸入 34
3.3.2
實數輸入 35
3.3.3
單個字符輸入 35
3.3.4
字符串輸入 36
3.4 格式化輸出 37
3.5 程序舉例 39
3.6 本章小結 41
3.7 習題 42
第4章 選擇結構程序設計 45
4.1
if語句 45
4.1.1
簡單if語句 45
4.1.2
if...else語句 47
4.1.3
嵌套if...else語句 48
4.1.4
階梯式if...else語句 49
4.2
switch語句 50
4.3 本章小結 53
4.4 習題 53
第5章 循環結構程序設計 56
5.1
goto語句 56
5.2
while語句 58
5.3
do...while語句 60
5.4
for語句 61
5.5
break語句與continue語句 63
5.5.1
break語句 63
5.5.2
continue語句 64
5.6 循環的嵌套 65
5.7 本章小結 66
5.8 習題 67
第6章 數組 70
6.1 一維數組 70
6.1.1
一維數組的定義 70
6.1.2
一維數組的引用 71
6.1.3
一維數組的初始化與賦值 72
6.1.4
一維數組的應用舉例 73
6.2 二維數組 74
6.2.1
二維數組的定義 75
6.2.2
二維數組的引用 75
6.2.3
二維數組的初始化與賦值 76
6.3 字符數組與字符串 77
6.3.1
字符數組的定義 78
6.3.2
字符數組的初始化與賦值 78
6.3.3
字符串和字符數組 79
6.3.4
字符數組的輸入/輸出 80
6.3.5
字符串處理函數 81
6.4 本章小結 84
6.5 習題 84
第7章 函數 88
7.1 函數概述 88
7.2 函數聲明 91
7.3 函數定義和函數調用 92
7.3.1
函數定義 92
7.3.2
函數調用 93
7.3.3
參數傳遞 94
7.4 程序舉例 98
7.5 函數的嵌套調用和遞歸調用
99
7.5.1
函數的嵌套調用 100
7.5.2
函數的遞歸調用 101
7.6 變量的作用域 103
7.6.1
局部變量 104
7.6.2
全局變量 105
7.7 變量的存儲類別 107
7.8 本章小結 109
7.9 習題 110
第8章 指針 113
8.1 指針概述 113
8.2 訪問變量的地址 114
8.3 指針變量的定義與運算
115
8.3.1
指針變量的定義 115
8.3.2
指針變量的初始化與賦值 116
8.3.3
通過指針訪問變量 116
8.3.4
指針的運算 120
8.4 指針與一維數組 120
8.5 指向指針的指針與指針
數組 124
8.5.1
指向指針的指針 124
8.5.2
指針數組 126
8.6 指針與二維數組 129
8.6.1
指向二維數組元素的指針 129
8.6.2
二維數組名與指針 130
8.6.3
二維數組與指向一維數組的
指針變量 133
8.7 指針與字符串 134
8.8 指針兼容性 137
8.8.1
指針大小兼容 137
8.8.2
void指針 138
8.8.3
指針轉換 139
8.9 指針與函數 140
8.9.1
指針作為實際參數
140
8.9.2
指針型函數 144
8.9.3
函數指針變量 145
8.10
main函數的參數 146
8.11
本章小結 147
8.12
習題 148
第9章 編譯預處理 153
9.1 概述 153
9.1.1
預處理器的工作方式 153
9.1.2
編譯預處理命令 154
9.2 宏定義 155
9.2.1
不帶參數的宏定義 155
9.2.2
帶參數的宏定義 156
9.3 文件包含 157
9.4 條件編譯 159
9.5 本章小結 161
9.6 習題 161
第10章 結構體、共用體與
枚舉類型 164
10.1
結構體 164
10.1.1
定義結構體類型 164
10.1.2
定義結構體變量 166
10.1.3
訪問結構體成員 168
10.1.4
結構體變量的初始化 170
10.1.5
結構體嵌套 171
10.1.6
結構體數組 172
10.1.7
結構體指針變量 173
10.1.8
結構體與函數 176
10.2
共用體 179
10.2.1
定義共用體類型 179
10.2.2
定義共用體變量 180
10.2.3
訪問共用體成員 181
10.2.4
共用體變量的賦值 181
10.2.5
共用體變量的初始化 182
10.2.6
共用體的應用 182
10.3
枚舉類型 183
10.3.1
定義枚舉類型 183
10.3.2
定義枚舉類型變量 183
10.4
用typedef定義類型 185
10.5
本章小結 186
10.6
習題 187
第11章 文件管理 190
11.1
概述 190
11.2
文件的打開與關閉 191
11.2.1
文件指針 191
11.2.2
文本文件與二進制文件 192
11.2.3
文件的打開 192
11.2.4
文件的關閉 194
11.3
文件的讀/寫 194
11.3.1
fputc函數和fgetc函數 194
11.3.2
fread函數和fwrite函數 197
11.3.3
fscanf函數和fprintf
函數 201
11.3.4
fgets函數和fputs函數 203
11.4
文件的定位 204
11.5
本章小結 206
11.6
習題 206
第12章 C語言高級程序設計 209
12.1
位運算 209
12.1.1
位運算符 210
12.1.2
按位與運算 210
12.1.3
按位或運算 211
12.1.4
按位異或運算 211
12.1.5
按位取反運算 212
12.1.6
左移運算符(
12.1.7
右移運算符(>>) 213
12.1.8
程序舉例 213
12.2
動態存儲分配 214
12.2.1
malloc函數 215
12.2.2
calloc函數 217
12.2.3
realloc函數 218
12.2.4
free函數 219
12.3
鏈表 219
12.3.1
鏈表概述 219
12.3.2
單向鏈表的構造 222
12.3.3
單向鏈表的遍歷 225
12.3.4
查找數據項 227
12.3.5
插入節點 228
12.3.6
刪除節點 230
12.3.7
清空鏈表 231
12.4
本章小結 239
12.5
習題 239
第13章 C語言程序設計實驗指導
241
實驗一 C語言程序開發環境和
C語言程序基本結構 241
實驗二 C語言程序設計基礎 252
實驗三 輸入與輸出 257
實驗四 選擇結構程序設計 264
實驗五 循環結構程序設計 274
實驗六 數組 281
實驗七 函數 288
實驗八 指針 296
實驗九 編譯預處理 306
實驗十 結構體、共用體與枚舉
類型 312
實驗十一 文件管理 319
實驗十二 C語言高級程序設計 324
附錄1 部分ASCII碼表 331
附錄2 C語言的部分關鍵字 332
附錄3 運算符的優先級和結合性
333
參考文獻 334