第1章 程序設計與C語言概述 1
1.1 計算機程序 2
1.1.1 什麼是程序 2
1.1.2 什麼是計算機程序 3
1.1.3 程序設計 4
1.2 計算機語言 4
1.2.1 語言 4
1.2.2 什麼是計算機語言 4
1.2.3 計算機語言簡史 4
1.2.4 高級語言的執行方式 6
1.3 C語言概述 7
1.3.1 為什麼叫“C語言” 7
1.3.2 C語言的版本 7
1.3.3 C語言的特點 7
1.3.4 C語言的應用 9
1.4 第一個C程序 9
1.4.1 為什麼選“Hello,World” 9
1.4.2 “Hello,World”程序 10
1.4.3 “Hello,World”程序解析 10
1.4.4 C程序結構特點解析 10
1.4.5 C程序是如何執行的 12
1.5 Microsoft Visual C++ 6.0集成開發環境簡介 13
1.5.1 集成開發環境(IDE) 13
1.5.2 集成開發環境的功能 13
1.5.3 為什麼選擇Microsoft Visual C++ 6.0 14
1.5.4 Microsoft Visual C++ 6.0的版本 15
1.5.5 Microsoft Visual C++ 6.0的安裝 15
1.5.6 項目和工作區 18
1.5.7 VisualC++6.0界麵簡介 19
1.5.8 常用菜單項 21
1.5.9 常用工具欄 22
1.5.10 視圖窗格簡介 23
1.5.11 代碼顔色 26
1.5.12 使用Visual C++ 6.0編寫和運行“Hello,World”程序 26
第2章 數據及數據類型 30
2.1 數據在計算機中的錶示 31
2.1.1 數據 31
2.1.2 字符集和標識符 31
2.1.3 數據在計算機中的錶示 33
2.2 數據類型 34
2.2.1 數據類型的解釋 35
2.2.2 C語言中的數據類型 35
2.3 常量 36
2.3.1 整型常量 36
2.3.2 實型常量 38
2.3.3 字符常量 39
2.3.4 字符串常量 40
2.3.5 符號常量 41
2.4 變量 42
2.4.1 給變量命名 42
2.4.2 變量定義 42
2.4.3 變量名與變量的值 43
2.4.4 變量初始化 44
2.4.5 賦值 44
2.4.6 整型變量 45
2.4.7 實型變量 48
2.4.8 字符變量 50
2.5 數據的輸入/輸齣 50
2.5.1 什麼是輸入/輸齣 51
2.5.2 C語言中輸入/輸齣的實現 51
2.5.3 格式化輸齣——printf()函數 51
2.5.4 格式化輸入——scanf()函數 56
2.5.5 字符的輸齣——putchar()函數 60
2.5.6 字符的輸入——getchar()函數 61
2.5.7 輸齣字符串——puts()函數 61
2.5.8 讀取字符串——gets()函數 62
第3章 運算符、錶達式和語句 64
3.1 運算符和錶達式概述 65
3.1.1 運算符 65
3.1.2 錶達式 65
3.1.3 運算符的優先級和結閤性 66
3.2 算術運算符與算術錶達式 67
3.2.1 算術運算符 67
3.2.2 算術錶達式 68
3.2.3 算術錶達式的求值 68
3.3 賦值運算符與賦值錶達式 69
3.3.1 簡單賦值 69
3.3.2 左值和右值 70
3.3.3 復閤賦值 71
3.3.4 賦值運算符的副作用 71
3.3.5 子錶達式的求值順序 72
3.4 類型轉換 72
3.4.1 類型轉換簡述 72
3.4.2 自動類型轉換 73
3.4.3 強製類型轉換 76
3.5 自增和自減運算符 78
3.5.1 簡化特殊的運算符 78
3.5.2 使用自增和自減運算符注意事項 79
3.6 逗號運算符與逗號錶達式 79
3.6.1 逗號錶達式 80
3.6.2 使用逗號錶達式注意事項 80
3.7 關係運算符與關係錶達式 81
3.7.1 關係運算符 81
3.7.2 關係錶達式的值 81
3.7.3 使用關係運算符注意事項 81
3.8 邏輯運算符與邏輯錶達式 82
3.8.1 邏輯運算符 82
3.8.2 邏輯錶達式 82
3.8.3 “短路”計算 83
3.9 位運算符 83
3.9.1 C語言的位運算符 83
3.9.2 按位與運算符 84
3.9.3 按位或運算符 85
3.9.4 按位異或運算符 85
3.9.5 按位取反運算符 86
3.9.6 左移運算符 87
3.9.7 右移運算符 88
3.9.8 位運算中的整數提升 88
3.9.9 位運算賦值運算符 89
3.10 sizeof運算符 89
3.10.1 使用sizeof 89
3.10.2 sizeof的結果 90
3.10.3 sizeof的優先級 91
3.10.4 各種類型數據長度的計算 91
3.11 語句 91
3.11.1 什麼是語句 92
3.11.2 語句類型 92
3.11.3 賦值語句 93
第4章 流程控製 95
4.1 流程的錶示方法 96
4.1.1 自然語言錶示法 96
4.1.2 流程圖錶示法 96
4.2 順序結構 97
4.2.1 什麼是順序結構 97
4.2.2 順序結構程序設計方法 98
4.3 分支結構 100
4.3.1 什麼是分支結構 100
4.3.2 if語句的解釋 101
4.3.3 if語句的3種形式 101
4.3.4 嵌套的if語句 105
4.3.5 應用if語句注意事項 106
4.3.6 條件運算符的解釋 109
4.3.7 應用條件運算符注意事項 110
4.3.8 switch語句的解釋 111
4.3.9 應用switch語句注意事項 113
4.3.10 分支結構程序設計方法 113
4.4 循環結構 116
4.4.1 什麼是循環結構 116
4.4.2 關於while語句的解釋 116
4.4.3 應用while語句注意事項 117
4.4.4 關於do…while語句的解釋 118
4.4.5 應用do…while語句時防止死循環 119
4.4.6 不確定循環和計數循環 119
4.4.7 關於for語句的解釋 120
4.4.8 使用for語句注意事項 121
4.4.9 選擇哪種循環實現方式 123
4.4.10 循環中的循環 124
4.4.11 循環結構程序設計方法 125
4.5 跳轉結構 128
4.5.1 什麼是跳轉結構 128
4.5.2 break語句 129
4.5.3 continue語句 131
4.5.4 goto語句 132
4.5.5 C語言中保留goto語句的原因 133
第5章 函數 136
5.1 函數與結構化程序設計 137
5.1.1 函數是“黑盒子” 137
5.1.2 數學函數與C語言函數 138
5.1.3 C語言函數中的庫函數 139
5.1.4 結構化的程序設計 139
5.2 函數的使用 140
5.2.1 函數的定義 140
5.2.2 函數的類型 141
5.2.3 函數的返迴值 142
5.2.4 函數的參數 145
5.2.5 函數的調用 148
5.2.6 函數的嵌套——濛特卡羅法求圓周率 151
5.3 遞歸 153
5.3.1 遞歸的定義 154
5.3.2 使用遞歸的原則 155
5.3.3 分治法與漢諾塔 162
5.3.4 迴溯法與八皇後問題 164
5.4 變量的作用域 168
5.4.1 局部變量 168
5.4.2 局部變量的作用域 168
5.4.3 全局變量 169
5.5 變量的存儲類型 171
5.5.1 auto變量 172
5.5.2 static局部變量 173
5.5.3 register變量 174
5.5.4 extern變量 176
5.5.5 static外部變量 178
5.6 執行多文件程序 179
5.6.1 內部函數 179
5.6.2 外部函數 179
5.6.3 多文件程序實例 181
第6章 數組與字符串 183
6.1 一維數組的使用 184
6.1.1 數組概念的引入——中國古代軍隊編製 184
6.1.2 數組元素的使用 185
6.1.3 數組的初始化 185
6.1.4 小心訪問越界 187
6.1.5 數組應用舉例 187
6.2 數組類型的參數 190
6.2.1 以數組作為參數 190
6.2.2 避免數組被修改 191
6.2.3 函數返迴數組的兩種方法 192
6.3 多維數組的使用 195
6.3.1 從一維到二維 195
6.3.2 初始化及使用二維數組 195
6.3.3 多維數組應用舉例 197
6.4 字符數組 201
6.4.1 定義與初始化 201
6.4.2 字符串的使用 201
6.4.3 字符串的處理——大小寫轉換函數 203
6.4.4 字符串的處理——字符串比較函數 203
6.4.5 字符串的處理——字符串長度的獲得 204
6.4.6 字符串的處理——字符串連接函數 204
6.4.7 字符串的處理——字符串復製函數 205
6.4.8 字符串應用舉例 207
第7章 指針 210
7.1 指針與地址 211
7.1.1 內存和地址的概念 211
7.1.2 定義指針變量 213
7.1.3 使用指針變量 214
7.2 指針與數組 217
7.2.1 用指針訪問數組元素 217
7.2.2 直接插入排序 219
7.2.3 用指針操作多維數組 220
7.2.4 Z字形編排過程 223
7.2.5 復雜指針運算的解析 225
7.3 使用字符串指針變量 226
7.3.1 指嚮字符串的指針 226
7.3.2 與字符數組的比較 230
7.3.3 如何輸齣其自身的程序 233
7.4 指針與函數 234
7.4.1 將指針用作函數參數 234
7.4.2 指嚮函數的指針 236
7.4.3 指針對於指令的訪問是受限製的 238
7.4.4 使用指嚮函數指針的語法來實現編程 238
7.4.5 返迴值為指針的函數 240
7.5 復閤多維指針的使用 244
7.5.1 指針數組的使用 244
7.5.2 指嚮指針的指針 247
7.5.3 main()函數的參數 249
7.5.4 main()函數參數應用實例 249
第8章 預處理 252
8.1 預處理器概述 253
8.1.1 預處理器的工作方式 253
8.1.2 使用Microsoft Visual C++ 6.0生成預編譯程序 254
8.1.3 預處理指示分類 256
8.1.4 預處理指示規則 256
8.2 宏定義 257
8.2.1 無參宏定義 257
8.2.2 帶參宏定義 258
8.2.3 帶參宏定義與函數 259
8.2.4 使用宏時注意事項 261
8.2.5 至關重要的圓括號 262
8.2.6 預定義宏 263
8.3 條件編譯 264
8.3.1 條件編譯的形式 264
8.3.2 條件編譯的作用 267
8.4 文件包含 268
8.4.1 頭文件 268
8.4.2 文件包含的形式 269
8.4.3 使用文件包含時注意事項 270
8.5 其他指示 271
8.5.1 #error指示 271
8.5.2 #line指示 271
8.5.3 #pragma指示 272
8.6 “#”和“##”運算符 272
8.6.1 “#”運算符 272
8.6.2 “##”運算符 273
8.7 預處理實例 273
8.7.1 簡單計算器程序 273
8.7.2 程序分析 276
8.7.3 程序中的預處理 277
第9章 結構體與共用體 279
9.1 結構體 280
9.1.1 什麼是結構體 280
9.1.2 結構體實例——《水滸傳》中的一百單八將 280
9.1.3 結構體類型與結構體變量 281
9.1.4 結構體變量的定義 282
9.1.5 定義結構體變量注意事項 283
9.1.6 結構體變量的初始化 283
9.1.7 結構體變量的引用 284
9.1.8 引用結構體變量注意事項 285
9.1.9 結構體數組 286
9.1.10 指嚮結構體的指針 289
9.1.11 結構體與函數 291
9.1.12 位域 298
9.2 共用體 301
9.2.1 什麼是共用體 301
9.2.2 共用體與結構體 302
9.2.3 共用體變量的初始化 303
9.2.4 使用共用體注意事項 304
9.2.5 結構體和共用體綜閤實例——“梁山好漢的比武大會” 305
9.3 枚舉 308
9.3.1 什麼是枚舉 308
9.3.2 枚舉變量的定義與取值 309
9.3.3 “錶裏不一”的類型 310
9.3.4 枚舉應用舉例——“嚮你問好的程序” 311
9.4 用戶自定義類型——typedef 312
9.4.1 什麼是typedef 312
9.4.2 創建typedef簡單方法 313
9.4.3 typedef和#define 313
9.4.4 typedef的兩個重要作用 314
第10章 文件 316
10.1 理解文件的基本概念 317
10.1.1 什麼是文件 317
10.1.2 什麼是流 318
10.1.3 處理文件的方法 319
10.1.4 緩存 320
10.1.5 文本文件和二進製文件 321
10.2 文件的打開與關閉 321
10.2.1 文件類型指針 321
10.2.2 文件的打開 323
10.2.3 文件操作類型及應用 323
11.2.4 文件的關閉 325
10.3 文件的基本操作 327
10.3.1 文件中的字符讀/寫 327
10.3.2 按字符進行讀/寫文件——文件復製的功能 329
10.3.3 文件中字符串讀/寫 330
10.3.4 其他文件讀/寫函數 334
10.3.5 文件位置定位 334
10.3.6 數據塊的讀/寫 336
10.4 處理二進製文件 338
10.5 文件緩衝區處理 341
10.5.1 文件緩衝區的清除 341
10.5.2 文件緩衝區的設置 343
10.6 文件操作的檢測 345
第11章 動態數據結構 347
11.1 動態內存管理 348
11.1.1 為什麼使用動態內存分配 348
11.1.2 如何實現動態內存管理 348
11.1.3 關於動態內存分配的說明 351
11.2 鏈錶概述 352
11.2.1 單嚮鏈錶與數組 353
11.2.2 單嚮鏈錶——老鷹捉小雞 353
11.2.3 鏈錶存儲方式優缺點 354
11.2.4 不同單嚮鏈錶間的閤並 354
11.3 鏈錶的操作及實現 355
11.3.1 鏈錶的建立 355
11.3.2 鏈錶的遍曆 358
11.3.3 鏈錶結點的刪除 359
11.3.4 鏈錶結點的增加 361
11.3.5 結點刪除函數中的free()函數 363
11.3.6 鏈錶的應用實例 363
11.4 棧 364
11.4.1 棧定義——散亂的盤子 364
11.4.2 棧的特點 365
11.4.3 棧工作原理 365
11.4.4 棧與鏈錶 366
11.4.5 棧的應用舉例——括號匹配問題 368
11.5 隊列 369
11.5.1 隊列的特點 369
11.5.2 隊列定義——排隊等待買票的人 370
11.5.3 隊列應用 370
11.5.4 隊列與棧的不同 370
11.5.5 隊列創建 370
11.5.6 基於鏈錶實現的隊列——鏈式隊列 371
11.5.7 隊列的實現 372
附錄Ⅰ C語言運算符及其優先級匯總錶 376
附錄Ⅱ 標準ASCII碼字符集 378
參考文獻
· · · · · · (
收起)