根據(jù)ACM CC2013專業(yè)實踐教學(xué)體系對程序設(shè)計基礎(chǔ)課的要求,通過面向應(yīng)用和循序漸進設(shè)計的典型實例,基于C 語言,引導(dǎo)學(xué)生關(guān)注和掌握系統(tǒng)邏輯,從宏觀到微觀去分析、理解和把握系統(tǒng),實現(xiàn)從系統(tǒng)級上對算法和程序設(shè)計的再認識,強調(diào)系統(tǒng)設(shè)計,達到用不同特點的程序設(shè)計語言解決同樣的計算問題的目的,并在各種語言的使用中去理解其不同的特點。
世界上沒有好的計算機編程語言,只有適合的編程語言。C 語言是從C語言發(fā)展而來的,它繼承了C語言的特性,靈活且功能強大。相對于面向過程的C語言,C 還支持面向?qū)ο蟪绦蛟O(shè)計。從面向過程到面向?qū)ο,不僅是思考問題的角度發(fā)生了改變,語言的抽象能力也有了質(zhì)的飛躍。
學(xué)習(xí)程序設(shè)計是一件充滿挑戰(zhàn)的事情,要想達到下筆如有神的境界,只有一種方法,那就是實踐,實踐,再實踐。本書將通過大量生動而有趣的實踐案例,讓讀者體會C 語言的獨特魅力。
與之前出版的《程序設(shè)計實踐教程:C語言版》一樣,本書程序采用統(tǒng)一的代碼規(guī)范編寫,并且在編碼中注重程序的健壯性。書中實踐案例的選取兼顧趣味性和實用性。本書內(nèi)容分為三部分,部分介紹集成開發(fā)環(huán)境,包括Visual Studio、Code::Blocks、Dev-C 三種常用的C 語言集成開發(fā)環(huán)境的使用和程序調(diào)試方法。第二部分是經(jīng)典實驗案例,主要包括基本運算和基本I/O、基本控制結(jié)構(gòu)、枚舉法、遞推法、近似迭代法、遞歸法、趣味數(shù)字、矩陣運算、日期和時間、文本處理、結(jié)構(gòu)、查找和排序、大數(shù)運算和近似計算、貪心與動態(tài)規(guī)劃等專題。第三部分是綜合案例,包括餐飲服務(wù)質(zhì)量調(diào)查、小學(xué)生算術(shù)運算訓(xùn)練系統(tǒng)、青年歌手大獎賽現(xiàn)場分數(shù)統(tǒng)計、隨機點名系統(tǒng)4個應(yīng)用案例,以及多個游戲設(shè)計案例,如火柴游戲、文曲星猜數(shù)游戲、2048數(shù)字游戲、貪吃蛇游戲、飛機大戰(zhàn)、Flappy Bird、井字棋游戲、桿子游戲、俄羅斯方塊。
書中每個實踐案例均給出了多種編程方法,并且很多案例都采用循序漸進的任務(wù)驅(qū)動方式,引導(dǎo)讀者舉一反三、觸類旁通。這些實踐案例有助于你提升編程能力,并且讓你愛上編程,愛上C 語言。
本書由蘇小紅組織和統(tǒng)籌編寫工作,部分由蔣遠執(zhí)筆,第二部分和第三部分主要由蘇小紅執(zhí)筆,部分案例設(shè)計由單麗莉和李東執(zhí)筆。
因編者水平有限,書中錯誤在所難免,歡迎讀者對本書提出意見和建議,我們會在重印時予以更正,讀者也可隨時從我們的教材網(wǎng)站(http://sse.hit.edu.cn/book/)和華章網(wǎng)站(http://www.hzbook.com)下載勘誤表。作者的E-mail地址為sxh@hit.edu.cn。
作 者
2021年于哈爾濱工業(yè)大學(xué)計算學(xué)部
蘇小紅 教授,博士生導(dǎo)師,現(xiàn)任哈爾濱工業(yè)大學(xué)計算學(xué)部智能軟件工程研究中心主任,計算機科學(xué)與技術(shù)實驗教學(xué)示范中心副主任。國家精品資源共享課 C語言程序設(shè)計和省級精品課程計算機圖形學(xué)負責(zé)人。主持的MOOC課程C語言程序設(shè)計精髓和程序設(shè)計基礎(chǔ)被評為國家精品在線開放課程。獲教學(xué)成果一、二等獎各1項,黑龍江省教學(xué)成果一等獎4項、二等獎3項。主編多部、部級十二五規(guī)劃教材。研究領(lǐng)域是智能軟件工程和智能信息處理,先后主持完成國家自然科學(xué)基金、國防基礎(chǔ)科研、橫向合作等項目多項。曾獲省教學(xué)名師獎、寶鋼優(yōu)秀教師獎等榮譽稱號。
前言
部分 開發(fā)環(huán)境
第1章 集成開發(fā)環(huán)境 2
1.1 程序調(diào)試 2
1.2 經(jīng)典集成開發(fā)環(huán)境 5
1.3 多文件項目的開發(fā) 34
1.4 小結(jié) 44
第二部分 經(jīng)典實驗案例
第2章 基本運算和基本I/O專題 46
2.1 數(shù)位拆分v1.0 46
2.2 身高預(yù)測v1.0 47
2.3 計算三角形面積 48
2.4 存款計算器 49
第3章 基本控制結(jié)構(gòu)專題 51
3.1 數(shù)位拆分v2.0 51
3.2 身高預(yù)測v2.0 53
3.3 體型判斷 54
3.4 算術(shù)計算器 56
3.5 國王的許諾 59
3.6 計算圓周率 60
3.7 整數(shù)位數(shù)判斷 62
3.8 階乘求和 65
第4章 枚舉法專題 71
4.1 還原算術(shù)表達式 71
4.2 求解不等式 75
4.3 韓信點兵 81
4.4 減肥食譜 82
第5章 遞推法專題 85
5.1 猴子吃桃 85
5.2 吹氣球 86
5.3 發(fā)紅包 88
5.4 水手分椰子 96
第6章 近似迭代法專題 99
6.1 直接迭代法求方程根 99
6.2 牛頓迭代法求方程根 100
6.3 二分法求方程根 102
6.4 計算平方根 104
第7章 遞歸法專題 106
7.1 公約數(shù) 106
7.2 漢諾塔問題 110
7.3 騎士游歷 112
7.4 八皇后問題 115
第8章 趣味數(shù)字專題 119
8.1 楊輝三角形 119
8.2 好數(shù)對 126
8.3 完全數(shù) 129
8.4 親密數(shù) 135
8.5 素數(shù)求和 142
8.6 驗證哥德巴赫猜想 145
8.7 孿生素數(shù) 146
8.8 回文素數(shù) 149
第9章 矩陣運算專題 151
9.1 矩陣轉(zhuǎn)置 151
9.2 幻方矩陣 157
9.3 蛇形矩陣 165
9.4 螺旋矩陣 167
第10章 日期和時間專題 176
10.1 三天打魚,兩天曬網(wǎng) 176
10.2 統(tǒng)計特殊的星期天 180
10.3 日期轉(zhuǎn)換 182
10.4 動態(tài)時鐘 194
第11章 文本處理專題 198
11.1 字符統(tǒng)計 198
11.2 單詞統(tǒng)計 203
11.3 行程長度編碼 208
11.4 串的模式匹配 212
第12章 結(jié)構(gòu)專題 218
12.1 數(shù)字時鐘模擬 218
12.2 洗發(fā)牌模擬 221
12.3 逆波蘭表達式 223
12.4 約瑟夫問題 230
第13章 查找和排序?qū)n} 241
13.1 尋找值 241
13.2 關(guān)鍵字統(tǒng)計 256
13.3 驗證卡布列克運算 264
13.4 鏈表逆序 273
第14章 大數(shù)運算和近似計算專題 280
14.1 大整數(shù)加法 280
14.2 大數(shù)階乘 282
14.3 蒙特卡羅法計算圓周率 286
14.4 蒙特卡羅法計算定積分 287
第15章 貪心與動態(tài)規(guī)劃專題 290
15.1 活動安排 290
15.2 分發(fā)糖果 292
15.3 0-1背包問題 295
15.4 長上升子序列 298
第三部分 綜合案例
第16章 綜合應(yīng)用 304
16.1 餐飲服務(wù)質(zhì)量調(diào)查 304
16.2 小學(xué)生算術(shù)運算訓(xùn)練系統(tǒng) 307
16.3 青年歌手大獎賽現(xiàn)場分數(shù)統(tǒng)計 314
16.4 隨機點名系統(tǒng) 319
第17章 游戲設(shè)計 326
17.1 火柴游戲 326
17.2 文曲星猜數(shù)游戲 329
17.3 2048數(shù)字游戲 332
17.4 貪吃蛇游戲 338
17.5 飛機大戰(zhàn) 343
17.6 Flappy Bird 348
17.7 井字棋游戲 351
17.8 桿子游戲 359
17.9 俄羅斯方塊 364