本書是根據教育部計算機基礎課程教學指導委員會制定的大綱,結合目前普通高等院校計算機基礎教學的現狀和全國計算機等級考試大綱,由一線教師組織編寫的。全書共12章,主要內容包括C語言概述、基本數據類型與表達式、順序結構程序設計、選擇結構程序設計、循環結構程序設計、數組、函數、編譯預處理、指針、結構體、共用體和枚舉、文件。本書主線清晰、重點明確、敘述嚴謹、內容由淺入深。書中從全國計算機等級考試二級(C語言)試題中選用了大量經典試題作為例題和練習題,有很強的針對性,并有配套的教學課件。本書適合作為高等院校本科生的教學用書,也可作為參加全國計算機等級考試二級(C語言)的輔導教材,同時也是工程技術人員較好的參考用書。
陳亮, 男, 副教授, 西安交通大學博士, 西安工程學院計算機科學學院副院長, 長期從事計算機科學的教學與研究工作, 發表論文多篇.
第1章 C語言概述 1
1.1 程序設計的相關概念 1
1.1.1 基本概念 1
1.1.2 算法 1
1.1.3 數據結構 3
1.1.4 算法+數據結構=程序 3
1.2 C/C++語言的產生及特點 3
1.3 C語言程序結構的特點 4
1.4 C語言中的詞匯 6
1.5 C語言程序編寫的基本規范 7
1.6 C語言程序的開發步驟及Microsoft Visual C++ 2010 Express集成開發環境介紹 9
1.6.1 C語言程序的開發步驟 9
1.6.2 Microsoft Visual C++ 2010 Express集成開發環境介紹 9
1.6.3 利用集成開發環境進行程序開發 10
第2章 基本數據類型與表達式 14
2.1 C語言的數據類型 14
2.2 標識符、常量和變量 15
2.2.1 標識符 15
2.2.2 常量和符號常量 15
2.2.3 變量 16
2.3 整型 17
2.3.1 整型常量 17
2.3.2 整型變量 17
2.3.3 整型數據的存儲形式 18
2.4 實型 19
2.4.1 實型常量 19
2.4.2 實型變量 19
2.4.3 實型數據在內存中的存儲形式 19
2.5 字符型 20
2.5.1 字符常量 20
2.5.2 字符串常量 21
2.5.3 字符變量 22
2.6 算術表達式 22
2.6.1 C語言運算符簡介 22
2.6.2 數值型數據混合運算時的類型轉換 22
2.6.3 算術運算符及算術表達式 23
2.7 賦值表達式 25
2.7.1 賦值運算符和賦值表達式 25
2.7.2 復合賦值表達式 25
2.7.3 賦值運算中的類型轉換 26
2.8 關系表達式和邏輯表達式 27
2.8.1 C語言的邏輯值 27
2.8.2 關系運算符及關系表達式 27
2.8.3 邏輯運算符及邏輯表達式 27
2.9 逗號表達式 28
2.10 位運算 29
2.10.1 位運算符 29
2.10.2 位域簡介 32
2.11 條件運算符和條件表達式 33
第3章 順序結構程序設計 35
3.1 C語句概述 35
3.2 程序的三種基本結構 37
3.3 數據的輸入/輸出 39
3.3.1 格式輸出函數printf 39
3.3.2 格式輸入函數scanf 44
3.3.3 字符輸出函數putchar 47
3.3.4 字符輸入函數getchar 47
3.4 順序結構程序設計舉例 48
第4章 選擇結構程序設計 55
4.1 關系運算符與關系表達式 55
4.1.1 關系運算符 55
4.1.2 關系表達式 56
4.2 邏輯運算符與邏輯表達式 56
4.2.1 邏輯運算符 56
4.2.2 邏輯表達式 57
4.3 if語句 57
4.3.1 if語句的三種形式 57
4.3.2 if語句的嵌套使用 62
4.4 switch語句 64
4.5 選擇結構程序設計舉例 67
第5章 循環結構程序設計 71
5.1 概述 71
5.2 while語句及其循環結構 72
5.3 do-while語句及其循環結構 75
5.4 for語句及其循環結構 76
5.5 break、continue和goto語句 78
5.5.1 break語句 80
5.5.2 continue語句 80
5.5.3 goto語句 81
5.6 循環的嵌套 81
5.7 循環程序舉例 83
第6章 數組 87
6.1 一維數組 87
6.1.1 一維數組的定義 87
6.1.2 一維數組元素的引用 88
6.1.3 一維數組的初始化 89
6.1.4 一維數組程序舉例 90
6.2 二維數組 96
6.2.1 二維數組的定義 96
6.2.2 二維數組元素的引用 96
6.2.3 二維數組的初始化 97
6.2.4 二維數組程序舉例 98
6.3 字符數組 103
6.3.1 字符數組的定義 104
6.3.2 字符數組的初始化 104
6.3.3 字符數組的引用 105
6.3.4 字符串和字符串結束標志 106
6.3.5 字符數組的輸入/輸出 107
6.3.6 字符串處理函數 109
6.3.7 字符數組應用舉例 114
第7章 函數 118
7.1 函數概述 118
7.2 函數的定義與返回值 119
7.2.1 函數的定義 119
7.2.2 函數的返回值 121
7.3 函數的調用 122
7.3.1 函數的參數及其傳遞 122
7.3.2 函數調用方式 124
7.3.3 函數聲明和函數原型 125
7.4 函數的嵌套調用 126
7.5 函數的遞歸調用 128
7.6 數組作為函數的參數 132
7.6.1 數組元素作為函數實參 132
7.6.2 數組名作為函數參數 133
7.7 局部變量和全局變量 137
7.7.1 局部變量及其作用域和生存期 138
7.7.2 全局變量及其作用域和生存期 141
7.8 內部函數和外部函數 144
第8章 編譯預處理 147
8.1 宏定義 147
8.1.1 無參宏的定義 147
8.1.2 帶參數的宏定義 150
8.2 文件包含 153
8.3 條件編譯 155
第9章 指針 159
9.1 存儲單元及其地址 159
9.2 變量的實質 160
9.3 指針和變量 162
9.3.1 指針相關概念的引入 162
9.3.2 指針變量的定義和聲明 163
9.3.3 指針變量的引用 164
9.4 指針和數組 168
9.4.1 指向一維數組元素的指針 168
9.4.2 通過指針變量引用一維數組元素 170
9.4.3 指向二維數組的指針 171
9.4.4 指針型數組 175
9.4.5 動態數組的實現 178
9.5 指針和字符串 180
9.5.1 字符指針 180
9.5.2 字符指針變量和字符數組的比較 182
9.5.3 字符串數組的進一步討論 183
9.6 指針和函數 186
9.6.1 指針作為函數的參數 186
9.6.2 指針型函數 190
9.6.3 指向函數的指針 191
9.6.4 數組和指向數組的指針變量作為函數參數的進一步討論 194
9.7 指針和多級指針 196
9.7.1 指向指針的指針 196
9.7.2 多級指針 198
第10章 結構體與鏈表 199
10.1 概述 199
10.2 結構體類型的聲明 200
10.3 結構體變量的定義 200
10.4 結構體變量的引用 202
10.4.1 對結構體變量成員的引用 203
10.4.2 對結構體變量的整體引用 203
10.5 結構體變量的初始化 203
10.6 結構體數組 204
10.6.1 結構體數組的定義 205
10.6.2 結構體數組的初始化 206
10.6.3 結構體數組元素的引用 207
10.7 指向結構體類型數據的指針 208
10.7.1 指向結構體變量的指針 208
10.7.2 指向結構體數組的指針 209
10.7.3 結構體變量和指向結構體的指針作為函數參數 211
10.8 鏈表 216
10.8.1 鏈表概述 216
10.8.2 處理動態鏈表所需的函數 216
10.8.3 單鏈表 217
10.8.4 雙向鏈表 230
10.9 用typedef定義類型 236
第11章 共用體和枚舉 238
11.1 共用體類型 238
11.1.1 共用體類型和共用體變量的定義 238
11.1.2 共用體變量的引用 240
11.1.3 共用體的特點 240
11.1.4 共用體和結構體的比較 241
11.2 共用體類型應用舉例 241
11.3 枚舉類型 243
11.3.1 枚舉類型的定義 243
11.3.2 枚舉類型的特點 244
11.3.3 枚舉類型應用舉例 244
第12章 文件 247
12.1 文件概述 247
12.2 文件指針 248
12.3 文件的打開和關閉 249
12.3.1 文件的打開函數fopen 249
12.3.2 文件的關閉函數fclose 250
12.4 文件的讀/寫 251
12.4.1 字符讀/寫函數fgetc和fputc 251
12.4.2 字符串讀/寫函數fgets和fputs 252
12.4.3 數據塊讀/寫函數fread和fwrite 252
12.4.4 格式化讀/寫函數fscanf和fprintf 253
12.5 文件的隨機讀/寫 253
12.5.1 文件定位 253
12.5.2 文件的隨機讀/寫 254
12.6 文件檢測函數 255
12.6.1 文件結束檢測函數feof 255
12.6.2 讀/寫文件出錯檢測函數ferror 255
12.6.3 文件出錯標志和文件結束標志置零函數clearerr 255
12.7 庫文件 255
12.8 文件應用舉例 256
附錄A ASCII碼表 261
附錄B 運算符的優先級和結合方向一覽 264
附錄C C語言標準庫函數 265
C.1 頭文件 265
C.2 常用庫函數分類 266
參考文獻 269