本書以培養(yǎng)學生程序設計思維和基本能力為目標,在知識點的組織結構方面,充分考慮C語言重要語法知識點的全面性,又突出學生開發(fā)程序的實踐能力和工程能力的訓練。本書共11章,全面講述C語言語法知識點,從簡單數據結構、簡單控制結構到復雜數據結構、復雜控制結構,循序漸進地展示C語言特性。本書采用啟發(fā)式的寫作風格,以程序設計主線,以應用編程為驅動,每個章節(jié)按照提出問題、分析問題、解決問題的思路寫作。本書的所有參考資料請參見網站http://jsjjc.hut.edu.cn或http://www.hxedu.com.cn。本書適用對象是高等院校計算機專業(yè)及非計算機專業(yè)的師生,計算機等級考試培訓班師生,廣大C語言自學者。
第1章 C語言程序設計概論 1
1.1 問題提出:程序設計概述 1
1.2 程序設計語言 3
1.2.1 自然語言和計算機語言 3
1.2.2 程序設計語言介紹 4
1.3 初識C語言程序 4
1.4 實現問題求解的過程 6
1.4.1 計算機求解問題步驟 6
1.4.2 問題分析和建模 6
1.4.3 算法設計 6
1.4.4 程序設計 8
1.5 C語言的發(fā)展歷史及特點 9
1.5.1 C語言的發(fā)展 9
1.5.2 C語言的特點 11
1.5.3 C語言的基本符號 11
1.6 C語言程序的開發(fā)環(huán)境 13
1.6.1 C語言的一般上機步驟 13
1.6.2 Visual C++ 2010集成開發(fā)環(huán)境 14
1.7 科學計算器和學生成績管理系統(tǒng) 17
本章小結 19
習題1 19
第2章 簡單的C程序設計 21
2.1 問題提出:順序結構程序設計 21
2.2 格式輸出語句 22
2.2.1 格式輸出語句程序舉例和解析 22
2.2.2 格式輸出printf()函數 23
2.3 格式輸入語句 26
2.3.1 格式輸入語句程序舉例和解析 26
2.3.2 格式輸入函數scanf() 27
2.4 字符數據輸入、輸出 30
2.4.1 字符數據輸入、輸出程序舉例和解析 30
2.4.2 字符輸出函數putchar()和字符輸入函數getchar() 30
2.5 簡單C程序設計舉例 32
本章小結 33
習題2 35
第3章 選擇(分支)結構程序設計 37
3.1 問題提出:選擇(分支)結構程序設計 37
3.2 if語句 38
3.2.1 簡單if語句 38
3.2.2 關系運算符 40
3.2.3 邏輯運算符 41
3.2.4 if-else語句 42
3.2.5 if-else-if語句 44
3.2.6 if語句嵌套 45
3.3 條件表達式 48
3.4 switch語句 49
3.4.1 switch語句程序舉例 49
3.4.2 switch語句應用 50
3.5 選擇結構程序綜合應用 53
本章小結 57
習題3 59
第4章 循環(huán)結構程序設計 61
4.1 問題提出:循環(huán)結構程序設計 61
4.2 while循環(huán) 62
4.2.1 while循環(huán)程序舉例和解析 62
4.2.2 while語句 63
4.3 do-while循環(huán) 64
4.3.1 do-while循環(huán)程序舉例和解析 64
4.3.2 do-while語句 65
4.4 for循環(huán) 66
4.4.1 for循環(huán)程序舉例和解析 66
4.4.2 for語句 67
4.5 循環(huán)嵌套 68
4.5.1 循環(huán)程序舉例和解析 68
4.5.2 循環(huán)嵌套 69
4.5.3 break和continue語句 71
4.6 循環(huán)結構程序應用綜合舉例 73
本章小結 76
習題4 77
第5章 函數 80
5.1 問題提出:函數的應用 80
5.2 函數的定義、聲明和調用 82
5.2.1 有關函數的程序舉例和解析 82
5.2.2 函數的定義 82
5.2.3 函數的聲明 83
5.2.4 函數的調用 84
5.3 函數的參數和值 86
5.3.1 函數應用程序舉例和解析 86
5.3.2 函數的參數 87
5.3.3 函數的值 88
5.4 函數的嵌套調用 88
5.4.1 函數的嵌套調用程序舉例和解析 88
5.4.2 函數的嵌套調用說明 89
5.5 函數的遞歸調用 89
5.5.1 函數的遞歸調用程序舉例和解析 89
5.5.2 函數的遞歸調用說明 90
5.6 變量的作用域和存儲類別 91
5.6.1 變量應用的程序舉例和解析 91
5.6.2 變量的作用域 92
5.6.3 變量的存儲類別 94
5.7 編譯預處理命令 98
5.7.1 編譯預處理程序舉例和解析 98
5.7.2 宏定義 98
5.7.3 文件包含 102
5.7.4 條件編譯 103
5.8 函數應用舉例 105
本章小結 109
習題5 109
第6章 數據類型、常量、變量、表達式 112
6.1 C語言的基本數據類型及其內部表示 112
6.1.1 數據類型概述 112
6.1.2 整數類型 113
6.1.3 實數類型 114
6.1.4 字符類型 115
6.2 常量和變量 116
6.2.1 常量 116
6.2.2 變量 120
6.3 運算符和表達式 122
6.3.1 賦值運算符和賦值表達式 123
6.3.2 算術運算符和算術表達式 125
6.3.3 位運算符和位運算表達式 127
6.3.4 逗號運算符和求字節(jié)運算符 129
6.4 數據類型轉換 131
6.4.1 類型自動轉換 131
6.4.2 賦值轉換 132
6.4.3 強制類型轉換 133
本章小結 134
習題6 136
第7章 數組 140
7.1 問題的提出:數組的運用 140
7.2 一維數組 141
7.2.1 一維數組的程序舉例和解析 141
7.2.2 一維數組類型定義 142
7.2.3 一維數組元素的引用 143
7.2.4 一維數組元素的初始化 144
7.3 二維數組 145
7.3.1 二維數組的程序舉例和解析 145
7.3.2 二維數組的定義 147
7.3.3 二維數組元素的引用 147
7.3.4 二維數組的初始化 148
7.4 字符數組 150
7.4.1 程序舉例和解析 150
7.4.2 字符數組的定義和元素引用 150
7.4.3 字符串變量 151
7.5 字符串常用函數 153
7.6 向函數傳遞數組 156
7.6.1 向函數傳遞一維數組 156
7.6.2 向函數傳遞二維數組 157
7.7 數組應用程序舉例 158
本章小結 165
習題7 165
第8章 指針 169
8.1 問題的提出:指針的運用 169
8.2 指針變量的定義、賦值和運算 171
8.2.1 指針變量程序舉例和解析 171
8.2.2 指針變量的定義 172
8.2.3 指針變量的賦值及初始化 173
8.2.4 指針變量的運算 174
8.3 指針作為函數的參數 176
8.3.1 指針作為函數參數程序舉例和解析 176
8.3.2 指針作為函數參數時的注意事項 178
8.4 指針與一維數組 178
8.4.1 指針與一維數組程序舉例和解析 178
8.4.2 指針與一維數組的關系 179
8.5 指針與字符串 181
8.5.1 指針與字符串程序舉例和解析 181
8.5.2 指針與字符串、字符數組的關系 182
8.6 指針與二維數組 183
8.6.1 指針與二維數組程序舉例和解析 183
8.6.2 指針與二維數組的關系 184
8.7 指針與內存的動態(tài)分配 186
8.7.1 指針與內存的動態(tài)分配程序舉例與解析 187
8.7.2 動態(tài)內存分配的步驟 188
8.7.3 動態(tài)內存分配函數 188
8.8 指針進階 189
8.8.1 指針作為函數返回值 189
8.8.2 指向函數的指針 190
8.8.3 指針數組 192
8.8.4 指向指針的指針 193
8.8.5 指針數組名與指針數組元素的關系 194
8.8.6 main()函數的參數和返回值 194
8.9 指針綜合應用 196
本章小結 202
習題8 205
第9章 結構體、共用體和枚舉 210
9.1 問題的提出:結構體、共用體和枚舉的運用 210
9.2 結構體 211
9.2.1 結構體程序舉例和解析 211
9.2.2 結構體類型 214
9.2.3 結構體類型變量 215
9.2.4 結構體數組 217
9.2.5 結構體指針 219
9.2.6 結構變量、結構指針作為函數參數 220
9.2.7 定義自己的類型名 222
9.3 鏈表 223
9.3.1 鏈表程序舉例和解析 223
9.3.2 鏈表的概念 225
9.3.3 鏈表的操作 225
9.4 共用體 228
9.4.1 共用體程序舉例和解析 228
9.4.2 共用體類型及變量的定義 229
9.4.3 共用體變量的引用 229
9.5 枚舉類型 230
9.5.1 枚舉類型程序舉例與解析 230
9.5.2 枚舉類型基本概念 231
9.6 應用程序舉例 233
本章小結 235
習題9 236
第10章 文件 240
10.1 問題的提出:文件在程序設計中的運用 240
10.2 文件概述 241
10.2.1 有關文件的程序舉例和解析 241
10.2.2 文件分類 242
10.2.3 C語言對文件的處理方法 242
10.2.4 文件結構指針 243
10.3 文件的打開和關閉 244
10.3.1 文件的打開和關閉程序舉例和解析 244
10.3.2 文件的打開 245
10.3.3 文件的關閉 246
10.4 文件的讀和寫 247
10.4.1 文件的讀和寫程序舉例和解析 247
10.4.2 字符方式文件讀函數fgetc()、寫函數fputc() 248
10.4.3 字符串方式文件讀函數fgets()、寫函數fputs() 249
10.4.4 格式化文件讀函數fscanf()、寫函數fprintf() 250
10.4.5 數據塊讀函數fread()、寫函數fwrite() 252
10.5 文件的隨機讀寫 254
10.5.1 文件的隨機讀寫程序舉例和解析 254
10.5.2 文件的定位函數 254
10.6 文件的錯誤檢測 256
10.7 程序設計舉例 256
本章小結 259
習題10 260
第11章 C語言的綜合應用 264
11.1 科學計算器 264
11.1.1 科學計算器的設計思想 264
11.1.2 函數和數據結構設計 265
11.2 學生成績管理系統(tǒng) 274
11.2.1 學生成績管理系統(tǒng)設計要求 274
11.2.2 函數和數據結構設計 276
11.2.3 學生成績管理系統(tǒng)參考源代碼 280
本章小結 294
習題11 294
附錄A ASCII碼表 296
附錄B C語言中運算符的優(yōu)先級與結合性 297
附錄C C語言的關鍵字及其用途 298
附錄D C語言常用語法摘要 299
附錄E C語言常用標準庫函數 303
參考文獻 311