內容提要
本書在內容編排上,採用“套用驅動知識”的方式,即根據每一章套用目標的需求,合理地安排每一個知識主題的引入點,從而將C語言中枯燥難懂的語法知識分解到全書各章並融入到豐富的實例中。本書在編程方法的講解上,採用“逐步構造法”,即通過問題分析、算法設計、程式原型等環節一步一步地構造出完整的程式,從而加深讀者對編程方法的理解和掌握。
本書主要內容包括引論、基本數據與運算、順序結構程式設計、選擇結構程式設計、循環結構程式設計、數組、指針、字元串處理、函式、函式的進一步討論、編譯預處理命令、結構體與共用體、位運算、檔案等。本書以Visual C++ 6.0運行環境為基礎進行介紹,符合當前軟體的發展趨勢,便於讀者學習。
本書內容編排順暢合理,編程方法講解新穎獨特,特別適合初學者自學。本書可作為高等院校各專業學生學習C語言程式設計的教材和參考書。
目 錄
第1章 引論 1
1.1 程式與程式設計語言 1
1.2 C語言的發展及特點 2
1.2.1 C語言的發展 2
1.2.2 C語言的特點 3
1.3 C程式的構成 3
1.4 C程式的運行 5
第2章 基本的數據與運算 10
2.1 常量、變數與標識符 10
2.1.1 標識符 10
2.1.2 變數 10
2.1.3 常量 12
2.2 整型、實型與字元型數據 12
2.2.1 整型數據 13
2.2.2 實型數據 14
2.2.3 字元型數據 15
2.3 算術運算符和算術表達式 17
2.3.1 基本算術運算符 17
2.3.2 算術表達式 19
2.3.3 運算符的優先權 19
2.3.4 運算符的結合性 19
2.4 拓展:整型數據與實型數據的記憶體格式 19
2.4.1 整型數據在記憶體中的表示形式 19
2.4.2 整型數據的溢出 20
2.4.3 實型數據在記憶體中的表示形式 20
2.4.4 實型數據的捨入誤差 21
第3章 順序結構程式設計 22
3.1 C語言的語句類型 22
3.2 變數的賦值和初始化 23
3.2.1 賦值表達式 23
3.2.2 變數的初始化 23
3.3 數據的格式輸入與格式輸出 24
3.3.1 格式輸出函式(printf函式) 24
3.3.2 格式輸入函式(scanf函式) 27
3.4 字元型數據的輸入與輸出 30
3.4.1 字元輸出函式(putchar函式) 30
3.4.2 字元輸入函式(getchar函式) 30
3.5 拓展:賦值運算中的類型轉換 31
3.5.1 實型數據賦給整型(或字元型)變數 31
3.5.2 整型(或字元型)數據賦給實型變數 31
3.5.3 較長的整型數據賦給較短的整型(或字元型)變數 31
3.5.4 較短的整型(或字元型)數據賦給較長的整型變數 32
3.5.5 整型數據賦給不同類型的等長整型變數 32
第4章 選擇結構程式設計 34
4.1 關係表達式與邏輯表達式 34
4.1.1 關係運算符 34
4.1.2 關係表達式 35
4.1.3 邏輯運算符 35
4.1.4 邏輯表達式 36
4.2 算法與流程圖 36
4.2.1 簡單算法舉例 37
4.2.2 算法的特徵 37
4.2.3 算法的表示 37
4.3 if語句 39
4.3.1 if語句的兩種基本形式 39
4.3.2 if語句的嵌套 41
4.3.3 嵌套if結構與平行if結構的區別 43
4.4 混合運算與強制類型轉換 44
4.4.1 混合運算 44
4.4.2 強制類型轉換 45
4.5 switch語句 45
4.6 選擇結構程式舉例 48
4.7 拓展:條件表達式與goto語句 51
4.7.1 條件表達式 51
4.7.2 語句標號與goto語句 52
第5章 循環結構程式設計 53
5.1 while循環 53
5.1.1 while語句 53
5.1.2 while循環程式舉例 54
5.2 自增自減運算符與複合賦值運算符 56
5.2.1 自增自減運算符 56
5.2.2 複合賦值運算符 57
5.3 for循環 58
5.3.1 for語句 58
5.3.2 for循環程式舉例 59
5.4 do-while循環 59
5.5 循環的嵌套 61
5.6 break語句和continue語句 64
5.6.1 break語句 64
5.6.2 continue語句 65
5.7 拓展:逗號表達式與for語句變式 65
5.7.1 逗號運算符與逗號表達式 65
5.7.2 for語句變式 66
5.8 循環結構套用舉例 67
第6章 數組 70
6.1 一維數組 70
6.1.1 一維數組的定義 70
6.1.2 一維數組的使用 71
6.1.3 一維數組的初始化 71
6.1.4 一維數組套用舉例 72
6.2 二維數組 75
6.2.1 二維數組的定義 76
6.2.2 二維數組的初始化 76
6.2.3 二維數組的引用 76
6.2.4 二維數組套用舉例 77
第7章 指針 80
7.1 變數的地址和指針 80
7.2 變數的間接引用 81
7.2.1 指針變數 81
7.2.2 指針變數的定義 81
7.2.3 兩種與指針有關的運算符 81
7.3 指針與一維數組 85
7.3.1 指向一維數組元素的指針 85
7.3.2 通過指針引用一維數組元素 85
7.4 拓展:指針與二維數組 87
7.4.1 指向二維數組元素和行的指針 87
7.4.2 行指針變數 88
7.4.3 指針數組 89
7.4.4 指向指針的指針 90
第8章 字元串處理 92
8.1 字元串的存儲與引用 92
8.1.1 字元串在記憶體中的存儲形式 92
8.1.2 用字元數組存儲和引用字元串 92
8.1.3 用字元指針引用字元串 93
8.2 字元串的輸入和輸出 94
8.2.1 用printf函式輸出字元串 94
8.2.2 用scanf函式輸入字元串 94
8.2.3 用puts函式輸出字元串 95
8.2.4 用gets函式輸入字元串 95
8.3 字元串處理函式 96
8.3.1 字元串長度函式strlen 96
8.3.2 字元串複製函式strcpy 96
8.3.3 字元串連線函式strcat 97
8.3.4 字元串比較函式strcmp 98
8.3.5 字元串大寫轉小寫函式strlwr 99
8.3.6 字元串小寫轉大寫函式strupr 99
8.4 字元串處理套用舉例 99
第9章 函式 104
9.1 庫函式 104
9.2 用戶函式的定義與調用 105
9.2.1 無參函式的定義 105
9.2.2 無參函式的調用 106
9.2.3 有參函式的定義和調用 107
9.3 函式的參數和返回值 109
9.3.1 函式的參數 109
9.3.2 函式的返回值 109
9.4 函式的調用方式與函式原型 111
9.4.1 函式的調用方式 111
9.4.2 函式原型的聲明 111
9.5 變數的作用域和生存期 115
9.5.1 變數的作用域 115
9.5.2 變數的存儲方式 117
9.6 拓展:多檔案程式 118
9.6.1 多檔案程式的運行 119
9.6.2 函式的存儲類別 119
9.6.3 全局變數的存儲類別 120
第10章 函式的進一步討論 123
10.1 指針作函式參數 123
10.2 數組名作函式參數 126
10.2.1 一維數組名作函式參數 126
10.2.2 拓展:二維數組名作函式參數 129
10.3 指針型函式和指向函式的指針 131
10.3.1 指針型函式 131
10.3.2 指向函式的指針 132
10.4 函式的遞歸調用 133
第11章 編譯預處理命令 136
11.1 宏定義命令 136
11.1.1 不帶參數的宏定義 136
11.1.2 帶參數的宏定義 137
11.2 檔案包含命令 138
11.3 拓展:條件編譯 139
第12章 結構體與共用體 142
12.1 定義結構體類型與結構體變數 142
12.1.1 結構體類型的定義 142
12.1.2 結構體類型變數的定義 143
12.1.3 用typedef定義類型別名 145
12.2 結構體變數的引用和初始化 145
12.2.1 結構體變數的引用 145
12.2.2 結構體變數的初始化 146
12.3 結構體數組 147
12.3.1 結構體數組的定義 147
12.3.2 結構體數組的初始化 148
12.4 結構體指針 149
12.4.1 指向結構體變數的指針 149
12.4.2 指向結構體數組元素的指針 150
12.4.3 結構體指針作函式參數 152
12.5 鍊表 153
12.5.1 鍊表的概念 153
12.5.2 記憶體的動態分配 154
12.5.3 鍊表的建立與遍歷 154
12.5.4 鍊表的插入與刪除 157
12.6 拓展:共用體 160
12.6.1 共用體的定義 160
12.6.2 共用體變數的引用 160
12.7 拓展:枚舉類型 161
12.7.1 枚舉類型的定義 161
12.7.2 枚舉類型變數的使用 161
12.8 綜合套用舉例 162
第13章 位運算 166
13.1 位運算符 166
13.1.1 按位取反運算符~ 166
13.1.2 按位與運算符& 167
13.1.3 按位或運算符| 167
13.1.4 按位異或運算符^ 168
13.1.5 按位左移運算符<< 168
13.1.6 按位右移運算符>> 168
13.2 位運算套用舉例 169
第14章 檔案 172
14.1 檔案概述 172
14.1.1 文本檔案和二進制檔案 172
14.1.2 FILE類型 172
14.2 檔案的打開與關閉 173
14.2.1 檔案打開函式fopen 173
14.2.2 檔案關閉函式fclose 175
14.3 檔案的讀寫 176
14.3.1 fscanf函式和fprintf函式 176
14.3.2 fgetc函式和fputc函式 179
14.3.3 fgets函式和fputs函式 181
14.3.4 fread函式和fwtrite函式 184
14.4 拓展:檔案的讀寫定位及狀態檢測 186
14.4.1 rewind函式 186
14.4.2 fseek函式 186
14.4.3 ftell函式 188
附錄A C語言編程典型錯誤 189
附錄B C語言的關鍵字 214
附錄C ASCⅡ字元表 215
附錄D 常用的C語言庫函式 218
附錄E Visual C++ 6.0常見錯誤信息表 224
參考文獻 226