C語言程式設計與實踐(第2版)

C語言程式設計與實踐(第2版)

本書以程式設計為主線,在詳細闡述程式設計基本概念、原理和方法的基礎上,結合實踐教學和學科競賽的實際情況,通過經典實例講解和實訓,使學生掌握利用C語言進行結構化程式設計的技術和方法。注重培養良好的編程風格,掌握常見的算法思路,真正提高學生運用C語言編程以解決實際問題的綜合能力,為後續課程實踐環節的教學打下良好基礎。

基本介紹

本書以程式設計為主線,在詳細闡述程式設計基本概念、原理和方法的基礎上,結合實踐教學和學科競賽的實際情況,通過經典實例講解和實訓,使學生掌握利用C語言進行結構化程式設計的技術和方法。注重培養良好的編程風格,掌握常見的算法思路,真正提高學生運用C語言編程以解決實際問題的綜合能力,為後續課程實踐環節的教學打下良好基礎。

本書特色

實例豐富。在介紹理論知識的同時,書中還給出了大量的實例和實訓內容,以提高學生的動手實踐能力。
重點突出。針對C語言語法龐雜、有些語句可以相互替代、有些語法不常使用的情況,本書重點介紹了基本的、常用的C語言語法知識,使學生容易理解和掌握。
融會貫通。著重介紹程式設計語言的共性,培養學生自學其他程式設計語言的能力。

本書目錄

前言
教學建議
第1章 C語言與程式設計概述 1
1.1 初見C語言程式 1
1.2 計算機與程式設計 2
1.2.1 指令與程式 2
1.2.2 程式與程式設計 3
1.2.3 程式設計和程式設計語言 3
1.2.4 程式設計過程 4
1.3 C語言學習與自然語言學習的關係 5
1.4 C語言的發展歷史、現狀與特點 6
1.4.1 C語言的發展歷史和現狀 6
1.4.2 C語言的特點 7
習題 7
第2章 示例驅動的C語言語法元素 8
2.1 變數與表達式 8
2.2 分支語句 9
2.2.1 if語句 9
2.2.2 switch語句 11
2.3 循環語句 12
2.3.1 while循環語句 12
2.3.2 for循環語句 12
2.4 符號常量 13
2.5 輸入/輸出 14
2.6 數組 15
2.7 函式 15
2.8 算法 17
2.8.1 算法概念 17
2.8.2 流程圖與算法描述 18
習題 19
第3章 基本數據類型和表達式 20
3.1 基本語法單位 20
3.1.1 基本符號 20
3.1.2 關鍵字 20
3.1.3 標識符 20
3.2 數據類型 21
3.3 常量與變數 22
3.3.1 常量 22
3.3.2 變數 25
3.3.3 變數的初始化 27
3.4 表達式和運算符 28
3.4.1 算術運算符 28
3.4.2 賦值運算符 30
3.4.3 關係運算符 31
3.4.4 邏輯運算符 33
3.4.5 位運算符 35
3.4.6 逗號運算符 38
3.4.7 條件運算符 39
3.4.8 運算符的優先權和結合性 39
3.5 各類數值型數據間的混合運算 41
習題 41
第4章 輸入/輸出語句 43
4.1 putchar函式 43
4.2 printf函式 44
4.2.1 printf函式的形式 44
4.2.2 格式說明字元 45
4.3 getchar函式 51
4.4 scanf函式 51
4.4.1 一般形式 51
4.4.2 格式說明 52
4.4.3 執行scanf函式過程中應注意的問題 53
4.5 程式示例 55
習題 56
第5章 C語言程式結構 58
5.1 C語句 58
5.2 程式設計基礎 59
5.3 結構化程式設計的三種基本結構 60
5.3.1 順序結構 60
5.3.2 選擇結構 60
5.3.3 循環結構 61
5.4 if分支語句 62
5.4.1 第一種if語句形式 62
5.4.2 第二種if語句形式 62
5.4.3 第三種if語句形式 63
5.4.4 if語句的嵌套 65
5.4.5 程式示例 67
5.5 switch分支語句 68
5.6 while循環語句 71
5.7 do…while循環語句 73
5.8 for循環語句 75
5.9 break語句和continue語句 79
5.9.1 break語句 80
5.9.2 continue語句 80
5.10 多重循環的嵌套 81
5.11 程式示例 83
習題 85
第6章 數組 88
6.1 一維數組 88
6.1.1 一維數組的定義 88
6.1.2 一維數組元素的引用 89
6.1.3 一維數組元素的初始化 89
6.2 二維數組 96
6.2.1 雙下標變數 97
6.2.2 二維數組及其定義 97
6.2.3 二維數組的初始化 98
6.2.4 二維數組套用示例 99
6.3 綜合套用示例 100
6.4 字元數組 103
6.4.1 字元串和字元串結束標誌 105
6.4.2 字元數組的輸入/輸出 105
6.4.3 字元串函式 106
6.4.4 二維的字元數組 110
6.4.5 字元數組套用示例 111
習題 116
第7章 函式 118
7.1 函式的定義 119
7.2 函式的一般調用 121
7.2.1 函式調用的形式 121
7.2.2 形式參數和實際參數 121
7.2.3 函式的返回值 124
7.2.4 函式調用的方式 125
7.2.5 主調函式和被調函式的相對位置關係 126
7.2.6 函式調用時值的單向傳遞性 128
7.2.7 函式調用示例 128
7.3 函式的嵌套調用 130
7.4 遞歸調用 133
7.4.1 函式的遞歸調用 133
7.4.2 遞歸調用套用示例 134
7.5 用數組作為函式參數 137
7.5.1 用數組元素作為函式實參 137
7.5.2 用數組名作為函式參數 138
7.5.3 用多維數組作為函式參數 139
7.6 變數的作用域——局部變數和全局變數 140
7.6.1 局部變數 140
7.6.2 全局變數 142
7.7 變數的存儲類別和生存期 144
7.7.1 變數的存儲類別 144
7.7.2 動態變數 144
7.7.3 靜態變數 148
7.7.4 外部變數 149
7.8 內部函式和外部函式 153
7.8.1 內部函式 153
7.8.2 外部函式 153
習題 154
第8章 編譯預處理 159
8.1 宏定義 159
8.1.1 不帶參數的宏定義 159
8.1.2 帶參數的宏定義 161
8.2 檔案包含 165
8.3 條件編譯 167
8.3.1 條件編譯語句1 167
8.3.2 條件編譯語句2 168
8.3.3 條件編譯語句3 169
習題 170
第9章 指針 175
9.1 地址和指針的概念 175
9.2 指針變數和地址運算符 175
9.2.1 指針變數的定義 175
9.2.2 指針變數的使用 176
9.3 指針和數組 177
9.3.1 通過指針存取數組元素 177
9.3.2 字元串和指針 179
9.4 指針和函式 180
9.4.1 用指針作為函式的參數 180
9.4.2 用指針作為函式的返回值 182
9.4.3 指向函式的指針 184
9.5 多級指針 187
9.5.1 多級指針的概念和使用 187
9.5.2 多級指針和多級數組 188
9.5.3 命令行參數 190
9.6 指針和動態存儲管理 191
9.6.1 概述 191
9.6.2 malloc函式和free函式 192
9.6.3 動態存儲管理的套用 192
9.7 指針和指針運算小結 195
習題 196
第10章 結構與聯合 199
10.1 結構體類型變數的定義和引用 199
10.1.1 結構體類型變數的定義 201
10.1.2 結構體類型變數的引用 201
10.1.3 結構體類型變數的初始化 201
10.2 結構體數組的定義和引用 203
10.3 結構體指針的定義和引用 204
10.3.1 指向結構體類型變數的指針的使用 204
10.3.2 指向結構體類型數組的指針的使用 205
10.4 鍊表的定義和操作 208
10.4.1 鍊表 208
10.4.2 鍊表的建立 209
10.4.3 輸出鍊表元素 211
10.4.4 刪除鍊表元素 211
10.4.5 插入鍊表元素 212
10.4.6 查詢鍊表元素 213
10.5 聯合 213
10.5.1 聯合的定義 213
10.5.2 聯合成員的引用 215
10.5.3 套用示例 216
10.5.4 數組、結構和聯合類型的比較 217
10.6 枚舉類型 217
10.7 用typedef定義類型名 219
習題 220
第11章 檔案操作 223
11.1 檔案的基本概念 223
11.1.1 概述 223
11.1.2 檔案分類 223
11.1.3 緩衝檔案系統和非緩衝檔案系統 223
11.1.4 流式檔案 224
11.2 標準檔案 224
11.3 檔案類型指針 225
11.4 檔案的打開與關閉 225
11.4.1 檔案的打開 225
11.4.2 檔案的關閉 226
11.5 檔案的順序讀寫 227
11.6 檔案順序讀寫的常用函式 227
11.7 檔案順序讀寫的套用示例 234
11.8 檔案的隨機讀寫 235
11.8.1 檔案的定位 235
11.8.2 檔案操作的出錯檢測 238
11.9 非緩衝檔案系統 238
習題 241
第12章 綜合實訓 243
12.1 綜合實訓1:俄羅斯方塊遊戲 243
12.1.1 問題描述 243
12.1.2 問題分析 243
12.1.3 數據結構分析 244
12.1.4 程式執行流程和設計分析 246
12.1.5 程式運行和測試 251
12.2 綜合實訓2:五子棋遊戲 252
12.2.1 問題描述 252
12.2.2 問題分析 252
12.2.3 數據結構分析 252
12.2.4 程式執行流程和設計分析 254
12.2.5 程式運行和測試 258
12.3 綜合實訓3:員工管理系統 258
12.3.1 問題描述 258
12.3.2 問題分析 259
12.3.3 數據結構分析 259
12.3.4 程式執行流程和設計分析 260
12.3.5 程式運行和測試 262
12.4 綜合實訓設計中的分析與討論 263
第13章 初涉ACM/ICPC 266
13.1 ACM/ICPC概述 266
13.2 迷宮問題與深度優先搜尋 267
13.2.1 問題描述 267
13.2.2 問題分析與求解 267
13.2.3 問題小結 269
13.3 斐波那契數列 269
13.3.1 問題描述 269
13.3.2 問題分析與求解 269
13.3.3 問題小結 270
13.4 8枚銀幣 271
13.4.1 問題描述 271
13.4.2 問題分析與求解 271
13.4.3 問題小結 273
13.5 篩選求質數 273
13.5.1 問題描述 273
13.5.2 問題分析與求解 273
13.5.3 問題小結 274
13.6 超長整數運算(大數運算) 275
13.6.1 問題描述 275
13.6.2 問題分析與求解 275
13.6.3 問題小結 276
13.7 經典01背包問題與動態規划算法 276
13.7.1 問題描述 276
13.7.2 問題分析與求解 276
13.7.3 問題小結 278
13.8 二分圖的最大匹配、完美匹配和匈牙利算法 278
13.8.1 問題描述 278
13.8.2 問題分析與求解 278
13.8.3 問題小結 281
13.9 中序式轉後序式(前序式) 281
13.9.1 問題描述 281
13.9.2 問題分析與求解 281
13.9.3 問題小結 283
13.10 一些提供練習服務的網站 283
參考文獻 285

相關詞條

熱門詞條

聯絡我們