《C++程序設(shè)計實(shí)用教程》利用C++語言介紹程序設(shè)計的基本知識,著重介紹C++語言的基本概念、算法與程序設(shè)計基礎(chǔ)、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體和共用體和文件等內(nèi)容。程序設(shè)計采用Visual C++作為編譯環(huán)境,強(qiáng)調(diào)案例式教學(xué),著重于基礎(chǔ)知識的講解,特別是編程思維的引導(dǎo)和練習(xí),有利于讀者掌握程序設(shè)計的基本方法和編程技巧。本書中的所有程序都按照結(jié)構(gòu)化程序設(shè)計方法采用縮進(jìn)格式編寫,并且每章配有各種類型的習(xí)題(答案見附錄D)和配套的實(shí)驗(yàn)內(nèi)容,以便于讀者鞏固所學(xué)的知識。
《C++程序設(shè)計實(shí)用教程》力求概念敘述準(zhǔn)確、嚴(yán)謹(jǐn),語言通俗、易懂。本書適合作為高等院校理工科計算機(jī)專業(yè)和相關(guān)專業(yè)的程序設(shè)計課程的教材,也可供廣大科技工作者和研究人員參考。
隨著我國高等教育規(guī)模的擴(kuò)大以及產(chǎn)業(yè)結(jié)構(gòu)調(diào)整的進(jìn)一步完善,社會對高層次應(yīng)用型人才的需求將更加迫切。各地高校緊密結(jié)合地方經(jīng)濟(jì)建設(shè)發(fā)展需要,科學(xué)運(yùn)用市場調(diào)節(jié)機(jī)制,合理調(diào)整和配置教育資源,在改革和改造傳統(tǒng)學(xué)科專業(yè)的基礎(chǔ)上,加強(qiáng)工程型和應(yīng)用型學(xué)科專業(yè)建設(shè),積極設(shè)置主要面向地方支柱產(chǎn)業(yè)、高新技術(shù)產(chǎn)業(yè)、服務(wù)業(yè)的工程型和應(yīng)用型學(xué)科專業(yè),積極為地方經(jīng)濟(jì)建設(shè)輸送各類應(yīng)用型人才。各高校加大了使用信息科學(xué)等現(xiàn)代科學(xué)技術(shù)提升、改造傳統(tǒng)學(xué)科專業(yè)的力度,從而實(shí)現(xiàn)傳統(tǒng)學(xué)科專業(yè)向工程型和應(yīng)用型學(xué)科專業(yè)的發(fā)展與轉(zhuǎn)變。在發(fā)揮傳統(tǒng)學(xué)科專業(yè)師資力量強(qiáng)、辦學(xué)經(jīng)驗(yàn)豐富、教學(xué)資源充裕等優(yōu)勢的同時,不斷更新教學(xué)內(nèi)容、改革課程體系,使工程型和應(yīng)用型學(xué)科專業(yè)教育與經(jīng)濟(jì)建設(shè)相適應(yīng)。計算機(jī)課程教學(xué)在從傳統(tǒng)學(xué)科向工程型和應(yīng)用型學(xué)科轉(zhuǎn)變中起著至關(guān)重要的作用,工程型和應(yīng)用型學(xué)科專業(yè)中的計算機(jī)課程設(shè)置、內(nèi)容體系和教學(xué)手段及方法等也具有不同于傳統(tǒng)學(xué)科的鮮明特點(diǎn)。
為了配合高校工程型和應(yīng)用型學(xué)科專業(yè)的建設(shè)和發(fā)展,急需出版一批內(nèi)容新、體系新、方法新、手段新的高水平計算機(jī)課程教材。目前,工程型和應(yīng)用型學(xué)科專業(yè)計算機(jī)課程教材的建設(shè)工作仍滯后于教學(xué)改革的實(shí)踐,如現(xiàn)有的計算機(jī)教材中有不少內(nèi)容陳舊(依然用傳統(tǒng)專業(yè)計算機(jī)教材代替工程型和應(yīng)用型學(xué)科專業(yè)教材),重理論、輕實(shí)踐,不能滿足新的教學(xué)計劃、課程設(shè)置的需要; 一些課程的教材可供選擇的品種太少; 一些基礎(chǔ)課的教材雖然品種較多,但低水平重復(fù)嚴(yán)重; 有些教材內(nèi)容龐雜,書越編越厚; 專業(yè)課教材、教學(xué)輔助教材及教學(xué)參考書短缺,等等,都不利于學(xué)生能力的提高和素質(zhì)的培養(yǎng)。為此,在教育部相關(guān)教學(xué)指導(dǎo)委員會專家的指導(dǎo)和建議下,清華大學(xué)出版社組織出版本系列教材,以滿足工程型和應(yīng)用型學(xué)科專業(yè)計算機(jī)課程教學(xué)的需要。本系列教材在規(guī)劃過程中體現(xiàn)了如下一些基本原則和特點(diǎn)。
。1) 面向工程型與應(yīng)用型學(xué)科專業(yè),強(qiáng)調(diào)計算機(jī)在各專業(yè)中的應(yīng)用。教材內(nèi)容堅(jiān)持基本理論適度,反映基本理論和原理的綜合應(yīng)用,強(qiáng)調(diào)實(shí)踐和應(yīng)用環(huán)節(jié)。
。2) 反映教學(xué)需要,促進(jìn)教學(xué)發(fā)展。教材規(guī)劃以新的工程型和應(yīng)用型專業(yè)目錄為依據(jù)。教材要適應(yīng)多樣化的教學(xué)需要,正確把握教學(xué)內(nèi)容和課程體系的改革方向,在選擇教材內(nèi)容和編寫體系時注意體現(xiàn)素質(zhì)教育、創(chuàng)新能力與實(shí)踐能力的培養(yǎng),為學(xué)生知識、能力、素質(zhì)協(xié)調(diào)發(fā)展創(chuàng)造條件。
。3) 實(shí)施精品戰(zhàn)略,突出重點(diǎn),保證質(zhì)量。規(guī)劃教材建設(shè)仍然把重點(diǎn)放在公共基礎(chǔ)課和專業(yè)基礎(chǔ)課的教材建設(shè)上; 特別注意選擇并安排一部分原來基礎(chǔ)比較好的優(yōu)秀教材或講義修訂再版,逐步形成精品教材; 提倡并鼓勵編寫體現(xiàn)工程型和應(yīng)用型專業(yè)教學(xué)內(nèi)容和課程體系改革成果的教材。
(4) 主張一綱多本,合理配套;A(chǔ)課和專業(yè)基礎(chǔ)課教材要配套,同一門課程可以有多本具有不同內(nèi)容特點(diǎn)的教材。處理好教材統(tǒng)一性與多樣化,基本教材與輔助教材,教學(xué)參考書,文字教材與軟件教材的關(guān)系,實(shí)現(xiàn)教材系列資源配套。
(5) 依靠專家,擇優(yōu)選用。在制訂教材規(guī)劃時要依靠各課程專家在調(diào)查研究本課程教材建設(shè)現(xiàn)狀的基礎(chǔ)上提出規(guī)劃選題。在落實(shí)主編人選時,要引入競爭機(jī)制,通過申報、評審確定主編。書稿完成后要認(rèn)真實(shí)行審稿程序,確保出書質(zhì)量。
繁榮教材出版事業(yè),提高教材質(zhì)量的關(guān)鍵是教師。建立一支高水平的以老帶新的教材編寫隊(duì)伍才能保證教材的編寫質(zhì)量和建設(shè)力度,希望有志于教材建設(shè)的教師能夠加入到我們的編寫隊(duì)伍中來。
21世紀(jì)高等學(xué)校計算機(jī)教育實(shí)用規(guī)劃教材編委會
聯(lián)系人: 魏江江 weijj@tup.tsinghua.edu.cn
前言
C++語言是目前被廣泛采用的程序設(shè)計語言,它語法簡潔、運(yùn)行高效。C++語言既可以用來進(jìn)行面向過程的程序設(shè)計,又可以用來進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計。本書利用C++語言講解面向過程的程序設(shè)計,內(nèi)容包括基本數(shù)據(jù)類型、基本控制結(jié)構(gòu)、函數(shù)、數(shù)組、結(jié)構(gòu)體、指針和鏈表等。本書適合學(xué)習(xí)程序設(shè)計語言的初學(xué)者,能夠讓讀者順利地從面向過程程序設(shè)計過渡到面向?qū)ο蟪绦蛟O(shè)計。本書適合大學(xué)本科理工類各專業(yè)學(xué)生學(xué)習(xí)C++程序設(shè)計語言,同時也適合自學(xué)C++語言的讀者使用。
本書的編者長期從事C/C++語言程序設(shè)計課程的教學(xué)工作,本書是在他們多年的教學(xué)講稿的基礎(chǔ)上整理而成。本書通過大量的經(jīng)典例題系統(tǒng)地介紹了C++語言的語法結(jié)構(gòu)和結(jié)構(gòu)化編程的方法。全書共分11章,第1章C++程序設(shè)計概述,主要介紹程序設(shè)計語言的發(fā)展歷史、 算法概述、算法的定義和特征、算法的表示、上機(jī)指導(dǎo); 第2章C++的基礎(chǔ)知識,主要介紹數(shù)據(jù)類型、常量、變量、C++的運(yùn)算符、表達(dá)式和C++的基本輸入/輸出; 第3章順序結(jié)構(gòu)程序設(shè)計,主要介紹C++語句概述、賦值語句、順序結(jié)構(gòu)程序設(shè)計舉例; 第4章選擇結(jié)構(gòu)程序設(shè)計,主要介紹關(guān)系運(yùn)算符和邏輯運(yùn)算符、if語句、if語句的嵌套、switch語句和條件運(yùn)算符; 第5章循環(huán)結(jié)構(gòu)程序設(shè)計,主要介紹基本的循環(huán)語句、循環(huán)語句的嵌套、break語句和continue語句; 第6章數(shù)組,主要介紹數(shù)組的含義、一維數(shù)組的定義與引用、二維數(shù)組的定義與引用、字符數(shù)組與字符串; 第7章函數(shù),主要介紹函數(shù)的定義與調(diào)用、函數(shù)的嵌套調(diào)用和遞歸調(diào)用、函數(shù)的重載、數(shù)組與函數(shù)、變量的存儲類型與作用域; 第8章編譯預(yù)處理,主要介紹宏的定義、文件包含預(yù)處理和條件編譯; 第9章結(jié)構(gòu)體和共用體,主要介紹結(jié)構(gòu)體類型、共用體類型、枚舉類型和typedef聲明類型; 第10章指針,主要介紹指針的概念、指針變量、指針與數(shù)組、指針與字符串、指針與函數(shù)、存儲空間的動態(tài)分配和釋放、引用、指針與結(jié)構(gòu)體、鏈表; 第11章文件,主要介紹文件的概念、文件流、文件的打開與關(guān)閉、文件的讀/寫、輸入和輸出出錯處理。本書每一章中都配有相應(yīng)的上機(jī)操作內(nèi)容。
本書文字精練、例題豐富,易于學(xué)生理解。本書中配有各種類型的練習(xí)(參考答案見附錄D),以便于學(xué)生學(xué)習(xí)和鞏固所學(xué)知識。此外,本書將教學(xué)內(nèi)容和實(shí)驗(yàn)結(jié)合到一起,使得本書具有實(shí)用性。本書的目標(biāo)是力求初學(xué)者能夠順利地邁進(jìn)程序設(shè)計的大門,成為一個程序設(shè)計愛好者。
本書所有的程序?qū)嵗荚赩isual C++6.0中調(diào)試過,讀者也可自由選用其他符合ANSI標(biāo)準(zhǔn)的C++系統(tǒng)編程環(huán)境作為學(xué)習(xí)工具。
本書由金世雙、曾衛(wèi)明擔(dān)任主編,徐明、張琳、徐琪擔(dān)任副主編。全書由金世雙組織、確定框架結(jié)構(gòu),并統(tǒng)編,本書中的所有章節(jié)內(nèi)容都是大家在教研活動中討論定稿的。本書在編寫過程中得到了兄弟高校從事高級語言程序設(shè)計的老師的關(guān)心和幫助,也得到了清華大學(xué)出版社和同行專家、學(xué)者和我們的學(xué)生的大力支持和幫助,在此一并表示衷心的感謝。此外,本書的編寫參考了大量的書籍和報刊,并從互聯(lián)網(wǎng)上參考了部分有價值的材料,在此向有關(guān)的作者、編者、譯者和網(wǎng)站表示衷心的感謝。
本書配有電子教案,并提供程序源代碼,以方便讀者自學(xué),請大家到清華大學(xué)出版社網(wǎng)站(http://www.tup.tsinghua.edu.cn)下載。
由于編者水平有限,書中難免有不妥之處,敬請讀者和專家批評、指正。
金世雙
2014年8月
第1章C++程序設(shè)計概述
1.1程序設(shè)計語言的發(fā)展歷史
1.2算法概述
1.2.1算法的定義和特征
1.2.2算法的表示
1.3上機(jī)指導(dǎo)
1.3.1上機(jī)的準(zhǔn)備工作
1.3.2Visual C++6.0的使用方法
習(xí)題1
實(shí)驗(yàn)1Visual C++6.0開發(fā)環(huán)境和程序的基本結(jié)構(gòu)實(shí)驗(yàn)
第2章C++的基礎(chǔ)知識
2.1C++基礎(chǔ)知識概述
2.2數(shù)據(jù)類型
2.2.1整數(shù)類型
2.2.2實(shí)數(shù)類型
2.2.3字符類型
2.2.4布爾類型
2.3常量
2.3.1字面常量
2.3.2符號常量
2.3.3常變量
2.4變量
2.4.1標(biāo)識符
2.4.2變量的定義與賦值
2.5C++的運(yùn)算符
2.6算術(shù)表達(dá)式
2.6.1運(yùn)算符的優(yōu)先級和結(jié)合性
2.6.2數(shù)據(jù)類型的轉(zhuǎn)換
2.6.3自增和自減運(yùn)算表達(dá)式
2.7賦值表達(dá)式
2.7.1賦值過程中的類型轉(zhuǎn)換
2.7.2復(fù)合賦值運(yùn)算符
2.8逗號表達(dá)式
2.9位運(yùn)算表達(dá)式
2.10C++的基本輸入/輸出
2.10.1輸入流/輸出流的基本操作
2.10.2輸入流/輸出流的控制符
習(xí)題2
實(shí)驗(yàn)2數(shù)據(jù)類型、運(yùn)算符和表達(dá)式實(shí)驗(yàn)
第3章順序結(jié)構(gòu)程序設(shè)計
3.1C++語句概述
3.2賦值語句
3.3順序結(jié)構(gòu)程序設(shè)計舉例
3.4順序結(jié)構(gòu)的應(yīng)用
習(xí)題3
實(shí)驗(yàn)3順序結(jié)構(gòu)程序設(shè)計實(shí)驗(yàn)
第4章選擇結(jié)構(gòu)程序設(shè)計
4.1選擇結(jié)構(gòu)程序設(shè)計概述
4.2關(guān)系運(yùn)算符和邏輯運(yùn)算符
4.2.1關(guān)系運(yùn)算符
4.2.2邏輯運(yùn)算符
4.3if語句
4.3.1簡單if語句
4.3.2if…else語句
4.3.3if語句的嵌套
4.4switch語句
4.5條件運(yùn)算符
4.6選擇結(jié)構(gòu)的應(yīng)用
習(xí)題4
實(shí)驗(yàn)4選擇結(jié)構(gòu)程序設(shè)計實(shí)驗(yàn)
第5章循環(huán)結(jié)構(gòu)程序設(shè)計
5.1循環(huán)結(jié)構(gòu)程序設(shè)計概述
5.2基本的循環(huán)語句
5.2.1for循環(huán)語句
5.2.2while循環(huán)語句
5.2.3do…while循環(huán)語句
5.3循環(huán)語句的嵌套
5.4break語句和continue語句
5.5循環(huán)語句程序舉例
5.6循環(huán)語句在圖形上的應(yīng)用
習(xí)題5
實(shí)驗(yàn)5循環(huán)結(jié)構(gòu)程序設(shè)計實(shí)驗(yàn)
第6章數(shù)組
6.1數(shù)組概述
6.1.1一維數(shù)組的定義與引用
6.1.2二維數(shù)組的定義與引用
6.2字符數(shù)組與字符串
6.2.1字符數(shù)組的定義與引用
6.2.2字符串
6.2.3字符數(shù)組處理函數(shù)
6.3數(shù)組在矩陣中的應(yīng)用
習(xí)題6
實(shí)驗(yàn)6數(shù)組實(shí)驗(yàn)
第7章函數(shù)
7.1函數(shù)的定義與調(diào)用
7.1.1函數(shù)的定義
7.1.2函數(shù)的調(diào)用
7.2函數(shù)的嵌套調(diào)用和遞歸調(diào)用
7.2.1函數(shù)的嵌套調(diào)用
7.2.2函數(shù)的遞歸調(diào)用
7.3函數(shù)的重載
7.4數(shù)組與函數(shù)
7.4.1數(shù)組元素作為函數(shù)參數(shù)
7.4.2數(shù)組名作為函數(shù)參數(shù)
7.5變量的存儲類型與作用域
7.5.1變量的存儲類型
7.5.2變量的作用域
習(xí)題7
實(shí)驗(yàn)7函數(shù)實(shí)驗(yàn)
第8章編譯預(yù)處理
8.1編譯預(yù)處理概述
8.2宏的定義
8.2.1不帶參數(shù)的宏定義
8.2.2帶參數(shù)的宏定義
8.3文件包含預(yù)處理
8.4條件編譯
習(xí)題8
實(shí)驗(yàn)8編譯預(yù)處理實(shí)驗(yàn)
第9章結(jié)構(gòu)體和共用體
9.1結(jié)構(gòu)體類型
9.1.1結(jié)構(gòu)體類型的定義與初始化
9.1.2結(jié)構(gòu)體變量的引用
9.1.3結(jié)構(gòu)體數(shù)組
9.1.4結(jié)構(gòu)體變量與函數(shù)
9.2共用體類型
9.2.1共用體類型的定義
9.2.2共用體變量的引用
9.3枚舉類型和typedef聲明類型
習(xí)題9
實(shí)驗(yàn)9結(jié)構(gòu)體和共用體實(shí)驗(yàn)
第10章指針
10.1指針的概念
10.2指針變量
10.2.1指針變量的定義
10.2.2指針變量的引用
10.2.3指針變量作為函數(shù)參數(shù)
10.3指針與數(shù)組
10.3.1指針與一維數(shù)組
10.3.2一維數(shù)組名作為函數(shù)參數(shù)
10.3.3指針與二維數(shù)組
10.3.4指針數(shù)組
10.4指針與字符串
10.4.1字符指針
10.4.2字符指針作為函數(shù)參數(shù)
10.4.3字符指針數(shù)組和指向指針的指針
10.5指針與函數(shù)
10.5.1函數(shù)指針
10.5.2指針函數(shù)
10.6存儲空間的動態(tài)分配和釋放
10.6.1new和delete運(yùn)算符
10.6.2void *指針
10.7引用
10.7.1引用類型概述
10.7.2引用變量作為函數(shù)參數(shù)
10.7.3返回引用的函數(shù)
10.8指針與結(jié)構(gòu)體
10.8.1結(jié)構(gòu)體指針
10.8.2結(jié)構(gòu)體指針作為函數(shù)參數(shù)
10.9鏈表
10.9.1鏈表的概念
10.9.2鏈表的基本操作
10.9.3鏈表的應(yīng)用
習(xí)題10
實(shí)驗(yàn)10指針實(shí)驗(yàn)
第11章文件
11.1文件的概念
11.2文件流
11.3文件的打開與關(guān)閉
11.3.1定義文件流對象
11.3.2打開磁盤文件
11.3.3關(guān)閉磁盤文件
11.4文件的讀/寫
11.4.1順序處理文件操作
11.4.2隨機(jī)處理文件操作
11.5輸入和輸出出錯處理
11.6文件的應(yīng)用
習(xí)題11
實(shí)驗(yàn)11文件實(shí)驗(yàn)
附錄A基本ASCII碼字符表
附錄B擴(kuò)展ASCII碼字符表
附錄C運(yùn)算符與結(jié)合性
附錄D習(xí)題答案