全書共分13章,內容包括:C語言概述,C程序設計的基本知識,順序結構,選擇結構,循環結構,函數,數組,地址和指針,編譯預處理和動態存儲分配,結構體、共用體和枚舉,位運算,文件,程序的綜合設計及5個附錄。每章后都附有適量的習題,讀者可通過習題鞏固已學的知識。
(1)理論與實踐并重。本書全面系統的介紹了C語言程序設計的理論基礎,并給出了豐富的實例
(2)習題豐富,易于讀者練習。每章后都附有適量的習題,讀者可通過習題鞏固已學的知識
(3)內容通俗易懂,深入淺出。本書按傳統的知識點來組織教學內容,又以簡潔和清晰的方式逐步深入介紹C語言的內容。
(4)配套資源豐富。本書還編寫了配套的實驗指導和習題集《C程序設計上機指導與習題(第2版)》,章節完全對應。
許薇 主持省級優秀課:大學計算機基礎 主持院級優秀課:數據庫原理 主持省級教研課題:農業類高校大學計算機基礎教學改革與實踐 發表***論文20余篇,其中核心論文8篇,EI檢索2篇。數據庫教學與應用開發。 以前出版的教材: Visual Basic 程序設計教程 978-7-302-17502-5 清華大學出版社 2008.09 5,000 Visual Basic 程序設計 7-206-03552-3/G-1406 吉林人民出版社 2005.03 5,000 大學計算機基礎實驗教程 7-206-03138-2 吉林人民出版社 2005.06 5,000
第1章 C語言概述 1
1.1 C語言的產生與發展 1
1.2 C語言的特點 2
1.3 編制簡單的C語言程序 3
1.3.1 簡單的程序設計 3
1.3.2 C程序的編輯、編譯和連接 6
1.4 Visual C++ 6.0簡介 6
1.4.1 Visual C++ 6.0簡介 6
1.4.2 運行C程序的方法和步驟 11
1.5 算法及算法表示 16
1.5.1 算法的概念 17
1.5.2 算法的特性與設計要求 17
1.5.3 算法的表示和舉例 18
本章小結 25
習題 26
第2章 C語言程序設計的基本
知識 27
2.1 C語言的數據類型 27
2.2 標識符、常量與變量 28
2.2.1 標識符 28
2.2.2 常量 29
2.2.3 變量 32
2.3 算術運算符和算術表達式 36
2.3.1 基本的算術運算符 37
2.3.2 運算符的優先級、結合性和算術表達式 37
2.3.3 強制性類型轉換表達式 38
2.4 賦值運算符和賦值表達式 38
2.4.1 賦值運算符和賦值表達式 38
2.4.2 賦值運算中的類型轉換 40
2.5 逗號運算符和逗號表達式 41
2.6 自加、自減運算符 41
2.7 關系運算與邏輯運算 43
2.7.1 關系運算符和關系表達式 43
2.7.2 邏輯運算符和邏輯表達式 44
2.7.3 運算符的優先級 45
本章小結 45
習題 45
第3章 順序結構 47
3.1 C語言的基本語句 47
3.2 格式輸入/輸出函數 50
3.2.1 格式輸入函數 50
3.2.2 格式輸出函數 54
3.3 字符數據的輸入/輸出函數 59
3.3.1 字符輸入函數 59
3.3.2 字符輸出函數 60
3.4 程序舉例 61
本章小結 63
習題 63
第4章 選擇結構 65
4.1 用if語句實現選擇結構 65
4.1.1 if語句的基本形式 65
4.1.2 嵌套的if語句 68
4.2 用switch語句實現多分支選擇結構 73
4.2.1 switch語句的基本形式 74
4.2.2 switch語句的執行過程 74
4.2.3 用switch和break語句實現選擇
結構 76
4.3 條件表達式構成的選擇結構 77
4.4 程序舉例 77
本章小結 80
習題 80
第5章 循環結構 82
5.1 while循環結構 82
5.1.1 while循環的一般形式 83
5.1.2 while循環的執行過程 84
5.2 do-while循環結構 85
5.2.1 do-while循環的一般形式 85
5.2.2 do-while循環的執行過程 85
5.3 for循環結構 86
5.3.1 for循環的一般形式 86
5.3.2 for循環的執行過程 86
5.3.3 for語句的說明 87
5.4 用語句標號和goto語句構成的循環
結構 87
5.4.1 語句標號 87
5.4.2 goto語句 87
5.5 循環的嵌套 88
5.6 break和continue語句 92
5.6.1 break語句 92
5.6.2 continue語句 92
5.7 程序舉例 93
本章小結 96
習題 96
第6章 函數 99
6.1 概述 99
6.2 函數定義和返回值 100
6.2.1 函數的說明 100
6.2.2 函數的定義 100
6.2.3 有參函數、無參函數的定義 101
6.2.4 空函數 103
6.2.5 函數的返回值 103
6.3 函數的調用 103
6.3.1 函數的簡單調用 104
6.3.2 調用方式 104
6.3.3 函數間的參數傳遞 106
6.3.4 參數傳遞舉例 107
6.4 函數的嵌套調用 108
6.5 函數的遞歸調用 109
6.6 局部變量和全局變量 113
6.6.1 局部變量 113
6.6.2 全局變量 114
6.7 變量的存儲類別 117
6.7.1 動態存儲與靜態存儲的存儲
方式 117
6.7.2 auto變量 118
6.7.3 用static聲明的局部變量 119
6.7.4 register變量 121
6.7.5 用extern聲明外部變量 121
6.8 內部函數和外部函數 122
6.8.1 內部函數 122
6.8.2 外部函數 123
本章小結 124
習題 125
第7章 數組 129
7.1 一維數組的定義和一維數組元素的
引用 129
7.1.1 一維數組的定義 129
7.1.2 一維數組的初始化 130
7.1.3 一維數組的引用 132
7.1.4 一維數組的定義和元素引用
舉例 133
7.2 一維數組應用舉例 134
7.3 二維數組的定義和二維數組元素的
引用 136
7.3.1 二維數組的定義 136
7.3.2 二維數組的初始化 136
7.3.3 二維數組元素的引用 140
7.4 二維數組程序舉例 140
7.5 字符數組 143
7.5.1 字符數組的定義 143
7.5.2 字符數組的初始化 144
7.5.3 字符數組的引用 144
7.5.4 字符串和字符串結束標志 145
7.5.5 字符數組的輸入和輸出 145
7.5.6 字符串處理函數 148
7.6 函數之間對數組和數組元素的引用 151
7.6.1 數組元素作實參 151
7.6.2 數組名作實參 152
本章小結 156
習題 156
第8章 地址和指針 159
8.1 地址和指針的概念 159
8.2 指針變量 159
8.2.1 指針變量的定義 159
8.2.2 指針變量的引用 160
8.3 指向函數的指針 163
8.3.1 用函數指針變量調用函數 163
8.3.2 用指向函數的指針作函數參數 165
8.4 對指針變量的操作 166
8.4.1 通過指針來引用一個存儲單元 166
8.4.2 指針的移動和比較 168
8.5 一維數組和指針 169
8.5.1 一維數組和數組元素的地址 169
8.5.2 通過數組的首地址引用數組
元素 169
8.5.3 通過指針引用一維數組元素 169
8.5.4 用帶下標的指針變量引用一維數組元素 172
8.5.5 數組元素的地址作實參 172
8.5.6 函數的指針形參和函數體中的數組區別 173
8.6 二維數組和指針 174
8.6.1 二維數組和數組元素的地址 174
8.6.2 通過地址引用二維數組元素 175
8.6.3 通過建立一個指針數組引用二維數組元素 176
8.6.4 通過建立一個行指針引用二維數組元素 177
8.7 二組數組名和指針數組作實參 178
8.7.1 二維數組名作實參時實參和形參之間的數據傳遞 178
8.7.2 指針數組作實參時實參和形參之間的數據傳遞 179
8.7.3 使指針指向一個字符串 181
8.8 函數之間地址值的傳遞 181
8.8.1 形參為指針變量時實參和形參之間的數據傳遞 181
8.8.2 通過傳送地址值在被調用函數中直接改變調用函數中的變量的值 184
8.8.3 函數返回地址值 185
8.9 通過實參向函數傳遞函數名或指向函數的指針變量 186
8.10 傳給main( )函數的參數 187
本章小結 188
習題 189
第9章 編譯預處理和動態存儲
分配 193
9.1 編譯預處理 193
9.1.1 不帶參數宏定義 194
9.1.2 帶參數宏定義 196
9.1.3 文件包含 198
9.1.4 條件編譯 199
9.2 動態存儲分配 202
本章小結 204
習題 204
第10章 結構體、共用體和
枚舉 207
10.1 概述 207
10.1.1 結構體類型的定義及引用 208
10.1.2 結構體變量的初始化 212
10.1.3 結構體變量的輸入和輸出 212
10.2 結構體數組的定義及初始化 214
10.2.1 結構體數組的定義 214
10.2.2 結構體數組的初始化 215
10.2.3 結構體數組的應用舉例 216
10.3 指向結構體類型變量的指針 218
10.3.1 指向結構體變量的指針 218
10.3.2 指向結構體數組的指針 220
10.3.3 用結構體變量和指向結構體的指
針作函數參數 223
10.4 用指針處理鏈表 228
10.4.1 鏈表的概述 228
10.4.2 單鏈表 228
10.4.3 建立動態鏈表 229
10.4.4 輸出鏈表 232
10.4.5 對鏈表的插入操作 233
10.4.6 對鏈表的刪除操作 234
10.4.7 鏈表的綜合操作 235
10.5 共用體 237
10.5.1 共用體類型的說明和變量的
定義 238
10.5.2 共用體變量的引用 242
10.5.3 共用體變量的引用方式 244
10.6 枚舉類型 245
10.6.1 枚舉類型的定義 245
10.6.2 枚舉變量的說明 246
10.6.3 枚舉類型變量的賦值和使用 246
10.7 用typedef定義類型 249
10.7.1 用typedef定義類型 249
10.7.2 typedef使用舉例 252
本章小結 254
習題 254
第11章 位運算 258
11.1 位運算的基本概念 258
11.2 位運算符的運算功能舉例 259
本章小結 262
習題 262
第12章 文件 265
12.1 C語言文件的概念 265
12.1.1 文件的概念與文件結構 265
12.1.2 文件系統的緩沖性 266
12.1.3 文件訪問的操作 266
12.2 文件訪問的步驟 272
12.2.1 文件類型指針 272
12.2.2 文件訪問的方法 273
12.3 文件的打開與關閉 274
12.4 標準文件的讀寫 276
12.5 非標準文件的讀寫 281
12.6 文件定位函數 281
12.6.1 fseek()函數 281
12.6.2 ftell()函數 282
12.6.3 rewind()函數 282
12.7 出錯的檢測函數 282
12.7.1 ferror()函數 282
12.7.2 clearerr()函數 283
12.8 判斷文件結束函數 283
12.8.1 feof( )函數 283
12.8.2 remove( )函數 283
本章小結 283
習題 284
第13章 程序的綜合設計 286
13.1 程序舉例 286
13.1.1 數組應用舉例 286
13.1.2 指針應用舉例 287
13.1.3 結構體應用舉例 288
13.1.4 共用體應用舉例 291
13.2 綜合設計 291
本章小結 301
習題 302
附錄A 常用字符與ASCII
對照表 303
附錄B 常用頭文件和函數分類
詳解 304
附錄C C語言庫文件 309
附錄D C語言常見編譯錯誤
信息 311
附錄E 運算符優先級表 322
參考文獻 324