第1章 C語言入門 1
1.1 程序 2
1.1.1 程序的一般概念 2
1.1.2 計算機程序與計算機程序設計語言 3
1.2 C語言程序中的數據 6
1.2.1 C語言程序的基本數據類型 6
1.2.2 變量 7
1.2.3 常量 9
1.3 C語言程序中的基本操作 11
1.3.1 運算符與表達式 11
1.3.2 算術運算符與算術表達式 12
1.3.3 關系運算符與關系表達式 13
1.3.4 邏輯運算符與邏輯表達式 14
1.3.5 條件運算符與條件表達式 15
1.3.6 復合賦值運算符 15
1.4 C語言程序過程組織 16
1.4.1 C程序語句 17
1.4.2 函數 20
1.4.3 庫函數 24
1.4.4 編譯預處理 30
1.5 程序開發(fā)的一般過程 32
習題 37
第2章 基本算法 43
2.1 判斷與選擇 44
2.1.1 三數中取大 44
2.1.2 分情形處理 49
語法小結(1)—— 程序的分支結構 54
2.2 迭代與遞推 59
2.2.1 大獎賽評分程序 59
2.2.2 Fibonacci數列 66
2.2.3 吉普車穿越沙漠問題 68
語法小結(2)—— 程序的循環(huán)結構 72
2.3 窮舉 74
2.3.1 搬磚問題 74
2.3.2 求素數 77
2.3.3 推斷名次 80
語法小結(3)—— 流程轉向控制 85
2.4 模擬 86
2.4.1 隨機抽樣 86
2.4.2 蒙特卡羅法—— 求π的近似值 89
2.4.3 事件步長法—— 中子擴散問題 90
2.4.4 時間步長法—— 導彈追擊飛機 93
2.5 遞歸 97
2.5.1 計算n!的遞歸函數 98
2.5.2 漢諾塔問題 100
語法小結(4)—— 變量的存儲類型 104
第3章 組織數據 111
3.1 數組 112
3.1.1 洗撲克牌 112
3.1.2 氣泡排序 117
3.1.3 成績處理 120
3.1.4 日期轉換 122
3.1.5 字符串操作 123
語法小結(5)—— 數組 129
3.2 指針 135
3.2.1 用指針將數組元素倒放 135
3.2.2 基于指針的字符串操作 139
3.2.3 查找二維數組中的最大元素 140
3.2.4 求兩個向量和的函數 143
語法小結(6)—— 指針類型 145
3.3 用戶定制數據類型 149
3.3.1 枚舉應用—— 明天是星期幾 149
3.3.2 結構體應用—— 學籍管理 152
3.3.3 共用體應用—— 學校人員管理 162
語法小結(7)—— 用戶定制數據類型 164
3.4 文件 168
3.4.1 寫若干行字符串到文本文件 168
3.4.2 文件復制 170
語法小結(8)—— 文件 172
3.5 堆棧和隊列 181
3.5.1 后序表達式的求值 181
3.5.2 魔術師翻牌 188
第4章 算法設計策略 197
4.1 分治策略 198
4.1.1 二分查找 198
4.1.2 快速排序 200
4.1.3 自行車帶人問題 205
4.2 回溯策略 209
4.2.1 迷宮問題 209
4.3 貪心策略 221
4.3.1 旅行費用問題 221
4.3.2 刪數問題 224
4.4 分枝定界策略 228
4.4.1 最小耗費問題 229
4.5 動態(tài)規(guī)劃 235
4.5.1 背包問題 235
附錄A C語言運算符的優(yōu)先級和結合方向 243
附錄B C語言關鍵字及其用途 247
參考文獻 249