《C編程技巧:117個問題解決方案示例 》

      網(wǎng)友投稿 910 2025-03-31

      華章程序員書庫

      C編程技巧:117個問題解決方案示例

      C Recipes: A Problem-Solution Approach

      希里什·查萬(Shirish Chavan)

      盧濤 譯

      Preface? 前  言

      本書包含了適合從初級到高級的各種讀者的大量C語言技巧。本書按照“問題-解決方案”的體例編寫,以便你可以快速找到所需問題的解決方案。本書每個解決方案都附帶適當(dāng)?shù)拇a和對該代碼的簡要討論,力求在C的理論和實踐之間取得完美的平衡。

      C語言于1972年首次亮相。對于高級計算機語言而言,它現(xiàn)在處于退休年齡。但是,盡管C語言已有40多年的歷史,它仍然很強大。C是十種最受歡迎的計算機語言之一,至少在接下來的20年內(nèi)仍將如此。因此,你在C中獲得的任何專業(yè)知識都不會很快過時,并且會使你在未來幾年內(nèi)繼續(xù)保持高效。本書將幫助你解決C語言中的問題,并使你成為C語言的專家。

      本書適用對象

      本書主要面向在職專業(yè)人士。但是,它也適用于學(xué)生、教師、研究人員、代碼測試人員和程序員。期望你具備C語言和編程的實際知識。

      本書組織結(jié)構(gòu)

      本書由11章組成。第1章總覽C語言。第2章涉及控制語句。第3~5章涉及函數(shù)、數(shù)組、指針和結(jié)構(gòu)。在這些章節(jié)中,你將找到程序員在實際工作中面臨的問題。

      第6章處理數(shù)據(jù)文件,包含大量涉及保存文件到磁盤和從所保存的文件中獲取數(shù)據(jù)的技巧。第7~9章涉及數(shù)據(jù)結(jié)構(gòu)的廣泛主題,這些章節(jié)涵蓋了具有實用性的數(shù)據(jù)結(jié)構(gòu)。第10章介紹了各種密碼系統(tǒng)。C和密碼學(xué)的組合是一個非常強大且有趣的組合。在本章中,你將體驗到這種組合的強大功能。

      第11章是本書的最后一章,討論數(shù)值方法。計算機是作為數(shù)值計算機器被發(fā)明的,但隨著時間的推移,它們已經(jīng)成為了數(shù)據(jù)處理機器。然而,即使在今天,數(shù)值計算仍是計算機執(zhí)行的最重要的工作之一。本章為你提供了許多用于數(shù)值計算實用程序的技巧。

      我真誠地希望本書對廣大讀者有用。

      致  謝? Acknowledgements

      感謝Apress促成本書問世的每位工作人員。特別感謝編輯Celestin Suresh John先生和Prachi Mehta女士的耐心和指導(dǎo)。

      很多技術(shù)朋友在本書的技術(shù)問題上幫助了我。其中包括:位于Nagpur的Cryptex Technologies公司(www.cryptextechnologies.com)的首席執(zhí)行官Ajay Dhande先生;位于Satara的Harsh計算機研究所的Shivajirao Salunkhe教授和Manisha Salunkhe教授;位于Satara 的Arvind Gavali工程學(xué)院(www.agce.sets.edu.in)的校長Vilas Pharande博士;位于Satara Wai的Kalasagar Academy公司(www.kalasagaracademy.in)的Sachin Pratapure教授和Vishal Khade教授;位于Satara 的Yashoda工程學(xué)院的Anant Bodas教授和Vikas Dhane教授;位于Amravati的Shrikant計算機培訓(xùn)中心(https://www.sctcamravati.com)的Sanjay Adhau教授;位于Amravati的PRMIT&R(mitra.ac.in)的校長Mir Sadique Ali博士;位于Pune的Aphron Infotech公司(www.aphroninfotech.in)的首席執(zhí)行官Nikhil Kumbhar先生。我還要感謝運營Coding Alpha網(wǎng)站(www.codingalpha.com)的Tushar Soni先生和Ajay Sawant先生,以及運營The Crazy Programmer網(wǎng)站(www.thecrazyprogrammer.com)的Neeraj Mishra先生。他們都為本書的創(chuàng)作提供了寶貴的幫助。

      Vijay Bhatkar博士是著名的計算機科學(xué)家,也是印度超級計算機PARAM 10000之父,他一直是我的靈感源泉。很感謝他鼓舞我。

      最后但同樣重要的是,感謝Jarron先生和John Borges先生及其在Pune的技術(shù)圖書服務(wù)團隊。

      謝謝你們一起讓這本書成為可能。最后說明一下:Pune、Nagpur和Satara都是印度馬哈拉施特拉邦的城市。

      Contents? 目  錄

      前言

      致謝

      第1章 歡迎學(xué)習(xí)C語言1

      1.1 程序、軟件和操作系統(tǒng)2

      1.2 機器語言和匯編語言2

      1.3 過程式語言3

      1.4 面向?qū)ο蟮恼Z言3

      1.5 計算機術(shù)語4

      1.6 編譯和解釋語言4

      1.7 第一個C程序5

      1.8 C的突出特點6

      1.9 隱式類型轉(zhuǎn)換7

      1.10 顯式類型轉(zhuǎn)換9

      第2章 控制語句10

      2.1 求1到N的整數(shù)的總和10

      2.2 計算數(shù)字的階乘12

      2.3 生成斐波那契數(shù)列14

      2.4 確定給定數(shù)字是否為質(zhì)數(shù)17

      2.5 計算正弦函數(shù)20

      2.6 計算余弦函數(shù)21

      2.7 計算二次方程的根23

      2.8 計算整數(shù)的反轉(zhuǎn)數(shù)25

      2.9 使用嵌套循環(huán)打印幾何圖案26

      2.10 生成終值利息系數(shù)表28

      第3章 函數(shù)和數(shù)組31

      3.1 確定圓周率π的值32

      3.2 從數(shù)字列表中選擇質(zhì)數(shù)34

      3.3 使用遞歸進行數(shù)字求和37

      3.4 使用遞歸計算斐波那契數(shù)列39

      3.5 使用遞歸計算數(shù)字的階乘40

      3.6 搜索整數(shù)數(shù)組中的最大元素42

      3.7 解決經(jīng)典的漢諾塔問題43

      3.8 解決八皇后問題46

      3.9 計算給定對象集的排列和組合48

      3.10 對兩個矩陣求和50

      3.11 計算矩陣的轉(zhuǎn)置53

      3.12 計算矩陣的乘積55

      第4章 指針和數(shù)組59

      4.1 從包含int類型數(shù)據(jù)的數(shù)組中獲取數(shù)據(jù)59

      4.2 使用數(shù)組名稱從數(shù)組中獲取數(shù)據(jù)61

      4.3 從包含char和double類型數(shù)據(jù)的數(shù)組中獲取數(shù)據(jù)62

      4.4 訪問越界數(shù)組元素64

      4.5 存儲字符串66

      4.6 存儲字符串而不進行初始化68

      4.7 在交互式會話中存儲字符串70

      4.8 獲取二維數(shù)組中元素的地址71

      4.9 獲取二維數(shù)組中行的基址73

      4.10 從二維數(shù)組中獲取數(shù)據(jù)74

      4.11 使用數(shù)組名稱從二維數(shù)組中獲取 數(shù)據(jù)76

      4.12 使用指針數(shù)組從數(shù)組中獲取數(shù)據(jù)78

      4.13 物理交換字符串80

      4.14 邏輯交換字符串82

      4.15 以交互方式存儲字符串85

      4.16 將命令行參數(shù)傳遞給程序87

      4.17 使用指向指針的指針獲取存儲的字符串90

      第5章 利用指針使用函數(shù)和結(jié)構(gòu)94

      5.1 通過引用傳遞函數(shù)參數(shù)94

      5.2 顯示嵌套結(jié)構(gòu)中存儲的數(shù)據(jù)96

      5.3 使用函數(shù)構(gòu)建結(jié)構(gòu)102

      5.4 通過將結(jié)構(gòu)傳遞給函數(shù)來修改結(jié)構(gòu)中的數(shù)據(jù)103

      5.5 通過將指向結(jié)構(gòu)的指針傳遞給函數(shù)來修改結(jié)構(gòu)中的數(shù)據(jù)105

      5.6 使用結(jié)構(gòu)數(shù)組存儲和獲取數(shù)據(jù)107

      5.7 在交互模式下使用結(jié)構(gòu)數(shù)組存儲和獲取數(shù)據(jù)110

      5.8 使用函數(shù)指針調(diào)用函數(shù)113

      5.9 實現(xiàn)基于文本的菜單系統(tǒng)115

      第6章 數(shù)據(jù)文件118

      6.1 逐個字符地讀取文本文件118

      6.2 文件打開失敗時處理錯誤122

      6.3 以批處理模式寫入文本文件125

      6.4 以交互模式寫入文本文件127

      6.5 逐個字符串地讀取文本文件130

      6.6 逐個字符地寫入文本文件132

      6.7 將整數(shù)寫入文本文件134

      6.8 將結(jié)構(gòu)寫入文本文件136

      6.9 讀取存儲在文本文件中的整數(shù)139

      6.10 讀取存儲在文本文件中的結(jié)構(gòu)141

      6.11 將整數(shù)寫入二進制文件143

      6.12 將結(jié)構(gòu)寫入二進制文件145

      6.13 讀取寫入二進制文件的整數(shù)147

      6.14 讀取寫入二進制文件的結(jié)構(gòu)149

      6.15 重命名文件151

      6.16 刪除文件152

      6.17 復(fù)制文本文件153

      6.18 復(fù)制二進制文件155

      6.19 寫入文件并讀取該文件157

      6.20 將文本文件定位到所需字符159

      6.21 從鍵盤設(shè)備文件中讀取165

      6.22 將文本寫入顯示器設(shè)備文件167

      6.23 從鍵盤設(shè)備文件讀取文本并將其寫入顯示器設(shè)備文件169

      第7章 自引用結(jié)構(gòu)171

      7.1 以交互方式生成數(shù)字列表171

      7.2 使用匿名變量創(chuàng)建鏈表173

      7.3 從鏈表中刪除組件177

      7.4 將組件插入鏈表181

      7.5 在交互式會話中創(chuàng)建鏈表187

      7.6 處理線性鏈表191

      《C編程技巧:117個問題解決方案示例 》

      7.7 創(chuàng)建具備前向和后向遍歷功能的線性鏈表200

      第8章 棧和隊列203

      8.1 將棧實現(xiàn)為數(shù)組204

      8.2 將棧實現(xiàn)為鏈表207

      8.3 將中綴表達式轉(zhuǎn)換為后綴表達式212

      8.4 將中綴表達式轉(zhuǎn)換為前綴表達式215

      8.5 將循環(huán)隊列實現(xiàn)為數(shù)組218

      第9章 搜索和排序223

      9.1 使用線性搜索查找數(shù)據(jù)元素224

      9.2 使用二分搜索查找數(shù)據(jù)元素226

      9.3 使用冒泡排序?qū)o定的數(shù)字列表進行排序228

      9.4 使用插入排序?qū)o定的數(shù)字列表進行排序231

      9.5 使用選擇排序?qū)o定的數(shù)字列表進行排序233

      9.6 使用歸并排序?qū)o定的數(shù)字列表進行排序235

      9.7 使用希爾排序對給定的數(shù)字列表進行排序238

      9.8 使用快速排序?qū)o定的數(shù)字列表進行排序240

      第10章 密碼系統(tǒng)243

      10.1 使用反向密碼方法245

      10.2 使用愷撒密碼方法248

      10.3 使用轉(zhuǎn)置密碼方法251

      10.4 使用乘法密碼方法255

      10.5 使用仿射密碼方法259

      10.6 使用簡單替換密碼方法263

      10.7 使用Vigenère密碼方法268

      10.8 使用一次性密鑰密碼方法273

      10.9 使用RSA密碼方法277

      第11章 數(shù)值方法283

      11.1 用對分法求方程的根284

      11.2 用試位法求方程的根286

      11.3 用穆勒法求方程的根289

      11.4 用牛頓拉夫森迭代法求方程的根292

      11.5 用牛頓前向插值法構(gòu)造新的數(shù)據(jù)點294

      11.6 用牛頓后向插值法構(gòu)造新的數(shù)據(jù)點296

      11.7 用高斯前向插值法構(gòu)造新的數(shù)據(jù)點299

      11.8 用高斯后向插值法構(gòu)造新的數(shù)據(jù)點301

      11.9 用斯特林插值法構(gòu)造新的數(shù)據(jù)點304

      11.10 用貝塞爾插值法構(gòu)造新的數(shù)據(jù)點306

      11.11 用拉普拉斯-埃弗***插值法構(gòu)造新的數(shù)據(jù)點309

      11.12 用拉格朗日插值法構(gòu)造新的數(shù)據(jù)點312

      11.13 用梯形數(shù)值積分法計算積分值314

      11.14 用辛普森的3/8數(shù)值積分法計算積分值316

      11.15 用辛普森的1/3數(shù)值積分法計算積分值318

      11.16 用修正的歐拉方法求解微分方程320

      11.17 用龍格-庫塔方法求解微分方程322

      附錄A 參考表325

      附錄B 庫函數(shù)334

      附錄C C習(xí)慣用法338

      附錄D 術(shù)語表347

      c語言 C 語言

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:excel中快速對應(yīng)查找數(shù)據(jù)值的方法(3種)
      下一篇:如何讓WPS文字在打開之后不顯示標(biāo)記(wps不顯示修改標(biāo)記)
      相關(guān)文章
      亚洲日本韩国在线| 亚洲精品中文字幕无码A片老| 91亚洲精品麻豆| 亚洲爱情岛论坛永久| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 一本久到久久亚洲综合| 亚洲成A人片在线播放器| 亚洲乱码一区av春药高潮| 亚洲成A∨人片在线观看无码| 亚洲黄色中文字幕| 亚洲理论在线观看| 亚洲另类春色国产精品| 亚洲人成免费电影| 久久综合久久综合亚洲| 亚洲精品国产精品国自产网站| 亚洲日本人成中文字幕| 亚洲中文字幕无码av永久| 国产天堂亚洲精品| 亚洲αⅴ无码乱码在线观看性色| 久久国产亚洲精品| 亚洲精品天堂成人片AV在线播放 | 亚洲黄片手机免费观看| 亚洲伊人成无码综合网| 亚洲中文久久精品无码| 亚洲VA中文字幕无码毛片| 亚洲最大福利视频网站| 亚洲性色成人av天堂| 亚洲综合一区二区三区四区五区| 亚洲精品国产av成拍色拍| 一区二区三区亚洲视频| 久久国产成人亚洲精品影院| 亚洲精品色午夜无码专区日韩| 亚洲AV日韩AV天堂一区二区三区| 亚洲美女中文字幕| ASS亚洲熟妇毛茸茸PICS| 久久无码av亚洲精品色午夜| 亚洲精品国产高清不卡在线| 亚洲人成色77777| 亚洲综合综合在线| 亚洲午夜精品一区二区麻豆| 午夜亚洲av永久无码精品|