本書以程序設計的分析問題和解決問題為重點,講授在C/C 語言環(huán)境下程序設計的解題思路、算法設計和程序?qū)崿F(xiàn),可幫助讀者提高編程能力和上機解題能力。全書語言簡潔,示例豐富,深入淺出地引導讀者理性思維和理性實踐,章節(jié)結(jié)構(gòu)安排合理,教學方法引人入勝,便于讀者自學。
本書可作為高等院校計算機相關專業(yè)程序設計課程的教材,亦可供從事計算機、自動化及其他相關領域的科研技術人員參考。
1. 強調(diào)轉(zhuǎn)變觀念,以學生為中心,安排教學首先考慮培養(yǎng)目標、學生的認知規(guī)律和學習特點。2. 強化實踐,讓學生在理論指導下動手動腦,更多地上機編程,鼓勵和引導探索式的學習;以任務驅(qū)動方式,通過示例講授程序設計的基本概念和方法。3. 重點放在思路、算法、編程構(gòu)思和程序?qū)崿F(xiàn)上,訓練學生分析問題和解決問題的能力;注重培養(yǎng)學生良好的編程習慣。
目錄
第1章 緒論 1
第2章 編程準備 4
2.1 程序編寫 4
2.1.1
用Visual C 6.0編寫程序 4
2.1.2
使用Dev-C 開發(fā)程序 8
2.2 程序代碼及說明 14
2.3 輸出流對象cout 15
2.4 程序注釋 16
2.5 算術運算符 16
2.6 數(shù)學函數(shù) 17
2.7 小結(jié) 17
習題 17
第3章 代數(shù)思維與計算機解題 19
3.1 程序的基本結(jié)構(gòu) 19
3.2 變量與數(shù)據(jù)類型 21
3.2.1
變量的基本概念 21
3.2.2
數(shù)據(jù)類型與變量的地址空間 22
3.3 定義變量和賦初值 22
3.4 變量賦值 23
3.4.1
賦值符號與賦值表達式 23
3.4.2
變量賦值的5要素 24
3.5 指針變量 25
3.5.1
指針定義與初始化 25
3.5.2
指針賦值 26
3.5.3
在賦值語句中使用間接訪問運算符 26
3.6 小結(jié) 27
習題 28
第4章 邏輯思維與計算機解題 29
4.1 關系運算和關系表達式 30
4.1.1
關系運算符 30
4.1.2
關系表達式的一般格式 30
4.1.3
將是否寫成關系表達式 30
4.2 枚舉法的思路 31
4.3 循環(huán)結(jié)構(gòu) 33
4.3.1
使用循環(huán)結(jié)構(gòu)的部分程序 33
4.3.2
for語句的格式和執(zhí)行過程 33
4.3.3
使用for循環(huán)解題實例 34
4.3.4
for循環(huán)的程序框圖 36
4.4 分支結(jié)構(gòu) 36
4.4.1
if語句的格式 37
4.4.2
分支結(jié)構(gòu)的實例 38
4.5 任務4.1的程序框圖 39
4.6 任務4.1的參考程序 40
4.7 邏輯問題及其解法 41
4.7.1
邏輯運算符與邏輯表達式 42
4.7.2
邏輯問題的解題思路 43
4.7.3
任務4.2的參考程序 47
4.8 小結(jié) 48
課后閱讀材料 48
習題 53
第5章 函數(shù)思維與模塊化設計 55
5.1 函數(shù) 55
5.1.1
函數(shù)的說明 56
5.1.2
函數(shù)的定義 56
5.1.3
函數(shù)的返回值 56
5.1.4
函數(shù)的調(diào)用 57
5.1.5
形式參數(shù)和實在參數(shù) 57
5.1.6
調(diào)用和返回 58
5.1.7
帶自定義函數(shù)的程序設計 58
5.2 編程實例1 60
5.3 編程實例2 61
5.4 幾種參數(shù)傳遞方式的比較 63
5.5 小結(jié) 66
習題 66
第6章 數(shù)據(jù)的組織與處理(1) 數(shù)組 69
6.1 數(shù)組 69
6.1.1
一維數(shù)組的定義 71
6.1.2
數(shù)組初始化 71
6.1.3
字符數(shù)組的定義、初始化和賦值 72
6.1.4
數(shù)組與指針 75
6.2 篩法 77
6.3 線性查找與折半查找 78
6.4 冒泡排序法 80
6.5 遞推 82
6.5.1
遞推數(shù)列的定義 82
6.5.2
遞推算法的程序?qū)崿F(xiàn) 83
6.6 字符數(shù)組應用 86
6.7 函數(shù)跳轉(zhuǎn)表 91
6.8 二維數(shù)組 93
6.8.1
二維數(shù)組的定義 94
6.8.2
二維數(shù)組的初始化 95
6.8.3
二維數(shù)組中的元素存放順序 95
6.9 小結(jié) 97
課后閱讀材料 98
習題 102
第7章 數(shù)據(jù)的組織與處理(2) 結(jié)構(gòu) 105
7.1 結(jié)構(gòu)與結(jié)構(gòu)數(shù)組 105
7.1.1
結(jié)構(gòu)體類型的定義 105
7.1.2
結(jié)構(gòu)體變量的定義和引用 106
7.1.3
結(jié)構(gòu)體變量的初始化 107
7.1.4
結(jié)構(gòu)數(shù)組 108
7.2 指針和結(jié)構(gòu) 110
7.3 鏈表 111
7.3.1
建立鏈表的過程 112
7.3.2
鏈表結(jié)點的插入與刪除 116
7.3.3
循環(huán)鏈表 124
7.4 小結(jié) 128
習題 128
第8章 數(shù)據(jù)的組織與處理(3) 文件 130
8.1 將數(shù)據(jù)保存到文件 130
8.2 從文件中讀取數(shù)據(jù) 132
8.3 利用輸入輸出文件解交互類型的題 135
8.4 小結(jié) 145
習題 145
第9章 遞歸思想與相應算法 146
9.1 遞歸及其實現(xiàn) 146
9.2 遞歸算法舉例 153
9.2.1
計算組合數(shù) 153
9.2.2
快速排序 154
9.2.3
數(shù)字旋轉(zhuǎn)方陣 158
9.2.4
下樓問題 162
9.2.5
跳馬問題 164
9.2.6
分書問題 166
9.2.7
八皇后問題 169
9.2.8
青蛙過河 172
9.3 小結(jié) 177
課外閱讀材料 177
習題 181
第10章 多步?jīng)Q策問題 182
10.1
多步?jīng)Q策問題的解題思路 182
10.1.1
人鬼渡河的任務與規(guī)則要點 182
10.1.2
人鬼渡河的安全性考慮 183
10.1.3
安全狀態(tài)的描述 183
10.2
安全條件形式化 184
10.3
從狀態(tài)圖上研究怎樣一步一步過河 186
10.4
多步?jīng)Q策問題的編程思路 186
10.5
小結(jié) 189
習題 189
第11章 寬度優(yōu)先搜索 191
11.1
騎士聚會問題 191
11.2
解題思路 196
11.3
小結(jié) 202
習題 203
第12章 深度優(yōu)先搜索 204
12.1
問題描述 204
12.2
解題思路 205
12.3
深度優(yōu)先搜索與剪枝 211
12.4
小結(jié) 216
習題 216
第13章 貪心法 217
13.1
貪心法解題的一般步驟 217
13.1.1
裝船問題 217
13.1.2
事件序列問題 220
13.1.3
貪心法解題的一般步驟 222
13.2
貪心法相關理論 223
13.2.1
多階段決策問題、無后向性與最優(yōu)化原理 223
13.2.2
有向圖最短路徑的Dijkstra算法 223
13.2.3
貪心法解題的注意事項 227
13.3
小結(jié) 228
習題 228
第14章 動態(tài)規(guī)劃 230
14.1
最短路徑問題 230
14.1.1
問題描述 230
14.1.2
分析與題解 231
14.2
動態(tài)規(guī)劃的基本概念 234
14.3
動態(tài)規(guī)劃思想 235
14.4
舉例說明動態(tài)規(guī)劃思路 237
14.5
小結(jié) 244
習題 244
第15章 蒙特卡羅法 246
15.1
偽隨機數(shù)的產(chǎn)生 246
15.1.1
產(chǎn)生隨機整數(shù) 246
15.1.2
產(chǎn)生隨機小數(shù) 247
15.2
偽隨機數(shù)的應用 248
15.2.1
求的近似值 248
15.2.2
計算圖形面積 249
15.3
小結(jié) 250
習題 250
附錄A 程序調(diào)試 251
A.1 計分程序的調(diào)試 251
A.1.1
編譯時的調(diào)試 252
A.1.2
運行時的調(diào)試 254
A.1.3
其他調(diào)試相關知識 259
A.2 跳馬程序的調(diào)試 260
附錄B 庫函數(shù) 267
B.1 數(shù)學函數(shù) 267
B.2 字符判斷函數(shù) 268
B.3 字符串相關函數(shù) 271
附錄C ASCII碼表 277
附錄D 輸入輸出的格式控制 278
D.1 流的概念與輸入輸出格式 278
D.2 改變整數(shù)的進制 278
D.3 設置浮點數(shù)的精度 279
D.4 設置輸入輸出寬度 280
D.5 設置對齊方式和填充字符 281
D.6 其他設置 282
參考文獻 284