本書為工業和信息化普通高等教育“十二五”規劃教材和河南省“十二五”普通高等教育規劃教材,是高等院校計算機基礎教育教材。全書共分14章,主要內容包括:C語言概述,基本數據類型、運算符與表達式,順序結構程序設計,選擇結構程序設計,循環結構程序設計,數組,函數,編譯預處理,指針,結構體、共用體及枚舉類型,文件,C++基礎,VC++ 6.0開發環境及程序測試與調試,上機實驗內容等;各章后均附有大量習題。書后附有完整的ASCII代碼對照表、C語言中的關鍵字、運算符優先級和結合方向、常用庫函數。
本書內容豐富、新穎,圖文并茂,通俗易懂,實用性強,可作為高等學校非計算機專業的計算機基礎課教材,也可作為應用計算機人員的學習參考書。
第1章 C語言概述 1
1.1 C語言的發展及特點 1
1.1.1 C語言的發展 1
1.1.2 C語言的特點 2
1.2 C語言程序的基本結構 3
1.3 算法及其描述 5
1.3.1 算法的概念 5
1.3.2 算法的描述方法 7
1.4 程序設計方法 11
1.4.1 程序設計的一般步驟 11
1.4.2 結構化程序設計方法 11
本章小結 13
習題 13
第2章 基本數據類型、運算符與表達式 15
2.1 C語言的數據類型 15
2.2 常量和變量 16
2.2.1 常量 16
2.2.2 變量 17
2.3 整型數據 18
2.3.1 整型常量的表示 18
2.3.2 整型變量 18
2.3.3 整型常量的類型 20
2.4 實型數據 20
2.4.1 實型常量的表示 20
2.4.2 實型變量 21
2.4.3 實型常量的類型 22
2.5 字符型數據 22
2.5.1 字符型常量 22
2.5.2 字符變量 24
2.6 算術運算符與算術表達式 25
2.6.1 基本算術運算符 25
2.6.2 算術表達式及算術運算符的優先級和結合性 26
2.6.3 自增、自減運算符 27
2.7 賦值運算符與賦值表達式 28
2.7.1 賦值運算符 28
2.7.2 復合賦值運算符 28
2.7.3 賦值表達式 29
2.8 逗號運算符與逗號表達式 29
2.9 位運算符 30
2.9.1 位運算符 30
2.9.2 位運算復合賦值運算符 31
2.10 數據類型轉換與計算類型長度運算符 32
2.10.1 自動類型轉換 32
2.10.2 強制類型轉換 33
2.10.3 計算類型長度運算符 34
本章小結 34
習題 34
第3章 順序結構程序設計 38
3.1 C語言語句概述 38
3.1.1 簡單語句 38
3.1.2 復合語句 39
3.2 字符數據的輸入/輸出 39
3.2.1 字符輸出函數(putchar) 40
3.2.2 字符輸入函數(getchar) 40
3.3 格式化輸入/輸出函數 41
3.3.1 格式輸出函數(printf) 41
3.3.2 格式輸入函數(scanf) 44
3.4 順序結構程序設計舉例 47
本章小結 48
習題 49
第4章 選擇結構程序設計 52
4.1 關系運算符和關系表達式 52
4.1.1 關系運算符 52
4.1.2 關系表達式 53
4.2 邏輯運算符和邏輯表達式 53
4.2.1 邏輯運算符 53
4.2.2 邏輯表達式 54
4.3 if語句及其構成的選擇結構 55
4.3.1 if語句的形式 55
4.3.2 if語句的嵌套 57
4.3.3 條件運算符和條件表達式 59
4.4 switch語句及其構成的選擇結構 60
4.4.1 switch語句的形式 60
4.4.2 在switch語句中使用break語句 61
4.5 選擇結構程序設計舉例 62
本章小結 64
習題 65
第5章 循環結構程序設計 70
5.1 概述 70
5.2 while語句 71
5.3 do-while語句 72
5.4 for語句 74
5.5 break語句和continue語句 76
5.5.1 break語句 76
5.5.2 continue語句 77
5.6 循環的嵌套 77
5.7 循環結構程序設計舉例 78
本章小結 81
習題 81
第6章 數組 89
6.1 一維數組 89
6.1.1 一維數組的定義 89
6.1.2 一維數組元素的引用 90
6.1.3 一維數組的存儲與初始化 91
6.1.4 一維數組程序設計舉例 92
6.2 二維數組與多維數組 93
6.2.1 二維數組的定義 93
6.2.2 二維數組元素的引用 95
6.2.3 二維數組的初始化 95
6.2.4 二維數組程序設計舉例 96
6.2.5 多維數組概述 97
6.3 字符數組與字符串 98
6.3.1 字符數組的定義 98
6.3.2 字符數組的初始化 98
6.3.3 字符數組元素的引用 98
6.3.4 字符串與字符數組 99
6.3.5 字符串處理函數 101
6.3.6 字符數組程序設計舉例 103
本章小結 105
習題 105
第7章 函數 112
7.1 模塊化程序設計 112
7.1.1 模塊化程序設計概念 112
7.1.2 函數概述 113
7.2 函數的定義 114
7.2.1 函數定義的一般形式 114
7.2.2 函數的返回 115
7.3 函數的調用 115
7.3.1 函數調用的一般方式 115
7.3.2 函數參數的傳遞 116
7.3.3 函數的聲明 117
7.3.4 函數的嵌套調用 117
7.4 函數的遞歸調用 119
7.5 數組作為函數參數 121
7.5.1 數組元素作函數實參 121
7.5.2 數組名作為函數參數 122
7.5.3 多維數組名作為函數參數 123
7.6 變量的作用域 124
7.6.1 局部變量 124
7.6.2 全局變量 125
7.7 變量的存儲類別 126
7.7.1 變量的生存期 126
7.7.2 局部變量的存儲類別 126
7.7.3 全局變量的存儲類別 128
7.8 內部函數和外部函數 130
本章小結 131
習題 131
第8章 編譯預處理 138
8.1 宏定義 138
8.1.1 無參宏定義 138
8.1.2 帶參宏定義 141
8.2 條件編譯 144
8.3 文件包含 146
本章小結 148
習題 148
第9章 指針 150
9.1 地址和指針的概念 150
9.2 指針變量 151
9.2.1 指針變量的定義與賦值 151
9.2.2 指針變量的引用 152
9.3 指針與數組 154
9.3.1 指針與一維數組 154
9.3.2 指針與二維數組 157
9.4 指針與字符串 160
9.4.1 指向字符數組的指針變量 160
9.4.2 指向字符串常量的指針變量 161
9.5 指針與函數 162
9.5.1 指針作為函數的參數 162
9.5.2 指向函數的指針(函數指針) 166
9.5.3 返回指針值的函數(指針函數) 168
9.6 指針數組和多級指針 169
9.6.1 指針數組的定義 169
9.6.2 指針數組與字符串 170
9.6.3 多級指針 171
9.6.4 指針數組作為函數參數 172
9.6.5 帶參main函數 172
本章小結 174
習題 174
第10章 結構體、共用體及枚舉類型 182
10.1 結構體變量的定義 182
10.1.1 結構體類型的定義 182
10.1.2 結構體變量的定義 183
10.2 結構體變量的引用和初始化 184
10.2.1 結構體變量的引用 184
10.2.2 結構體變量的初始化 185
10.3 結構體數組 185
10.3.1 結構體數組的定義 185
10.3.2 結構體數組的初始化 186
10.3.3 結構體數組的引用 186
10.4 結構體指針變量 187
10.4.1 指向結構體變量的指針 187
10.4.2 指向結構體數組的指針 189
10.5 結構體與函數 190
10.5.1 結構體變量作為函數參數 190
10.5.2 返回結構體類型數據的函數 190
10.5.3 結構體指針作為函數參數 191
10.6 位段結構體 192
10.6.1 位段結構體類型及其變量的定義 192
10.6.2 位域的引用 193
10.7 鏈表 194
10.7.1 鏈表概述 194
10.7.2 內存動態管理 194
10.7.3 創建鏈表 196
10.7.4 順序訪問鏈表中的結點 197
10.7.5 在鏈表中插入結點 197
10.7.6 在鏈表中刪除結點 200
10.8 共用體 202
10.8.1 共用體類型及其變量的定義 202
10.8.2 共用體變量的引用 203
10.9 枚舉類型 204
10.9.1 枚舉類型和枚舉變量的定義 204
10.9.2 枚舉類型變量的賦值和使用 205
10.10 用typedef定義類型 206
本章小結 207
習題 207
第11章 文件 212
11.1 文件概述 212
11.1.1 文件的概念 212
11.1.2 文件的分類 212
11.2 文件類型指針和文件位置指針 214
11.2.1 文件類型指針 214
11.2.2 文件位置指針 214
11.3 文件的打開和關閉 214
11.3.1 文件打開函數 215
11.3.2 文件關閉函數 216
11.4 文件的讀寫 217
11.4.1 讀寫一個字符的函數 217
11.4.2 塊讀寫函數 218
11.4.3 其他讀寫函數 221
11.5 文件的定位和出錯檢測 221
11.5.1 文件的定位函數 221
11.5.2 出錯檢測函數 223
本章小結 223
習題 224
第12章 C++基礎 229
12.1 概述 229
12.1.1 C++的發展歷程 229
12.1.2 面向對象程序設計 230
12.2 C++對C的擴充 231
12.2.1 C++的輸入/輸出 231
12.2.2 重載函數與缺省參數的函數 233
12.2.3 變量的引用 234
12.2.4 內聯函數 236
12.2.5 作用域運算符 236
12.2.6 new和delete 237
12.3 類與對象 238
12.3.1 類的定義 238
12.3.2 對象 239
12.3.3 構造函數 240
12.3.4 析構函數 243
12.4 繼承與派生 243
12.4.1 繼承與派生的方式 243
12.4.2 派生類的三種繼承方式 244
12.4.3 派生類的構造和析構函數 246
12.5 多態性與虛函數 248
12.5.1 多態性 248
12.5.2 虛函數 249
本章小結 251
習題 251
第13章 VC++ 6.0開發環境及程序測試與調試 254
13.1 VC++ 6.0的主窗口界面 254
13.2 編輯C語言源程序文件 255
13.2.1 新建C源程序文件 256
13.2.2 編輯已存在的文件 258
13.3 編譯、連接和運行程序 258
13.3.1 編譯 259
13.3.2 連接 260
13.3.3 運行 261
13.4 建立和運行多個文件的方法 261
13.5 程序測試與調試 263
13.5.1 程序測試 263
13.5.2 程序調試 265
13.6 常見編譯、連接出錯信息 267
第14章 上機實驗內容 274
14.1 上機實驗總目的和要求 274
14.1.1 上機實驗總目的 274
14.1.2 上機實驗總要求 274
14.2 實驗一 基本數據類型、運算符與表達式 275
14.2.1 實驗目的和要求 275
14.2.2 實驗內容及操作步驟 275
14.2.3 選做題 277
14.3 實驗二 順序和選擇程序設計 278
14.3.1 實驗目的和要求 278
14.3.2 實驗內容及操作步驟 278
14.3.3 選做題 280
14.4 實驗三 循環程序設計 281
14.4.1 實驗目的和要求 281
14.4.2 實驗內容及操作步驟 281
14.4.3 選做題 283
14.5 實驗四 數組 283
14.5.1 實驗目的和要求 283
14.5.2 實驗內容及操作步驟 283
14.5.3 選做題 285
14.6 實驗五 函數(1) 286
14.6.1 實驗目的和要求 286
14.6.2 實驗內容及操作步驟 286
14.6.3 選做題 289
14.7 實驗六 函數(2)與編譯預處理 289
14.7.1 實驗目的和要求 289
14.7.2 實驗內容及操作步驟 289
14.7.3 選做題 290
14.8 實驗七 指針 290
14.8.1 實驗目的和要求 290
14.8.2 實驗內容及操作步驟 290
14.8.3 選做題 292
14.9 實驗八 結構體、共用體與枚舉類型 293
14.9.1 實驗目的和要求 293
14.9.2 實驗內容及操作步驟 293
14.9.3 選做題 296
14.10 實驗九 文件 296
14.10.1 實驗目的和要求 296
14.10.2 實驗內容及操作步驟 297
14.10.3 選做題 298
14.11 實驗十 C++基礎 298
14.11.1 實驗目的和要求 298
14.11.2 實驗內容及操作步驟 298
14.11.3 選做題 298
14.12 實驗十一 綜合程序設計 299
14.12.1 實驗目的和要求 299
14.12.2 實驗內容及步驟 299
14.12.3 選做題 300
附錄Ⅰ ASCII代碼對照表 301
附錄Ⅱ C語言中的關鍵字 302
附錄Ⅲ 運算符優先級和結合方向 303
附錄Ⅳ 常用庫函數 305
參考文獻 310