書籍信息
作者:胡明、王紅梅
定價:39元
印次:2-2
ISBN:9787302411802
出版日期:2016.01.01
印刷日期:2016.02.01
內容簡介
本書以C語言為工具,以程式設計過程為主線,結合實際問題,基於計算思維,通過“問題→想法→算法→程式”的問題求解過程,帶領讀者分析問題、構造算法、設計程式,在潛移默化中掌握程式設計語言的基本知識,掌握程式設計的一般過程和基本方法,提高計算思維能力以及應 用程式設計語言解決實際問題的能力。 本書適用於程式設計的初學者,主要面向沒有任何編程知識和編程經歷的讀者。本書遵循初學者的認知規律和知識基礎,科學安排知識單元之間的拓撲關係,概念清晰,實例豐富,深入淺出,是程式設計初學者的理想教材。
圖書目錄
第1章緒論1
1.1程式、程式設計與程式設計語言1
1.1.1程式與程式設計1
1.1.2程式設計語言2
1.2程式的基本構成4
1.2.1程式示例5
1.2.2基本字元集6
1.2.3詞法單位6
1.2.4語法單位8
1.2.5程式8
1.3程式的上機過程12
1.3.1編程環境12
1.3.2程式編輯12
1.3.3程式編譯13
1.3.4程式連線13
1.3.5運行調試13
1.4程式風格14
1.4.1標識符的命名規則14
1.4.2注釋15
1.4.3縮進15
1.4.4行文格式16
1.5問題求解與程式設計17
1.5.1程式設計的一般過程17
1.5.2程式設計的核心——算法18
1.5.3程式設計實例——雞兔同籠問題21
習題122
第2章數據的存儲表示25
引例2.1計算圓的面積25
2.1數據的存儲26
2.1.1二進制26
2.1.2記憶體27
2.2基本數據類型28
2.2.1整型29
2.2.2實型31
2.2.3字元型32
2.2.4邏輯型33
2.3常量34
2.3.1字面常量34
2.3.2符號常量36
2.4變數38
2.4.1變數的概念38
2.4.2變數的定義和初始化39
2.4.3變數的賦值40
2.5程式設計實例43
2.5.1實例1——溫度轉換43
2.5.2實例2——計算本息和43
習題244
第3章數據的運算處理47
3.1算術運算47
引例3.1求平均值47
3.1.1算術運算48
3.1.2運算符的優先權和結合性49
3.2邏輯運算50
引例3.2判斷閏年50
3.2.1關係運算51
3.2.2邏輯運算51
3.3賦值運算52
3.3.1賦值運算52
3.3.2自增/自減運算53
3.4其他運算54
3.4.1逗號運算54
3.4.2取長度運算54
3.4.3條件運算55
3.5運算對象的類型轉換55
3.5.1自動轉換56
3.5.2強制轉換57
3.6程式設計實例58
3.6.1實例1——通用產品代碼UPC58
3.6.2實例2——瘋狂賽車59
習題360
第4章程式的基本控制結構63
4.1順序結構63
引例4.1整數的逆值63
4.1.1簡單的順序結構64
4.1.2複合語句65
4.2選擇結構65
引例4.2水仙花數66
4.2.1邏輯值控制的選擇結構67
4.2.2算術值控制的選擇結構69
4.3循環結構71
引例4.3歐幾里得算法71
4.3.1當型循環72
4.3.2直到型循環72
4.3.3計數型循環73
4.3.4循環結構的比較74
4.3.5循環結構的嵌套77
4.4其他控制語句78
引例4.4素數判定78
4.4.1break語句79
4.4.2continue語句80
4.5程式設計實例81
4.5.1實例1——將三個整數由小到大輸出81
4.5.2實例2——今年已經過去多久了81
4.5.3實例3——百元買百雞問題83
4.5.4實例4——哥德巴赫猜想84
習題485
第5章批量同類型數據的組織——數組88
5.1一維數組88
引例5.1舞林大會88
5.1.1一維數組的定義和初始化89
5.1.2一維數組的操作92
5.2二維數組94
引例5.2哥尼斯堡七橋問題94
5.2.1二維數組的定義和初始化95
5.2.2二維數組的操作97
5.3程式設計實例99
5.3.1實例1——折半查找99
5.3.2實例2——合併有序數組100
5.3.3實例3——對角線元素之和101
5.3.4實例4——幻方問題103
習題5104
第6章 程式的組裝單元——函式 107
6.1 用戶定義的函式——自定義函式 107
引例6.1 歐幾里得算法 107
6.1.1 函式定義 108
6.1.2 函式調用 110
6.1.3 函式聲明 112
6.2 系統定義的函式——庫函式 113
引例6.2 素數判定 114
6.2.1 頭檔案與檔案包含 115
6.2.2 標準輸入輸出函式 116
6.2.3 隨機函式 119
6.2.4 其他常用庫函式 120
6.3 變數的作用域 121
引例6.3 雞兔同籠問題 121
6.3.1 局部變數 122
6.3.2 全局變數 124
6.4 變數的生存期 125
引例6.4 字數統計 125
6.4.1 自動變數 126
6.4.2 靜態變數 127
6.5 程式設計實例 128
6.5.1 實例1——三角形的面積 128
6.5.2 實例2——猜數遊戲 129
習題6 131
第7章 變數的間接訪問——指針 134
7.1 指針 134
引例7.1 答疑教室 134
7.1.1 指針的概念 135
7.1.2 指針變數的定義和初始化 137
7.1.3 指針變數的操作 139
7.1.4 指針所指變數的操作 141
7.2 指針作為函式的參數 141
引例7.2 雞兔同籠問題 141
7.2.1 值傳遞方式——函式的輸入 143
7.2.2 指針傳遞方式——函式的輸出 144
7.2.3 指針傳遞方式——函式的輸入輸出 145
7.3 數組作為函式的參數 146
引例7.3 順序查找 146
7.3.1 一維數組作為函式的參數 147
7.3.2 二維數組作為函式的參數 149
7.4 程式設計實例 150
7.4.1 實例1——三個整數由小到大輸出 150
7.4.2 實例2——哥德巴赫猜想 151
7.4.3 實例3——求一元二次方程的根 152
7.4.4 實例4——簡單選擇排序 154
習題7 155
第8章 字元數據的組織——字元串 158
引例8.1 愷撒加密 158
8.1 字元串變數的定義和初始化 159
8.1.1 字元數組 160
8.1.2 字元串指針 162
8.2 字元串的操作 162
8.2.1 輸入輸出操作 162
8.2.2 賦值操作 166
8.2.3 字元串的比較 167
8.2.4 常用字元串庫函式 168
8.3 程式設計實例 168
8.3.1 實例1——字數統計 168
8.3.2 實例2——字元串匹配 169
習題8 171
第9章 自定義數據類型 174
9.1 可枚舉數據的組織——枚舉類型 174
引例9.1 行走機器人 174
9.1.1 枚舉類型的定義 176
9.1.2 枚舉變數的定義與初始化 176
9.1.3 枚舉變數的操作 178
9.2 不同類型數據的組織——結構體類型 179
引例9.2 統計入學成績 179
9.2.1 結構體類型的定義 180
9.2.2 結構體變數的定義和初始化 181
9.2.3 結構體變數的操作 183
9.3 批量不同類型數據的組織——結構體數組 185
引例9.3 統計入學成績 186
9.3.1 結構體數組的定義和初始化 187
9.3.2 結構體數組的操作 189
9.4 為自定義數據類型定義別名 190
9.5 程式設計實例 191
9.5.1 實例1——荷蘭國旗問題 191
9.5.2 實例2——最近對問題 193
習題9 195
第10章 再談函式 198
10.1 函式的嵌套調用 198
引例10.1 字元串的循環左移 198
10.1.1 函式——封裝的小程式 200
10.1.2 函式的嵌套調用 201
10.2 函式的遞歸調用 202
引例10.2 求n! 202
10.2.1 遞歸的定義 203
10.2.2 函式的遞歸調用 204
10.3 程式設計實例 206
10.3.1 實例1——公共子序列 206
10.3.2 實例2——弦截法求方程的根 208
10.3.3 實例3——漢諾塔問題 210
10.3.4 實例4——折半查找 211
習題10 213
第11章 再談指針 216
11.1 指針與數組 216
引例11.1 判斷回文串 216
11.1.1 用指針訪問一維數組 217
11.1.2 用指針訪問二維數組 219
11.1.3 指針數組 221
11.2 指針與結構體 222
引例11.2 統計入學成績 222
11.2.1 指向結構體的指針 223
11.2.2 結構體指針作為函式參數 224
11.3 動態存儲分配 225
引例11.3 發紙牌 226
11.3.1 申請和釋放存儲空間 227
11.3.2 動態數組 230
11.3.3 鍊表 232
11.4 程式設計實例 236
11.4.1 實例1——求最大字元串 236
11.4.2 實例2——進制轉換 237
習題11 239
第12章 再談輸入輸出 241
引例12.1 統計入學成績 241
12.1 檔案與檔案指針 244
12.1.1 文本檔案和二進制檔案 244
12.1.2 檔案緩衝區 245
12.1.3 檔案指針 246
12.2 檔案的當前位置指針 246
12.2.1 什麼是檔案的當前位置指針 246
12.2.2 跟蹤檔案的當前位置指針 247
12.2.3 定位檔案的當前位置指針 248
12.3 檔案的打開與關閉 249
12.3.1 檔案的打開 249
12.3.2 檔案的關閉 251
12.4 檔案的讀寫操作 251
12.4.1 字元方式檔案讀寫 251
12.4.2 字元串方式檔案讀寫 252
12.4.3 格式化方式檔案讀寫 254
12.4.4 二進制方式檔案讀寫 255
12.5 程式設計實例 256
12.5.1 實例1——檔案複製 256
12.5.2 實例2——註冊與登錄 258
習題12 260
第13章 再談程式的基本結構 262
13.1 多檔案程式 262
13.1.1 多檔案程式的構成 262
13.1.2 將源程式檔案分解為多個程式檔案模組 263
13.2 外部變數和外部函式 264
13.2.1 外部變數 264
13.2.2 外部函式 265
13.3 嵌套包含 267
13.3.1 條件編譯 267
13.3.2 保護頭檔案 270
13.4 程式設計實例——石頭、剪子、布遊戲 271
習題13 276
第14章 低級程式設計 277
引例14.1 XOR加密 277
14.1 數據表示 278
14.1.1 二進制數與八進制數和十六進制數之間的轉換 278
14.1.2 位域 279
14.2 位運算 280
14.2.1 位邏輯運算 281
14.2.2 移位運算 282
14.2.3 補位原則 283
14.2.4 位運算的套用 283
14.3 程式設計實例 284
14.3.1 實例1——快速歐幾里得算法 284
14.3.2 實例2——過濾特殊字元 285
習題14 287
第15章 基本的算法設計技術 288
15.1 蠻力法 288
15.1.1 設計思想 288
15.1.2 程式設計實例——起泡排序 289
15.2 窮舉法 291
15.2.1 設計思想 291
15.2.2 程式設計實例——假幣問題 292
15.3 遞推法 295
15.3.1 設計思想 295
15.3.2 程式設計實例——捕魚知多少 296
15.4 分治法 297
15.4.1 設計思想 297
15.4.2 程式設計實例——數字旋轉方陣 299
15.5 動態規劃法 302
15.5.1 設計思想 302
15.5.2 程式設計實例——0/1背包問題 303
15.6 貪心法 305
15.6.1 設計思想 305
15.6.2 程式設計實例——埃及分數 306
習題15 308
附錄A 標準ASCII碼 310
附錄B 運算符的優先權和結合性 311
附錄C 常用庫函式 312
參考文獻 317