本書立足于作者近20年的C語言教學(xué)經(jīng)驗編寫而成,共14章,內(nèi)容包括概述,數(shù)據(jù)類型與輸入/輸出,運算符與表達式,算法與結(jié)構(gòu)化程序設(shè)計,選擇結(jié)構(gòu)程序設(shè)計,循環(huán)結(jié)構(gòu)程序設(shè)計,數(shù)組與字符串,指針,函數(shù),結(jié)構(gòu)體、共用體、枚舉、鏈表,編譯預(yù)處理,文件,用C語言構(gòu)造簡單數(shù)據(jù)結(jié)構(gòu)(選學(xué)),發(fā)展與規(guī)范(選學(xué))。全書內(nèi)容經(jīng)過精心篩選,按照理解順序組織,追求由淺入深、步步提高。除涵蓋C語言的語法知識外,本書還專門增加了用C語言構(gòu)造隊列、棧、樹等實用的數(shù)據(jù)結(jié)構(gòu)及其相應(yīng)的常用算法。在第14章中用一個較簡單實用的案例解釋讀者的困惑:與C語言相比,C++增加了什么。本書配有《C語言程序設(shè)計上機實驗與習(xí)題解答》(第2版)(ISBN 978-7-121-37954-3)。此外,本書配套程序源代碼、PPT課件、動畫演示視頻、實驗自動閱卷系統(tǒng)等資源,讀者可登錄華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。本書特別適合作為大學(xué)C語言課程的教材及相關(guān)愛好者的自學(xué)教材,也適合作為二級C語言考試的參考用書。
藺德軍,青島大學(xué)教師,從事C語言程序設(shè)計課程教學(xué)多年,并輔導(dǎo)二級C語言考試,出版教材多部。
第1章 概述 1
1.1 程序設(shè)計語言 1
1.1.1 程序設(shè)計語言的概念 1
1.1.2 程序設(shè)計語言的發(fā)展 1
1.1.3 程序設(shè)計的一般步驟 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 必要的計算機基礎(chǔ)知識——初識內(nèi)存 5
1.3.2 一個C語言程序從編寫到執(zhí)行的過程 6
1.3.3 使用VC++ 6.0調(diào)試程序 6
1.3.4 使用VC++ 2010調(diào)試程序 10
1.3.5 編譯時常見錯誤 13
1.3.6 鏈接時常見錯誤 13
1.3.7 執(zhí)行時常見錯誤 14
1.4 C語言程序結(jié)構(gòu)與注意事項 15
1.5 本章小結(jié) 17
習(xí)題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 本章小結(jié) 37
習(xí)題2 38
第3章 運算符與表達式 41
3.1 表達式 41
3.2 優(yōu)先級與結(jié)合方向 41
3.3 基本算術(shù)運算符 42
3.4 自增、自減運算符 43
3.5 賦值運算符 45
3.6 關(guān)系運算符 46
3.7 邏輯運算符 47
3.8 條件運算符 48
3.9 逗號運算符 49
3.10 位邏輯運算符 51
3.11 移位運算符 52
3.12 復(fù)合運算符 54
3.13 類型轉(zhuǎn)換與混合運算 54
3.14 其他運算符 56
3.15 運算符的優(yōu)先級與結(jié)合性一覽表 57
3.16 常用數(shù)學(xué)函數(shù) 58
3.17 本章小結(jié) 59
習(xí)題3 59
第4章 算法與結(jié)構(gòu)化程序設(shè)計 65
4.1 算法及其表示 65
4.1.1 算法的概念 65
4.1.2 算法的特征 65
4.1.3 算法的描述方法 67
4.2 結(jié)構(gòu)化程序設(shè)計 68
4.2.1 C語言語句綜述 68
4.2.2 goto語句 69
4.2.3 軟件危機與結(jié)構(gòu)化程序設(shè)計的提出 70
4.2.4 結(jié)構(gòu)化程序設(shè)計的核心思想 71
4.2.5 三種基本程序結(jié)構(gòu)的N-S圖 73
4.3 順序結(jié)構(gòu)程序設(shè)計 74
4.3.1 順序結(jié)構(gòu)的含義 74
4.3.2 順序結(jié)構(gòu)程序設(shè)計示例 74
4.4 程序調(diào)試 75
4.5 本章小結(jié) 77
習(xí)題4 77
第5章 選擇結(jié)構(gòu)程序設(shè)計 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 縮進結(jié)構(gòu)的書寫方式 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 本章小結(jié) 93
習(xí)題5 93
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計 98
6.1 循環(huán)結(jié)構(gòu)概述 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 本章小結(jié) 114
習(xí)題6 115
第7章 數(shù)組與字符串 119
7.1 數(shù)組的聲明與存儲 119
7.1.1 數(shù)組的聲明與使用 119
7.1.2 數(shù)組的存儲及數(shù)組名中存儲的內(nèi)容 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 程序設(shè)計示例 138
7.5 本章小結(jié) 140
習(xí)題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)內(nèi)存分配 152
8.4 復(fù)雜指針 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 本章小結(jié) 163
習(xí)題8 163
第9章 函數(shù) 166
9.1 函數(shù)功能 166
9.2 函數(shù)的定義與使用 167
9.2.1 函數(shù)的定義與調(diào)用格式 167
9.2.2 函數(shù)的定義與調(diào)用注意事項 168
9.2.3 定義一個函數(shù)的步驟 169
9.2.4 函數(shù)聲明與頭文件 169
9.2.5 函數(shù)的調(diào)用與返回 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關(guān)鍵字 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關(guān)鍵字 184
9.6 變量的存儲類型 185
9.7 遞歸 188
9.8 函數(shù)指針 191
9.9 主函數(shù)的參數(shù) 193
9.10 本章小結(jié) 194
習(xí)題9 194
第10章 結(jié)構(gòu)體、共用體、枚舉、鏈表 200
10.1 結(jié)構(gòu)體 200
10.1.1 結(jié)構(gòu)體的定義 200
10.1.2 關(guān)鍵字typedef的用法 201
10.1.3 結(jié)構(gòu)體變量的定義與初始化 202
10.1.4 結(jié)構(gòu)體與函數(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 本章小結(jié) 221
習(xí)題10 222
第11章 編譯預(yù)處理 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 本章小結(jié) 238
習(xí)題11 239
第12章 文件 241
12.1 文件類型 241
12.2 文件的打開與關(guān)閉 242
12.2.1 文件的打開 242
12.2.2 文件的關(guān)閉 244
12.3 文件的讀/寫 244
12.3.1 如何判斷文件結(jié)束 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 本章小結(jié) 255
習(xí)題12 256
第13章 用C語言構(gòu)造簡單數(shù)據(jù)結(jié)構(gòu)(選學(xué)) 261
13.1 數(shù)據(jù)結(jié)構(gòu)概述 261
13.1.1 基本概念 261
13.1.2 數(shù)據(jù)的邏輯結(jié)構(gòu) 261
13.1.3 數(shù)據(jù)的存儲結(jié)構(gòu) 262
13.2 算法復(fù)雜度 262
13.2.1 算法的時間復(fù)雜度 262
13.2.2 算法的空間復(fù)雜度 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ī)范(選學(xué)) 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