本書介紹如何使用C編程語言求解工程問題。書中從通用的5步方法論入手,以犯罪現場調查、地形導航、颶風等級測量等眾多熱點技術領域的工程問題為應用對象,生動、有趣地講解了C語言中的基本操作符、標準輸入/輸出、基本函數、控制結構、數據文件、模塊化編程、數組以及指針等重要概念。本書內容翔實,具有很強的操作性和實踐性,可作為高等院校工程和科學計算相關專業的教材,也可作為初學者在C語言編程知識與實際工程應用之間搭建橋梁的參考書。
Engineering Problem Solving with C, Fourth Edition從簡單函數估計到非線性方程組求解,工程師需要利用計算機解決各種各樣的問題。為完成這些工作,C語言已經成為許多工程師和科學家的選擇,不僅是因為它強大的指令和數據結構,而且還因為它很容易被用于實現系統級操作。既然C語言是許多新入行的工程師們在工作中不得不面對的編程語言,那么我們就在此對C語言做一個詳細介紹。本書將包括以下內容:
展示一種用于求解工程問題的通用方法。
對C語言基礎進行詳細介紹,因為C語言已經成為眾多工程師和科學家的重要工具。
通過提供多種多樣的有趣的工程實例和應用,說明使用C語言求解問題的過程。
為了清晰地表述以上內容,本書第1章介紹了解決工程問題的5步過程,這在本書后面的內容里會一直用到。第2~7章對使用C語言來求解工程問題進行了基本介紹。第8章簡單介紹了使用C++進行面向對象的程序設計,因為面向對象程序設計在工程和科學的諸多領域中日漸普及,并且很可能會在以后的工作中遇到。我們用大量工程和科學學科中的例子來貫穿這些章節。對于這些例子的求解方法,則主要是通過使用前述的5步過程和ANSI C(關于ANSI C++會在第8章介紹)來實現。其中ANSI C是由美國國家標準協會設計的標準。
第4版中的變化新版的主題是犯罪現場調查(CSI)。學習犯罪現場調查背后的技術不僅非常有趣,而且還為本書提供了一些很好的編程問題。在本書中,我們將用C語言程序方法解決這些問題。
修改了1.2節,加入了對諸如云計算和內核等當前熱點話題的討論。
增加了彩色插圖來定義犯罪現場調查的重要領域——生物特征識別。生物特征識別是指通過物理特征或行為特征來進行身份識別。插圖中討論了指紋、人臉識別、虹膜識別、DNA以及語音識別的技術。
每章都以犯罪現場調查技術的一張配圖和相關討論開始。除第1章以外,后面的每一章里都增加了相關的節以講解技術的應用。除了講解C語言的主要功能以外,還將介紹法醫人類學、人臉識別與監控視頻、虹膜識別、語音分析和語音識別、DNA分析、指紋識別以及手勢識別等相關技術。在這些應用部分,我們會設計相應的C程序來解決犯罪現場調查中遇到的技術問題。
基于每個工程應用提出的問題,后面都增加了“修改”練習題以對原問題進行擴展。
根據最新的C++標準,更新了第8章中關于C++的材料。
預備知識本書假設讀者先前沒有任何計算機編程經驗。對于數學的預備知識是高等代數和三角函數。當然,如果讀者使用過其他的計算機語言和軟件工具,則可以跳過開頭的預備材料以便更快地閱讀內容。
課程結構本書可以作為理工類相關專業本科生一個學期的課程教材。其中涉及的基本內容包括數學計算、字符數據、控制結構、函數、數組、指針和結構體等。學習過其他計算機編程語言的學生應該可以在一學期內完成這些內容。如果是在短學時課程中對C語言進行初步學習,可以僅學習書中的必修章節(可選章節在目錄中已用“*”標出)。下面介紹使用本書的三種方式及對應的推薦章節:
C語言基礎。許多基礎入門類課程除了向學生介紹編程語言外,還會介紹一些計算機工具。對于這些課程,建議涵蓋必修部分的第1~5章。這些內容向學生介紹了C語言的基本功能,通過一定程度的學習之后,學生能夠使用數學計算、字符數據、控制結構、函數和數組編寫大規模的程序。
使用C語言解決實際問題。如果要通過一學期的課程教會學生掌握C語言,那么建議講授第1~7章的全部必修章節。這些章節囊括了C語言的所有基本概念,包括數學計算、字符數據、控制結構、函數、數組、指針和結構體。
使用C語言和數值分析方法求解工程問題。書中許多章節都包含了常見的數值分析方法,比如線性插值、線性模型、求多項式的根、解聯立方程組等。這些都為需要使用數值分析來完成課程作業的學生提供了強有力的工具。為了達到這樣的課程目的,需要學習第1~7章的所有內容。
許多學生在讀到有關C++中面向對象特性的附加內容時可能會很感興趣,這里還是建議首先將第1~7章的所有必修內容學習完畢,最后再來了解第8章的內容。
解決問題的方法論對于工程和科學問題的求解是本書不可或缺的重要部分。第1章介紹了利用計算機解決工程問題的5步處理過程。這5步處理過程是本書作者在她學術生涯早期提出的,并且由她班里或使用本書的數以千計的學生成功使用。不僅如此,這個成功的問題求解過程同時也被很多其他作者采納。這5步分別為:
1)清楚地描述問題。
2)描述輸入/輸出信息。
3)手動計算一個簡單例子。
4)設計算法并將它轉換為計算機程序。
5)使用多種數據測試解決方案。
為了不斷強化求解問題的能力,每次解決工程問題的過程中,都要清晰地標識出這5步中的每一步。除了經典的5步法之外,書中還使用了分解提綱、偽代碼和流程圖來完成自頂向下的程序設計并且將算法逐步求精。
工程和科學應用本書的重點是將現實生活中的工程與科學的實例和問題相結合。其中涉及的工程應用包羅萬象、種類繁多,下面是書中給出的例子:
查看全部↓
Engineering Problem Solving with C, Fourth Edition
出版者的話
譯者序
前言
工程應用項目
第1章 工程問題求解 1
犯罪現場調查 1
1.1 21世紀的工程學 1
1.1.1 現代工程學取得的成就 1
1.1.2 不斷變化的工程環境 5
1.2 計算機系統:硬件與軟件 6
1.2.1 計算機硬件 7
1.2.2 計算機軟件 7
1.3 工程問題求解方法論 11
本章小結 13
習題 14
第2章 簡單的C程序 18
犯罪現場調查:法醫人類學 18
2.1 程序結構 18
2.2 常量和變量 21
2.2.1 科學計數法 23
2.2.2 數值數據類型 23
2.2.3 字符型數據 24
2.2.4 符號常量 26
2.3 賦值語句 26
2.3.1 算術運算符 28
2.3.2 運算符優先級 29
2.3.3 上溢和下溢 31
2.3.4 自增運算符和自減運算符 32
2.3.5 縮寫賦值運算符 32
2.4 標準輸入和輸出 33
2.4.1 輸出函數printf 34
2.4.2 輸入函數scanf 37
2.5 解決應用問題:根據骨骼長度估算身高 38
2.6 數值方法:線性插值 41
2.7 解決應用問題:海水的冰點 44
2.8 數學函數 47
2.8.1 基本數學函數 47
2.8.2 三角函數 48
*2.8.3 雙曲函數 49
2.9 字符函數 50
2.9.1 字符輸入/輸出 50
2.9.2 字符比較 51
2.10 解決應用問題:速度計算 52
2.11 系統邊界 55
本章小結 56
習題 58
第3章 控制結構和數據文件 63
犯罪現場調查:人臉識別與監控視頻 63
3.1 算法開發 63
3.1.1 自頂向下設計 64
3.1.2 結構化編程 65
3.1.3 多種解決方案評估 67
3.1.4 條件錯誤 67
3.1.5 測試數據的生成 67
3.2 條件表達式 68
3.2.1 關系運算符 68
3.2.2 邏輯運算符 69
3.2.3 優先級和結合性 70
3.3 選擇語句 71
3.3.1 簡單if語句 71
3.3.2 if/else語句 72
3.3.3 switch語句 74
3.4 解決應用問題:人臉識別 76
3.5 循環結構 79
3.5.1 while循環 79
3.5.2 do/while循環 80
3.5.3 for循環 81
3.5.4 break語句和continue語句 84
3.6 解決應用問題:波互作用 85
3.7 數據文件 91
3.7.1 輸入/輸出語句 92
3.7.2 讀取數據文件 94
3.7.3 生成數據文件 100
*3.8 數值方法:線性建模 102
*3.9 解決應用問題:臭氧測量 105
本章小結 108
習題 111
第4章 用函數實現模塊化程序設計 117
犯罪現場調查:虹膜識別 117
4.1 模塊化 117
4.2 自定義函數 119
4.2.1 函數示例 120
4.2.2 函數定義 122
4.2.3 函數原型 124
4.2.4 參數列表 125
4.2.5 存儲類型和作用域 127
4.3 解決應用問題:計算虹膜邊界 128
4.4 解決應用問題:冰山追蹤 133
4.5 隨機數 137
4.5.1 整數序列 138
4.5.2 浮點數序列 141
4.6 解決應用問題:儀器可靠性 142
*4.7 數值方法:求多項式的根 147
4.7.1 多項式的根 147
4.7.2 增量搜索技術 149
*4.8 解決應用問題:系統穩定性 150
*4.9 宏 155
*4.10 遞歸 158
4.10.1 階乘運算 159
4.10.2 斐波那契數列 160
本章小結 162
習題 163
第5章 數組和矩陣 169
犯罪現場調查:語音分析和語音識別 169
5.1 一維數組 170
5.1.1 定義和初始化 170
5.1.2 計算和輸出 172
5.1.3 函數參數 174
5.2 解決應用問題:颶風等級 176
5.3 解決應用問題:分子量 180
5.4 統計測量 184
5.4.1 簡單統計分析 184
5.4.2 方差和標準差 186
5.4.3 自定義頭文件 188
5.5 解決應用問題:語音信號分析 188
5.6 排序算法 193
5.7 搜索算法 195
5.7.1 無序數列 196
5.7.2 有序數列 196
5.8 二維數組 199
5.8.1 定義和初始化 199
5.8.2 計算和輸出 201
5.8.3 函數參數 203
5.9 解決應用問題:地形導航 205
*5.10 矩陣和向量 208
5.10.1 點積 208
5.10.2 行列式 209
5.10.3 轉置 210
5.10.4 矩陣加減法 210
5.10.5 矩陣乘法 211
*5.11 數值方法:聯立方程組求解 212
5.11.1 圖像闡釋 213
5.11.2 高斯消元法 215
*5.12 解決應用問題:電路分析 217
*5.13 多維數組 221
本章小結 222
習題 224
第6章 指針編程 230
犯罪現場調查:DNA分析 230
6.1 地址和指針 230
6.1.1 地址運算符 231
6.1.2 指針賦值 232
6.1.3 地址運算 235
6.2 指向數組元素的指針 237
6.2.1 一維數組 238
6.2.2 二維數組 239
6.3 解決應用問題:厄爾尼諾-南方濤動現象 241
6.4 函數調用中的指針 243
6.5 解決應用問題:地震監測 246
6.6 字符串 250
6.6.1 字符串定義與輸入/輸出 251
6.6.2 字符串函數 251
6.7 解決應用問題:DNA測序 254
*6.8 動態內存分配 256
*6.9 快速排序算法 259
本章小結 262
習題 263
第7章 利用結構體編程 267
犯罪現場調查:指紋識別 267
7.1 結構體 267
7.1.1 定義和初始化 268
7.1.2 輸入和輸出 269
7.1.3 結構體的運算 270
7.2 使用結構體的函數 271
7.2.1 結構體作為函數參數
查看全部↓