用實用和信息豐富的方法解決C編程問題。本書涵蓋了C編程的各個方面,包括C的基礎(chǔ)知識、運算符和表達式、控制語句、遞歸和用戶定義函數(shù)。每一章都包含一系列方法,你可以很容易地參考它們,快速找到你想要的答案。
前言
致謝
第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
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 使用希爾排序?qū)o定的數(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