本書作為主教材《C++程序設計教程(第二版)》的配套教材,并對第一版的《C++程序設計實驗指導》做了改版,無論從內容體系、結構布局、實驗環(huán)境、課程目標,還是從所描述的實驗細節(jié)上都有了根本性的改進。該書除了可與主教材配套使用外,還可以根據(jù)內容的指引及網站的配合,進行獨立練習。
本書配合主教材,并通過配套網站的使用、代碼現(xiàn)場提交、遠程判題、反饋判題結果來衡量自身學習的效果,以實現(xiàn)初學者代碼調試和問題解決這兩種能力的實質性提升。
書中的三大部分分別包含了五個實驗套題和一個實戰(zhàn)套題,每部分都列有實驗要求、目標、難度與特點,并提供完整的樣板實驗。實驗套題中所設計的問題,其求解充滿懸念,須開動腦筋,同時還提供了提示與解答指導。
本書適合作為高等學!癈++程序設計”課程的輔助教材,提供教師在教學中選用其中的一部分;也適合于立志自學成才的讀者,幫助他們從零開始走向高級程序員。
第二版前言
《C++程序設計教程(第二版)實驗指導》是主教材《C++程序設計教程(第二版)》的配套書。由于第二版主教材對第一版作了根本性的改版,所以對應的實驗指導的第二版也基本拋棄了第一版的成書結構,無論從內容體系、結構布局、實驗環(huán)境、課程目標,還是從所描述的實驗細節(jié)上都作了根本性的改進。
該書從題目設計,測試數(shù)據(jù)的構造到難易的把握、整體的布局,都是圍繞C++程序設計課程教學來安排的,因而書中實驗的設計自成一個課程知識體系。這有利于讓課堂知識的講解朝著問題驅動的教學模式邁進,以更好地進行師生互動,提高教學效果。
本書共分三個部分,每一部分均由“實驗概述”、“樣板實驗”、“實驗內容”和“解題指導”四章構成。每個部分都包含了五個實驗套題和一個階段測驗,以供教師和學生選擇使用。其中每個部分都有實驗要求、目標,列出了本部分實驗的難度與特點,并提供樣板實驗。同時,除了階段測驗外,各套實驗都提供了解題指導。
第一部分為入門編程,目的在于掌握C++程序設計的基本操作與編程的基本描述技能,以便展開比較有深度的編程分析與邏輯描述的思考。本部分是能否學到C++編程要領的關鍵,如果第一部分沒有掌握,寧可重學,也千萬不要跟讀后面的內容,因為沒有表達能力與調試經驗,所從事的編程邏輯思考,恰似無緣之木、無源之水,雖努力撐持,最后也只能痛言放棄。
第二部分為基本編程,目的是掌握C++程序設計的基本方法,提高以編程來解決實際問題的能力。這部分內容學得是否到位,是能否成為一個真正程序員的分水嶺。因為搞任何理論性研究,都離不開抽象思維、數(shù)學和算法思想。對科學研究來說,語言編程環(huán)境只不過是個具體的描述工具而已。另一方面,搞任何系統(tǒng)開發(fā),都離不開對編程語言、編程工具、編程資源的了解,而這一切都與充分進行的編程實踐密切相關。程序設計課程的后續(xù)課程《數(shù)據(jù)結構與算法》也正是為了強化這兩個目的而開設的。
第三部分為設計與組織,它主要面向編程方法,讓讀者了解和掌握如何對程序進行合理的布局組織與結構劃分。編程方法有多少,程序結構的形式就有多少,因此,學會了程序組織的不同形式,也就從實踐環(huán)節(jié)上看透了各種編程方法的差異與聯(lián)系,同時也熟悉了多文件結構的程序工程調試,實踐過程化與對象化程序設計,實踐面向對象程序設計及模板的設計,從而從抽象設計的角度,從分析問題的角度,從設計與代碼描述一體化的角度,從系統(tǒng)實現(xiàn)的角度,來了解C++的語言描述能力,了解操作系統(tǒng)與語言系統(tǒng)的聯(lián)系。
本書的目標是與主教材密切配合,讓讀者以自學提高為主,逐步具備自學編程的能力,即綜合分析問題、解決問題的能力與操作編程技能的同步提高,以便能夠獨立研讀算法理論和系統(tǒng)開發(fā)指導等書籍,輔之以網上討論,專家點撥,最終實現(xiàn)自己的價值。
本書配有一個實驗環(huán)境網站,內有一個題庫,包含了書中第一部分和第二部分的全部實驗。網站上具有判題功能,讀者可以對應實驗的題號,提交自己的代碼,驗證正確性;測試運行性能,看是否符合要求。同時,網站上還會不斷進行一些課程實驗,組織一些相關的上機考試,推出一些新的實驗套題,并定期在清華大學出版社網站和C++課程教學網站http://kczy.zjut.edu.cn:8015(可由實驗網站鏈接進入)上提供解答及相關的教學資料。
該C++實驗網站是一個可以自由訪問的實驗提交系統(tǒng),由屢獲大學生程序設計競賽佳績的學生經過兩個版本的更新而成型。值得一提的是,金天鵬和金啟為同學為該系統(tǒng)做出了卓越的貢獻。實驗環(huán)境使用說明見附錄C。
書中的例子,還有解答指導的樣本代碼,其風格與主教材保持一致。所有書中的代碼都在Borland C++ Builder 6(簡稱BCB6)上通過了測試,在清華大學出版社網站http://www.tup.tsinghua.edu.cn上可以下載有關的樣板實驗代碼。為了方便讀者的學習,還同時提供另一套可以在VC6上運行通過的樣板實驗代碼供讀者下載。
書末附有BCB6的安裝和簡單操作使用介紹以及BCB6的錯誤信息解讀。最后還介紹了實驗教學系統(tǒng)OPS的使用說明。
在本書的寫作過程中,得到了多方面的幫助。學校網絡中心對實驗教學系統(tǒng)OPS給予了多方關照,保證了其正常運行;教務處對C++課程教學建設也一直在關心和支持;甚至教育部計算機科學與技術專業(yè)教學指導分委員會指導下的2007年計算機專業(yè)核心課程C++程序設計教師研修班也在作者所在的浙江工業(yè)大學舉辦。作為國家“十一五”規(guī)劃教材,本書出版之際,我們的C++程序設計課程已被評為省級精品課程,整個C++課程組都在課程建設和教材建設方面發(fā)揮著積極作用。
網評和論壇也給了我許多啟示,甚至有些電子郵件直接就說是為了讓我寫出更好的書。因而所寫的書,似乎出自大家的手。感謝為我提供資源,為我創(chuàng)造條件,讓我靜下心來的人們!在他們的關照、呵護和鼓勵下,我的寫作過程充滿了靈感。好吧,再往前行,接著寫下一本,努力滿足讀者的要求。
作者的電子郵件地址是:qianneng@mail.hz.zj.cn
錢 能
2007年夏于杭州自在居
前 言
本書是《C++程序設計教程》的配套書,同時它也可單獨作為學習C++的上機實驗指導書。C++程序設計的環(huán)境有許多,這里選擇了兩種,分別是Borland(或TURBO)C++ 3.0 for DOS版和Borland(或TURBO)C++ 5.0 for Windows版。
其中,對Borland C++ 3.0的使用方法給予了較完整的介紹,并給出了編譯和鏈接的錯誤信息中文解釋。
書中根據(jù)C++程序設計教程的進度,安排了十個實驗單元。每個單元都指出了實驗目的和系列的實驗題目。每個實驗題目都給出基本要求和思考問題。個別實驗列出了測試數(shù)據(jù)和選做項目。還根據(jù)需要,個別地方介紹了操作過程。最后還介紹了常用標準庫函數(shù)的函數(shù)原型,并對有些復雜的函數(shù)適當展開介紹其使用方法。
II
C++程序設計教程(第二版)實驗指導
III
目 錄
目 錄
第一部分 入 門 編 程
第1章 實驗概述2
1.1 實驗目標2
1.2 實驗環(huán)境3
1.3 實驗安排5
1.4 做題步驟6
第2章 樣板實驗15
2.1 實驗內容15
2.2 分析題意15
2.3 算法描述18
2.4 代碼編寫19
2.5 編譯調試22
2.6 算法任意性23
2.7 測試數(shù)據(jù)25
第3章 實驗內容27
3.1 第一套實驗27
3.1.1 OPS歡迎您27
3.1.2 一個@字符矩形27
3.1.3 一個#字符正方形28
3.1.4 一個字符三角形28
3.1.5 正方形面積29
3.1.6 A-B29
3.2 第二套實驗30
3.2.1 字符三角形30
3.2.2 字符菱形31
3.2.3 背靠背字符三角形31
3.2.4 交替字符倒三角形32
3.2.5 格式陣列一33
3.2.6 格式陣列二33
3.3 第三套實驗34
3.3.1 1!到n!的和34
3.3.2 等比數(shù)列35
3.3.3 菲波那契數(shù)35
3.3.4 最大公約數(shù)36
3.3.5 最小公倍數(shù)36
3.3.6 平均數(shù)37
3.4 第四套實驗37
3.4.1 級數(shù)求和37
3.4.2 對稱三位數(shù)素數(shù)38
3.4.3 母牛問題39
3.4.4 整數(shù)內碼39
3.4.5 整除3、5、740
3.5 第五套實驗40
3.5.1 十-二進制轉換40
3.5.2 均方差41
3.5.3 五位以內的對稱素數(shù)42
3.5.4 統(tǒng)計天數(shù)42
3.5.5 楊輝三角形43
3.6 階段測驗44
3.6.1 逆反01串44
3.6.2 倒楊輝三角形44
3.6.3 “順”序列45
3.6.4 數(shù)字和46
3.6.5 組合數(shù)46
3.6.6 折紙游戲47
第4章 解題指導49
4.1 第一套實驗49
4.1.1 OPS歡迎您49
4.1.2 一個@字符矩形50
4.1.3 一個#字符正方形51
4.1.4 一個字符三角形51
4.1.5 正方形面積52
4.1.6 A-B53
4.2 第二套實驗53
4.2.1 字符三角形53
4.2.2 字符菱形54
4.2.3 背靠背字符三角形55
4.2.4 交替字符倒三角形55
4.2.5 格式陣列一56
4.2.6 格式陣列二58
4.3 第三套實驗58
4.3.1 1!到n!的和58
4.3.2 等比數(shù)列60
4.3.3 菲波那契數(shù)61
4.3.4 最大公約數(shù)61
4.3.5 最小公倍數(shù)62
4.3.6 平均數(shù)62
4.4 第四套實驗62
4.4.1 級數(shù)求和63
4.4.2 對稱三位數(shù)素數(shù)64
4.4.3 母牛問題66
4.4.4 整數(shù)內碼68
4.4.5 整除3、5、769
4.5 第五套實驗70
4.5.1 十-二進制轉換70
4.5.2 均方差71
4.5.3 五位以內的對稱素數(shù)72
4.5.4 統(tǒng)計天數(shù)73
4.5.5 楊輝三角形74
第二部分 基 本 編 程
第5章 實驗概述78
5.1 實驗目標78
5.2 實驗規(guī)則79
5.3 實驗成績80
第6章 樣板實驗82
6.1 實驗內容82
6.2 分析與試探82
6.3 解決時空問題88
6.4 提高搜索速度91
6.5 測試數(shù)據(jù)生成93
第7章 實驗內容95
7.1 第一套實驗95
7.1.1 列出完數(shù)95
7.1.2 12!配對95
7.1.3 整數(shù)的因子數(shù)96
7.1.4 浮點數(shù)的位碼96
7.1.5 對稱素數(shù)97
7.2 第二套實驗98
7.2.1 密鑰加密98
7.2.2 密鑰解密99
7.2.3 01串排序100
7.2.4 按績點排名100
7.2.5 去掉雙斜杠注釋101
7.3 第三套實驗102
7.3.1 n!的位數(shù)102
7.3.2 排列對稱串103
7.3.3 勒讓德多項式表103
7.3.4 立方數(shù)與連續(xù)奇數(shù)和104
7.3.5 菲波那契數(shù)105
7.4 第四套實驗105
7.4.1 簡單四則運算105
7.4.2 大數(shù)加106
7.4.3 大數(shù)和107
7.4.4 彼此兩點最近107
7.4.5 離直線最近的點109
7.5 第五套實驗109
7.5.1 大數(shù)乘109
7.5.2 n!中的0110
7.5.3 整數(shù)模110
7.5.4 k個勝利者111
7.5.5 表達式個數(shù)112
7.6 階段測驗112
7.6.1 半數(shù)跳海113
7.6.2 01串的位值113
7.6.3 勘探油田114
7.6.4 另類二進制數(shù)115
7.6.5 不甘井底的蝸牛116
第8章 解題指導118
8.1 第一套實驗118
8.1.1 列出完數(shù)118
8.1.2 12!配對119
8.1.3 整數(shù)的因子數(shù)120
8.1.4 浮點數(shù)的位碼122
8.1.5 對稱素數(shù)123
8.2 第二套實驗125
8.2.1 密鑰加密126
8.2.2 密鑰解密127
8.2.3 01串排序127
8.2.4 按績點排名129
8.2.5 去掉雙斜杠注釋130
8.3 第三套實驗131
8.3.1 n!的位數(shù)132
8.3.2 排列對稱串133
8.3.3 勒讓德多項式表134
8.3.4 立方數(shù)與連續(xù)奇數(shù)和135
8.3.5 菲波那契數(shù)136
8.4 第四套實驗136
8.4.1 簡單四則運算136
8.4.2 大數(shù)加139
8.4.3 大數(shù)和140
8.4.4 彼此兩點最近142
8.4.5 離直線最近的點143
8.5 第五套實驗144
8.5.1 大數(shù)乘144
8.5.2 n!中的0145
8.5.3 整數(shù)模147
8.5.4 k個勝利者149
8.5.5 表達式個數(shù)149
第三部分 設計與組織
第9章 實驗概述152
9.1 實驗目標152
9.2 實驗步驟154
9.3 實驗報告155
第10章 樣板實驗157
10.1 實驗題目157
10.2 分析設計158
10.3 工程操作163
10.4 獨立運行164
第11章 實驗內容166
11.1 實驗一166
11.2 實驗二167
11.3 實驗三170
11.4 實驗四174
11.5 實驗五175
11.6 階段測驗177
第12章 解題指導179
12.1 實驗一179
12.2 實驗二186
12.3 實驗三195
12.4 實驗四201
12.5 實驗五207
附錄215
附錄A實驗操作指南215
A.1BCB6安裝說明215
A.2BCB6操作介紹215
附錄BBCB6常見編譯錯誤222
附錄C網上提交在線判題系統(tǒng)(OPS)使用說明272
VIII
C++程序設計教程(第二版)實驗指導
VII
目 錄