本書立足于作者近20年的C語言教學經驗編寫而成,共14章,內容包括概述,數(shù)據(jù)類型與輸入/輸出,運算符與表達式,算法與結構化程序設計,選擇結構程序設計,循環(huán)結構程序設計,數(shù)組與字符串,指針,函數(shù),結構體、共用體、枚舉、鏈表,編譯預處理,文件,用C語言構造簡單數(shù)據(jù)結構(選學),發(fā)展與規(guī)范(選學)。全書內容經過精心篩選,按照理解順序組織,追求由淺入深、步步提高。除涵蓋C語言的語法知識外,本書還專門增加了用C語言構造隊列、棧、樹等實用的數(shù)據(jù)結構及其相應的常用算法。在第14章中用一個較簡單實用的案例解釋讀者的困惑:與C語言相比,C++增加了什么。本書配有《C語言程序設計上機實驗與習題解答》(第2版)(ISBN 978-7-121-37954-3)。此外,本書配套程序源代碼、PPT課件、動畫演示視頻、實驗自動閱卷系統(tǒng)等資源,讀者可登錄華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。本書特別適合作為大學C語言課程的教材及相關愛好者的自學教材,也適合作為二級C語言考試的參考用書。
藺德軍,青島大學教師,從事C語言程序設計課程教學多年,并輔導二級C語言考試,出版教材多部。
第1章 概述 1
1.1 程序設計語言 1
1.1.1 程序設計語言的概念 1
1.1.2 程序設計語言的發(fā)展 1
1.1.3 程序設計的一般步驟 3
1.2 C語言的發(fā)展歷史和特點 3
1.2.1 C語言的發(fā)展歷史 3
1.2.2 C語言的特點 4
1.3 第1個C語言程序 5
1.3.1 必要的計算機基礎知識——初識內存 5
1.3.2 一個C語言程序從編寫到執(zhí)行的過程 6
1.3.3 使用VC++ 6.0調試程序 6
1.3.4 使用VC++ 2010調試程序 10
1.3.5 編譯時常見錯誤 13
1.3.6 鏈接時常見錯誤 13
1.3.7 執(zhí)行時常見錯誤 14
1.4 C語言程序結構與注意事項 15
1.5 本章小結 17
習題1 17
第2章 數(shù)據(jù)類型與輸入/輸出 18
2.1 變量與常量 18
2.2 常量的表示 19
2.2.1 C語言的基本數(shù)據(jù)類型 19
2.2.2 常量表示一覽表 19
2.2.3 字符常量 20
2.2.4 整型常量 21
2.2.5 浮點型常量 22
2.2.6 雙精度型常量 22
2.2.7 字符串常量 22
2.3 簡單變量類型 23
2.3.1 標識符的要求 23
2.3.2 字符變量、整型變量 24
2.3.3 浮點型變量、雙精度型變量 27
2.4 輸入/輸出 30
2.4.1 getchar()與putchar()函數(shù) 30
2.4.2 printf()函數(shù) 31
2.4.3 scanf()函數(shù) 34
2.5 本章小結 37
習題2 38
第3章 運算符與表達式 41
3.1 表達式 41
3.2 優(yōu)先級與結合方向 41
3.3 基本算術運算符 42
3.4 自增、自減運算符 43
3.5 賦值運算符 45
3.6 關系運算符 46
3.7 邏輯運算符 47
3.8 條件運算符 48
3.9 逗號運算符 49
3.10 位邏輯運算符 51
3.11 移位運算符 52
3.12 復合運算符 54
3.13 類型轉換與混合運算 54
3.14 其他運算符 56
3.15 運算符的優(yōu)先級與結合性一覽表 57
3.16 常用數(shù)學函數(shù) 58
3.17 本章小結 59
習題3 59
第4章 算法與結構化程序設計 65
4.1 算法及其表示 65
4.1.1 算法的概念 65
4.1.2 算法的特征 65
4.1.3 算法的描述方法 67
4.2 結構化程序設計 68
4.2.1 C語言語句綜述 68
4.2.2 goto語句 69
4.2.3 軟件危機與結構化程序設計的提出 70
4.2.4 結構化程序設計的核心思想 71
4.2.5 三種基本程序結構的N-S圖 73
4.3 順序結構程序設計 74
4.3.1 順序結構的含義 74
4.3.2 順序結構程序設計示例 74
4.4 程序調試 75
4.5 本章小結 77
習題4 77
第5章 選擇結構程序設計 79
5.1 if語句 79
5.1.1 if語句的格式 79
5.1.2 if語句的注意事項 80
5.1.3 程序示例 80
5.2 if-else語句 82
5.2.1 if-else語句的格式 82
5.2.2 if-else語句的注意事項 83
5.2.3 縮進結構的書寫方式 84
5.2.4 if-else-if語句 86
5.3 switch語句 88
5.3.1 switch語句的格式 88
5.3.2 switch語句的流程圖及N-S圖 91
5.3.3 switch語句的注意事項 93
5.4 本章小結 93
習題5 93
第6章 循環(huán)結構程序設計 98
6.1 循環(huán)結構概述 98
6.2 while語句 98
6.3 for語句 100
6.3.1 for語句的格式 100
6.3.2 for語句的注意事項 102
6.4 do語句 102
6.5 break語句與continue語句 104
6.5.1 break語句 104
6.5.2 continue語句 105
6.5.3 break語句與continue語句的替代方法 107
6.6 循環(huán)嵌套 108
6.7 常見循環(huán)類問題 109
6.8 本章小結 114
習題6 115
第7章 數(shù)組與字符串 119
7.1 數(shù)組的聲明與存儲 119
7.1.1 數(shù)組的聲明與使用 119
7.1.2 數(shù)組的存儲及數(shù)組名中存儲的內容 121
7.1.3 數(shù)組的初始化 123
7.1.4 使用隨機數(shù)函數(shù) 126
7.2 數(shù)組的常用操作 127
7.2.1 查找最大值、最小值 127
7.2.2 排序 128
7.2.3 插入/刪除元素 130
7.2.4 查找 131
7.3 字符數(shù)組與字符串 132
7.3.1 字符數(shù)組 132
7.3.2 字符串 133
7.3.3 字符串的輸入/輸出 134
7.3.4 字符串的常用處理函數(shù) 136
7.4 程序設計示例 138
7.5 本章小結 140
習題7 140
第8章 指針 144
8.1 指針的含義與使用 144
8.1.1 指針與目標單元 145
8.1.2 指針的聲明與初始化 145
8.1.3 指針的注意事項 146
8.1.4 指針的使用 147
8.2 指針與一維數(shù)組 147
8.3 動態(tài)內存分配 152
8.4 復雜指針 154
8.4.1 數(shù)組指針及多維數(shù)組指針 154
8.4.2 指針數(shù)組 157
8.4.3 二級指針 159
8.4.4 數(shù)組指針數(shù)組 161
8.4.5 三級指針與多級指針 161
8.4.6 指針歸納 162
8.5 本章小結 163
習題8 163
第9章 函數(shù) 166
9.1 函數(shù)功能 166
9.2 函數(shù)的定義與使用 167
9.2.1 函數(shù)的定義與調用格式 167
9.2.2 函數(shù)的定義與調用注意事項 168
9.2.3 定義一個函數(shù)的步驟 169
9.2.4 函數(shù)聲明與頭文件 169
9.2.5 函數(shù)的調用與返回 171
9.3 簡單參數(shù)傳遞 172
9.3.1 值的傳遞 172
9.3.2 變量地址的傳遞 173
9.3.3 參數(shù)的處理次序 175
9.4 變量的作用域 176
9.4.1 不同變量的作用域 176
9.4.2 extern關鍵字 178
9.5 傳遞數(shù)組作為參數(shù) 179
9.5.1 傳遞一維數(shù)組 179
9.5.2 傳遞多維數(shù)組 181
9.5.3 傳遞指針數(shù)組 183
9.5.4 const關鍵字 184
9.6 變量的存儲類型 185
9.7 遞歸 188
9.8 函數(shù)指針 191
9.9 主函數(shù)的參數(shù) 193
9.10 本章小結 194
習題9 194
第10章 結構體、共用體、枚舉、鏈表 200
10.1 結構體 200
10.1.1 結構體的定義 200
10.1.2 關鍵字typedef的用法 201
10.1.3 結構體變量的定義與初始化 202
10.1.4 結構體與函數(shù) 208
10.2 共用體 209
10.3 枚舉 211
10.3.1 枚舉的定義和枚舉變量的聲明 211
10.3.2 枚舉變量的賦值和使用 212
10.4 鏈表 213
10.4.1 鏈表的定義 213
10.4.2 鏈表的建立與遍歷 214
10.4.3 鏈表節(jié)點的插入、刪除操作 217
10.4.4 完整程序示例 220
10.5 本章小結 221
習題10 222
第11章 編譯預處理 229
11.1 宏定義 229
11.1.1 不帶參數(shù)的宏定義 229
11.1.2 帶參數(shù)的宏定義 231
11.1.3 #undef 233
11.2 文件包含 233
11.3 條件編譯 234
11.4 本章小結 238
習題11 239
第12章 文件 241
12.1 文件類型 241
12.2 文件的打開與關閉 242
12.2.1 文件的打開 242
12.2.2 文件的關閉 244
12.3 文件的讀/寫 244
12.3.1 如何判斷文件結束 245
12.3.2 fgetc()、fputc()函數(shù) 245
12.3.3 fscanf()、fprintf()函數(shù) 247
12.3.4 fgets()、fputs()函數(shù) 250
12.3.5 fread()、fwrite()函數(shù) 251
12.4 文件指針的移動 253
12.4.1 rewind()函數(shù) 253
12.4.2 fseek()、ftell()函數(shù) 253
12.4.3 隨機讀/寫 254
12.5 本章小結 255
習題12 256
第13章 用C語言構造簡單數(shù)據(jù)結構(選學) 261
13.1 數(shù)據(jù)結構概述 261
13.1.1 基本概念 261
13.1.2 數(shù)據(jù)的邏輯結構 261
13.1.3 數(shù)據(jù)的存儲結構 262
13.2 算法復雜度 262
13.2.1 算法的時間復雜度 262
13.2.2 算法的空間復雜度 263
13.3 隊列 263
13.4 棧 266
13.5 樹 268
13.5.1 樹的基本概念 268
13.5.2 二叉樹的基本概念 268
13.5.3 二叉樹的遍歷 269
第14章 發(fā)展與規(guī)范(選學) 272
14.1 認識C++ 272
14.2 C語言標準 274
二級C語言筆試真題及答案(一) 276
二級C語言筆試真題及答案(二) 286
附錄A ASCII碼 296
附錄B stdio.h中的常用函數(shù) 297
附錄C stdlib.h中的常用函數(shù) 298
附錄D string.h中的常用函數(shù) 299
附錄E math.h中的常用函數(shù) 300