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