面向?qū)ο蟪绦蛟O(shè)計(jì)(呂鳳翥版)_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(呂鳳翥版)_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(呂鳳翥版)_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(呂鳳翥版)_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(呂鳳翥版)_第5頁(yè)
已閱讀5頁(yè),還剩483頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)前言第1章C+語(yǔ)言概述第2章數(shù)據(jù)類型和表達(dá)式第3章預(yù)處理和語(yǔ)句第4章函數(shù)和作用域第5章類和對(duì)象(一)第6章類和對(duì)象(二)第7章繼承性和派生類第8章多態(tài)性和虛函數(shù)第9章C+的I/O流庫(kù)內(nèi)容簡(jiǎn)介 面向?qū)ο蟮幕舅枷?C+語(yǔ)言的基本概念、基本語(yǔ)法和編程方法 C+語(yǔ)言的面向?qū)ο筇卣鱧類與對(duì)象k繼承與派生k多態(tài)性與虛函數(shù)學(xué)習(xí)方法 多練習(xí),掌握基本概念 多讀程序,學(xué)習(xí)編程方法與技巧 多上機(jī)實(shí)踐,加強(qiáng)動(dòng)手能力 多剖析范例,積累編程經(jīng)驗(yàn)教材及參考書目 C+語(yǔ)言基礎(chǔ)教程呂鳳翥著清華大學(xué)出版社1999 C+語(yǔ)言及其程序設(shè)計(jì)教程(修訂版)張國(guó)峰編著電子工業(yè)出版社1997 C+語(yǔ)言程序設(shè)計(jì)鄭莉等編著清

2、華大學(xué)出版社1999第1章C+語(yǔ)言概述 1.1C+的起源及特點(diǎn) 1.2面向?qū)ο蟮姆椒?1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言C+ 1.4C+程序的編輯、編譯和運(yùn)行 1.5C+的詞法及詞法規(guī)則 1.6C+程序的結(jié)構(gòu)1.1.1面向?qū)ο蟮挠蓙砗桶l(fā)展 機(jī)器語(yǔ)言(二進(jìn)制碼) 匯編語(yǔ)言 20世紀(jì)50年代中期,F(xiàn)ORTRAN語(yǔ)言 20世紀(jì)50年代中期,Algol語(yǔ)言在計(jì)算機(jī)語(yǔ)言發(fā)展史上具有劃時(shí)代的意義,引入了許多程序設(shè)計(jì)概念。如變量、數(shù)組、循環(huán)、分支等。提出塊(BeginEnd)思想,對(duì)數(shù)據(jù)進(jìn)行保護(hù),是一種初級(jí)封裝。1.1.1面向?qū)ο蟮挠蓙砗桶l(fā)展(續(xù)) 20世紀(jì)60年代中期,Simula 67語(yǔ)言面向?qū)ο笳Z(yǔ)言的鼻祖,

3、提出了對(duì)象、類的概念,并支持類的繼承。 20世紀(jì)70年代中期,Ada語(yǔ)言支持?jǐn)?shù)據(jù)抽象類型的最重要的語(yǔ)言之一,但不完全支持繼承。 20世紀(jì)70年代中期,Smalltalk語(yǔ)言最有影響的面向?qū)ο笳Z(yǔ)言之一,豐富了面向?qū)ο蟮母拍睢?20世紀(jì)80年代中期后出現(xiàn)C+等多種面向?qū)ο笳Z(yǔ)言1.1.2C+的起源和特點(diǎn)一、C+的起源 在C語(yǔ)言基礎(chǔ)上為支持面向?qū)ο蟮某绦蛟O(shè)計(jì)研制的一個(gè)通用目的的程序設(shè)計(jì)語(yǔ)言; 由AT&T貝爾實(shí)驗(yàn)室Bjarne Stroustrup博士開發(fā);二、C+的特點(diǎn) 與C兼容,既保持了C的簡(jiǎn)潔、高效和接近匯編的特點(diǎn),又比C更安全,結(jié)構(gòu)化程度更高; 既支持面向過程的程序設(shè)計(jì),又支持面向?qū)ο蟮?/p>

4、程序設(shè)計(jì);注意其兩面性1.2面向?qū)ο蟮姆椒ū仨毾妊芯渴挛?,而后才能研究過程。必須先知道一個(gè)事物是什么,而后才能覺察這個(gè)事物中所發(fā)生的變化。路德維希費(fèi)爾巴哈和德國(guó)古典文學(xué)的終結(jié)恩格斯1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)例例1.1:輸入任意短語(yǔ)或句子,計(jì)算該短語(yǔ)包含多少個(gè)字(word)和字符(character)。注意:輸入短語(yǔ)時(shí),必須在字和字之間只空一格。1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù))面向過程的方法#include #include void main() char ch; int wdcount,chcount; wdcount=1; chcount=0; printf(*:Ple

5、ase input any phrasen); while(ch=getche()!=r) chcount+;1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)) if(ch= ) wdcount+; printf(n*:The number of word is %dn,wdcount); printf(n*:The number of char is %dn,chcount);面向?qū)ο蟮姆椒?include #include class countpublic: 定義類公有成員1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)) count(); void process(); void display();

6、private: int wdcount,chcount;count:count() wdcount=1; chcount=0;void count:process()私有成員構(gòu)造函數(shù)成員函數(shù)數(shù)據(jù)成員1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)) char ch; cout*:Please input any phraseendl; while(ch=getche()!=r) chcount+; if(ch= ) wdcount+; coutendl;void count:display() printf(n*:The number of word is %dn,wdcount);1.2.1面向過

7、程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)) printf(n*:The number of char is %dn,chcount);void main() count A; A.process(); A.display();運(yùn)行結(jié)果*Please input any phrase.I am a teacher*:The number of word is 4*:The number of char is 15定義對(duì)象調(diào)用公有成員函數(shù)1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù)) 是一種數(shù)學(xué)思維或計(jì)算機(jī)思維方法,與人們認(rèn)識(shí)世界的方法不同 以不穩(wěn)定的、多變的“過程”和“操作” 為中心來構(gòu)造系統(tǒng) 可重用性較差 是建立

8、在認(rèn)識(shí)方法學(xué)基礎(chǔ)上的一項(xiàng)技術(shù)科學(xué),比較自然地模擬了人類認(rèn)識(shí)客觀世界的方式; 以相對(duì)穩(wěn)定的“對(duì)象”和“數(shù)據(jù)結(jié)構(gòu)”為中心來構(gòu)造系統(tǒng) 可重用性較好面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)1.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù))面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)P1P2P3P4P5O1O2O3O4O5P61.2.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)(續(xù))面向過程程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)P1P2P3P5O1O2O3O4O5P6O41.2.2抽象在面向?qū)ο笾械淖饔靡?、抽象的概?抽象代表著一個(gè)對(duì)象的本質(zhì)特征,這個(gè)特征將這個(gè)對(duì)象與所有其他種類的對(duì)象區(qū)別開來; 抽象是通過從特定的實(shí)例中抽取共同的性質(zhì)以形成一般化的概念的過程;

9、 抽象具有層次;汽車輪船飛機(jī)交通工具1.2.2抽象在面向?qū)ο笾械淖饔?續(xù))二、面向?qū)ο蟪橄蟮脑恚嫦驅(qū)ο笥?jì)算的本質(zhì))數(shù)據(jù)抽象、行為共享、進(jìn)化、確定性1、數(shù)據(jù)抽象為程序員提供了一種對(duì)數(shù)據(jù)和為操作這些數(shù)據(jù)所需要的算法的抽象;是面向?qū)ο蠓椒ǖ暮诵?,包括:模塊化:構(gòu)成了面向?qū)ο笥?jì)算的本質(zhì);信息隱藏:將一個(gè)模塊的細(xì)節(jié)部分對(duì)用戶隱藏起來,用戶只能通過一個(gè)受保護(hù)的接口來訪問某個(gè)模塊,而不能直接訪問一個(gè)模塊內(nèi)部的細(xì)節(jié);類公有成員1.2.2抽象在面向?qū)ο笾械淖饔?續(xù))2、行為共享 行為是由實(shí)體的外部接口定義的 行為共享指許多實(shí)體具有相同的接口,可增加系統(tǒng)的靈活性; 支持行為共享的方式k分類與層次分類k多態(tài)與繼

10、承對(duì)象公有成員函數(shù)名1.2.2抽象在面向?qū)ο笾械淖饔?續(xù))3、進(jìn)化需求進(jìn)化(虛函數(shù))進(jìn)化式的問題求解(繼承的構(gòu)造函數(shù))4、確定性 確保每個(gè)行為項(xiàng)都有一個(gè)正確的解釋,系統(tǒng)不會(huì)因不能響應(yīng)某一行為而失??; 確定性與類型的正確性有關(guān);1.2.3面向?qū)ο笥?jì)算的基本特征面向?qū)ο笙到y(tǒng)的三要素:對(duì)象、類和繼承;一、對(duì)象1、概念上對(duì)象是代表著正在創(chuàng)建的系統(tǒng)中的一個(gè)實(shí)體;2、實(shí)現(xiàn)形式上對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體;3、對(duì)象的定義狀態(tài):對(duì)象的狀態(tài)由這個(gè)對(duì)象的屬性和這些屬性的當(dāng)前值決定。屬性是靜態(tài)的,當(dāng)前值是動(dòng)態(tài)的;一個(gè)對(duì)象具有狀態(tài)、行為和標(biāo)識(shí)。1.2.3面向?qū)ο笥?jì)算的基本特征(續(xù))行為:一個(gè)對(duì)象如何以狀態(tài)

11、變化和消息傳遞的形式進(jìn)行作用和對(duì)外界進(jìn)行反應(yīng)。一個(gè)對(duì)象的行為代表了這個(gè)對(duì)象的外部可見的和可測(cè)試的活動(dòng);一個(gè)對(duì)象的狀態(tài)代表著它的行為的累積結(jié)果;標(biāo)識(shí):標(biāo)識(shí)是一個(gè)對(duì)象固有的一種特性,該特性將這個(gè)對(duì)象與其他對(duì)象區(qū)別開來;屬性1屬性2.屬性n值11值21.值n1值12值22.值n2對(duì)象1行為值11值21.值n1值12值22.值n2對(duì)象2行為1.2.3面向?qū)ο笥?jì)算的基本特征(續(xù))4、對(duì)象的分類實(shí)體對(duì)象界面對(duì)象控制對(duì)象按作用分類存儲(chǔ)信息的對(duì)象支持系統(tǒng)的主要功能5、對(duì)象的確認(rèn) 發(fā)明對(duì)象:主要是控制對(duì)象; 發(fā)現(xiàn)對(duì)象:主要是實(shí)體對(duì)象或界面對(duì)象;二、類1、什么是類1.2.3面向?qū)ο笥?jì)算的基本特征(續(xù))類是創(chuàng)建對(duì)象

12、的樣板,它包含著所創(chuàng)建對(duì)象的狀態(tài)描述和方法的定義。類的完整描述包含了外部接口和內(nèi)部算法以及數(shù)據(jù)結(jié)構(gòu)的形式;2、類是對(duì)象的抽象及描述類中包含生成對(duì)象的具體方法,由一個(gè)類所創(chuàng)建的對(duì)象稱為該類的實(shí)例;3、類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)類是所有對(duì)象的共同的行為和不同的狀態(tài)的集合體;三、繼承繼承提供了創(chuàng)建新類的一種方法,它的本質(zhì)特征是行為共享;屬性屬性1 1屬性屬性2 2屬性屬性n n行為行為1 1行為行為2 2行為行為m m值值1111值值2121值值n1n1值值1212值值2222值值n2n2行為行為1 1值值1111值值2121值值n1n1行為行為m m值值1212值值2222值值n2n2對(duì)象對(duì)象1 1對(duì)

13、象對(duì)象2 2對(duì)象對(duì)象k k對(duì)象對(duì)象p p類類類與對(duì)象的關(guān)系類與對(duì)象的關(guān)系1.2.3面向?qū)ο笥?jì)算的基本特征(續(xù))1.3.1C+語(yǔ)言中的抽象支持 控制抽象:用于排列任意動(dòng)作的順序的一種方法;三種語(yǔ)句控制結(jié)構(gòu):順序、循環(huán)、分支 過程抽象(面向過程):對(duì)一組輸入數(shù)據(jù)的一個(gè)計(jì)算動(dòng)作和產(chǎn)生的輸出結(jié)果; 數(shù)據(jù)抽象(面向?qū)ο螅侯愂菍?shí)現(xiàn)抽象數(shù)據(jù)類型的工具;1.3.2C+對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)方法的支持 C+支持?jǐn)?shù)據(jù)封裝(數(shù)據(jù)抽象)C+中,類是支持?jǐn)?shù)據(jù)封裝的工具,對(duì)象則是數(shù)據(jù)封裝的實(shí)現(xiàn); C+中包含有私有、公有和保護(hù)成員每個(gè)可能的消息對(duì)應(yīng)一個(gè)相應(yīng)的方法,方法通過函數(shù)來定義; C+中通過發(fā)送消息來處理對(duì)象 C+中允許

14、友元破壞封裝性 C+中允許函數(shù)名和運(yùn)算符重載 C+支持繼承性 C+支持動(dòng)態(tài)聯(lián)編1.3.3C+對(duì)C語(yǔ)言的改進(jìn) 增加了新的運(yùn)算符::,new,delete等; 改進(jìn)了類型系統(tǒng),增加了安全性; 引進(jìn)了引用概念; 允許函數(shù)重載,允許設(shè)置缺省參數(shù),提高了編程的靈活性; 引進(jìn)了內(nèi)聯(lián)函數(shù),提高了程序的效率; 可以根據(jù)需要隨時(shí)對(duì)變量進(jìn)行說明;1.4C+程序的編輯、編譯和運(yùn)行一、編輯:源文件的擴(kuò)展名為.cpp二、編譯1、預(yù)處理過程詞法分析:?jiǎn)卧~語(yǔ)法分析:構(gòu)造程序的格式符號(hào)表:程序中的各種符號(hào)及其屬性錯(cuò)誤處理程序:生成目標(biāo)代碼:目標(biāo)文件擴(kuò)展名.obj2、編譯 過程3、連接過程:可執(zhí)行文件擴(kuò)展名.exe三、運(yùn)行1.

15、4C+程序的編輯、編譯和運(yùn)行(續(xù))源程序.cpp目標(biāo)文件.obj可執(zhí)行文件.exe編譯器連接器磁盤中的#include文件C+庫(kù)文件.LIB1.5.1C+的字符集大小寫的英文字母:az,AZ 數(shù)字字符:09 特殊字符空格!#%&*_+=-/,“;.,()1.5.2詞法記號(hào)1、關(guān)鍵字(保留字)表1-1C+的關(guān)鍵字autoboolbreakcasecatchcharclassconstconst_cast continue defaultdeletedodoubledynamic_cast else enumexplicitexternfalsefloatforfriendgotoifin

16、lineintlongmutablenewoperator privateprotected publicregisterreinterpret_castreturnshortsignedsizeofstaticstatic_cast structswitchtemplate thisthrowtruetrytypedef typeidtypename unionunsigned virtualvoidvolatile while1.5.2詞法記號(hào)(續(xù))2、標(biāo)識(shí)符組成規(guī)則:以字母或下劃線開始,其后跟零個(gè)或多個(gè)字母、數(shù)字或下劃線;不能以數(shù)字開始正確標(biāo)識(shí)符:Result, DoubleList,_

17、first, first_錯(cuò)誤標(biāo)識(shí)符:1first標(biāo)識(shí)符的長(zhǎng)度任意(受編譯器限制);區(qū)分字母的大小寫;不能使用系統(tǒng)的保留字;例如:ADD, Add, add1.5.2詞法記號(hào)(續(xù))3、運(yùn)算符單目雙目三目運(yùn)算符5、分隔符(),分隔符:4、各種文字?jǐn)?shù)字字符文字串文字文字布爾文字;1.5.3空白一、空白包括:空格、制表符、換行符、注釋功能:指示詞法記號(hào)的開始和結(jié)束位置;二、注釋 /*/ /1.6C+程序的結(jié)構(gòu)一、C+示范程序#include void main() coutHello world! endl;二、C+程序的組成 預(yù)處理命令 輸入輸出 函數(shù) 語(yǔ)句 變量 其他I/O流庫(kù),提供所有的輸入輸

18、出操作cout:流類對(duì)象:提取符例如:cinPlease inputtwo integers:;cinab;endl:換行;第2章數(shù)據(jù)類型和表達(dá)式 2.1基本數(shù)據(jù)類型 2.2常量和變量 2.3數(shù)組類型 2.4枚舉類型 2.5指針和引用 2.6運(yùn)算符 2.7表達(dá)式 2.8類型定義2.1基本數(shù)據(jù)類型一、基本數(shù)據(jù)類型整型int浮點(diǎn)型(實(shí)型)字符型char基本數(shù)據(jù)類型邏輯型bool空值型void單精度浮點(diǎn)數(shù)float雙精度浮點(diǎn)數(shù)double用于函數(shù)和指針2.1基本數(shù)據(jù)類型(續(xù))二、數(shù)據(jù)類型修飾符signed:有符號(hào)unsigned:無符號(hào)short:短型long:長(zhǎng)型說明:3) long修飾符還適用于

19、雙精度浮點(diǎn)數(shù);2) 上述修飾符均可用于整型和字符型;1) 類型修飾符可以修飾除void、bool類型以外的其他類型;2.1基本數(shù)據(jù)類型(續(xù))三、基本數(shù)據(jù)類型列表表2-1C+的基本數(shù)據(jù)類型類類型型名名字字寬寬(字字節(jié)節(jié))范范圍圍boolfalse, truechar1-128127signed char1-128127unsigned char10255short int2-3276832767signed short int2-3276832767unsigned short int2065535int4-21474836482147483647signed int4-214748364821

20、47483647unsigned int404294967295long int4-21474836482147483647signed long int4-21474836482147483647unsigned long int404294967295float43.4E 10-383.4E 1038double81.7E 10-3081.7E 10308long double103.4E 10-49323.4E 1049322.1基本數(shù)據(jù)類型(續(xù))說明:1) 表中的int可以省略,即在int之前有修飾符出現(xiàn)時(shí),可以省略關(guān)鍵字int;2) 單精度類型float、雙精度類型double、長(zhǎng)精

21、度類型long double統(tǒng)稱浮點(diǎn)類型;3) char類型和各種int類型統(tǒng)稱整型類型;char類型變量在內(nèi)存中以它的ASCII碼值的形式存儲(chǔ);4) 字寬(字節(jié))取決于操作系統(tǒng)和編譯器的實(shí)現(xiàn),可用sizeof驗(yàn)證;2.2.1常量一、整型常量(無小數(shù)部分)1、表示方法 十進(jìn)制 八進(jìn)制 十六進(jìn)制2、十進(jìn)制表示 由09的數(shù)字組成 不能以0開始 無前綴 例:132, -3453、八進(jìn)制表示 由0 7的數(shù)字組成 以0為前綴 例:010, -05364、十六進(jìn)制表示 由09的數(shù)字及A F的字母(大小寫均可)組成 以0 x或0X為前綴 例:0 x7A, -0X3de2.2.1常量(續(xù))5、說明:1) 長(zhǎng)整

22、型用L(或l)做后綴表示。例如:32765L,793l;2) 無符號(hào)型用U(或u)做后綴表示。例如:4352U,3100u;3) unsigned long型用后綴U(或u)和L(或l)一起表示,L與U的先后順序無關(guān)。例如:49321ul,37825LU,41152Lu;4) 無后綴時(shí),整型常量類型按如下順序確定:int, (unsigned), long, unsigned long十進(jìn)制時(shí)無2.2.1常量(續(xù))二、浮點(diǎn)型常量 由整數(shù)部分和小數(shù)部分構(gòu)成; 只有十進(jìn)制表示; 一般表示形式(小數(shù)表示形式):k整數(shù)部分與小數(shù)部分可以省去一部分,但不能全部省去;k例如:5.,.25,4.072.2.

23、1常量(續(xù)) 科學(xué)表示形式:k在小數(shù)表示法后面加E(或e)表示指數(shù);k例如:23.5E6,.032E-5,.3e10k指數(shù)部分可正可負(fù),但必須為整數(shù); 浮點(diǎn)常量的缺省數(shù)據(jù)類型為double型; 后綴F(或f)表示float類型; 后綴l(或l)表示long double類型;2.2.1常量(續(xù))三、字符常量 由一對(duì)單引號(hào)括起的一個(gè)字符表示; 其值為所括起字符在ASCII表中的編碼; 所括起字符的表示方法:k圖形表示法該方法適用于有圖形符號(hào)的可打印字符;例如:A,a,*k轉(zhuǎn)義序列表示法該方法適用于所有字符,尤其是無圖形符號(hào)的不可打印字符;2.2.1常量(續(xù))K轉(zhuǎn)義序列表示方法:以反斜線()開頭,

24、后跟字符的ASCII碼值;K八進(jìn)制表示:ddd;例如:101K十六進(jìn)制表示:xhh;例如:x41表2-2C+中常用轉(zhuǎn)義序列符符號(hào)含義a響鈴n換行符r回車符t水平制表符(tab 鍵)b退格符(backspace 鍵)反斜線單引號(hào)雙引號(hào)0空字符2.2.1常量(續(xù))四、布爾常量有兩個(gè)值:true和false;五、字符串常量(串常量,字符串) 一對(duì)雙引號(hào)括起的字符序列,字符序列可以包含空格、轉(zhuǎn)義序列或任何其他字符,這些字符不一定是C+字符集中的字符,只要C+編譯器支持即可;例如:This is a string; 串常量與字符常量的區(qū)別:2.2.1常量(續(xù)) 由一個(gè)字符型變量存放 由一維數(shù)組存放字符常

25、量串常量 用單引號(hào)括起 用雙引號(hào)括起 字符串有一個(gè)結(jié)束符,該結(jié)束符用0表示 字符常量a在內(nèi)存中占用一個(gè)字節(jié) 字符串常量a在內(nèi)存中占用兩個(gè)字節(jié) 可進(jìn)行加、減法運(yùn)算 可進(jìn)行連接、拷貝運(yùn)算2.2.1常量(續(xù))六、符號(hào)常量 用來表示C+中的常量,即用一個(gè)與常量相關(guān)的標(biāo)識(shí)符來替代常量; 優(yōu)點(diǎn):增加可讀性,增強(qiáng)可維護(hù)性;例如:PI表示3.1415926 定義方法:使用類型說明符const;例如:const int size=80; 定義的符號(hào)常量必須初始化; 一個(gè)符號(hào)常量可看作是一個(gè)只讀變量,由const定義的常量的值不可以改變;Line1:#include Line2:const double pi=3

26、.1415;Line3:const double r;Line4:void main()Line5:Line6: double perimeter,area;Line7: perimeter=2*pi*r;Line8: pi=3.14;Line9: area=pi*r*r;Line10: coutperimeter, areaendl;Line11:2.2.1常量(續(xù))const double r=3.2;錯(cuò)誤錯(cuò)誤錯(cuò)誤,不能修改錯(cuò)誤,不能修改pi的值的值地址值2.2.2變量一、變量的三個(gè)基本要素名字類型值三要素?cái)?shù)據(jù)值地址值int c;c=5;內(nèi)存5.c地址值1000H變量類型變量名數(shù)據(jù)值二、變

27、量的定義 可以在程序中隨時(shí)定義變量,只要在該變量被使用前定義即可; 定義格式:;例如:int a,b,c;double x,y,z;2.2.2變量(續(xù)) 同一程序塊內(nèi)不可以定義同名變量; 初始值k變量定義時(shí)可賦初始值;k聲明格式:數(shù)據(jù)類型 標(biāo)識(shí)符1(初始值1), ,標(biāo)識(shí)符n(初始值n);數(shù)據(jù)類型 標(biāo)識(shí)符1=初始值1, ,標(biāo)識(shí)符n=初始值n;k例如:double price=15.5;int size=100;k未被初始化的變量的值或者是默認(rèn)值,或者是無效值,由變量類型決定; 變量可被賦值,由變量名標(biāo)識(shí);2.3數(shù)組類型數(shù)目固定、類型相同的若干個(gè)變量的有序集合;2.3.1數(shù)組的定義1、格式 ;說明

28、: 方括號(hào)( )表示數(shù)組的維; 某維的大小必須是大于1的常量表達(dá)式;2、示例 int a3; char b35; const int size=80; int msize;2.3.2數(shù)組的賦值1、數(shù)組元素的表示 下標(biāo)表示:;說明:k為常量表達(dá)式;k下標(biāo)從0開始;k各個(gè)元素在內(nèi)存中按其下標(biāo)的升序順序連續(xù)存放; 指針表示:2.3.2數(shù)組的賦值(續(xù))2、數(shù)組元素賦初值 利用初始值表(由一對(duì)花括號(hào)括起來的若干數(shù)據(jù)項(xiàng)組成)實(shí)現(xiàn); 數(shù)組元素的個(gè)數(shù)要大于等于初始值表中數(shù)據(jù)項(xiàng)的個(gè)數(shù); 例如:int a5=1,2,3,4,5;int a4=5,4;int b23=1,2,3,4,5,6;int b23=1,2,

29、3,4,5,6;int c232=5,4,3,2,1,0;3、數(shù)組元素的賦值例如:int m3;m0=5;m1=3;m2=1;2.3.3字符數(shù)組說明: 字符數(shù)組是指數(shù)組元素是char類型的數(shù)組; 注意字符常量、字符數(shù)組與字符串常量的區(qū)別;例如:char s14=a, b, c, d;字符數(shù)組char s25=a, b, c, d, 0;字符數(shù)組(字符串常量)等價(jià)于char s25=abcd;char s35=abcde; char s3=abcde;2.4枚舉類型枚舉類型是若干個(gè)有名字的整型常量的集合;2.4.1枚舉聲明和枚舉變量一、枚舉聲明 enum ; 由若干個(gè)枚舉符組成,多個(gè)枚舉符之間用

30、逗號(hào)分隔; 枚舉符是用標(biāo)識(shí)符表示的整型常量,又稱枚舉常量; 枚舉常量的值默認(rèn)為最前邊的一個(gè)為0,其后的值依次加1; 枚舉常量的值也可顯式定義,未顯式定義的則在前一個(gè)值的基礎(chǔ)上加1;2.4.1枚舉聲明和枚舉變量(續(xù))二、枚舉變量 例如:enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat; enum day Sun=7,Mon=1, Tue,Wed,Thu,Fri,Sat; 枚舉變量的值不一定互不相同; enum ; 多個(gè)枚舉變量之間用逗號(hào)分隔; 例如:enum day d1,d2,d3;enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat d1,d2,d

31、3;2.4.2枚舉變量的值 其值是該枚舉變量所屬的枚舉聲明的枚舉表的某一個(gè)枚舉符; 利用枚舉符所表示的整型值給枚舉變量賦值時(shí),需要進(jìn)行類型強(qiáng)制; 例如:d1=Sun;d2=Sat;d3=(enum day)4;2.5.1指針1、什么是指針 指針是用來存放某個(gè)變量的地址值的一種變量; 指針的類型是它所指向變量的類型; 指針本身數(shù)據(jù)值的類型是unsigned long int型; 例如:int a(5);int *p=&a;內(nèi)存1000H5.a地址值1000H3000Hp2.5.1指針(續(xù))2、如何定義指針 例如:int *pi;char (*pa)3;float *pl; int (*p

32、f)();char *pc; int *pp; *, *,;3、指針的賦值(內(nèi)存地址值) 指針必須被賦值后才可使用; 一般變量、數(shù)組元素、結(jié)構(gòu)成員的地址值為變量名前加運(yùn)算符&; 數(shù)組的地址值用該數(shù)組名表示;2.5.1指針(續(xù)) 函數(shù)的地址值用該函數(shù)的名字表示; 例如:int a,b10;double sin(double x);int *p=&a,*p=&b3; double (*pf)();int a10,*p=a; pf=sin;3、指針的運(yùn)算 賦值運(yùn)算。例如:int a,*p=&a,*q;q=p; 一個(gè)指針可以加上或減去一個(gè)整數(shù)值; 在一定條件下(指向同一

33、數(shù)組的不同元素),兩個(gè)指針可以相減; 在一定條件下(指向同一數(shù)組元素),兩個(gè)指針可以比較;a與&a0相同2.5.2指針和數(shù)組1、C+中指針與數(shù)組的關(guān)系 C+通過指針訪問數(shù)組中的每個(gè)元素; 數(shù)組不能參與表達(dá)式求值。在運(yùn)算表達(dá)式中,一個(gè)標(biāo)識(shí)數(shù)組對(duì)象的操作數(shù)在運(yùn)算表達(dá)式中被自動(dòng)轉(zhuǎn)換為一個(gè)指向數(shù)組對(duì)象的第一個(gè)元素對(duì)象的指針值。2、一維數(shù)組的指針表示法 C+中規(guī)定:任何一個(gè)數(shù)組的名字是一個(gè)常量指針,其值是該數(shù)組的首元素的地址值; 例如:int a5;數(shù)組表示法:ai,i=0,1,2,3,4指針表示法:*(a+i)2.5.2指針和數(shù)組(續(xù))3、二維數(shù)組的指針表示法 int b25; 數(shù)組表示法:b

34、iji=0,1; j=0,1,2,3,4 指針表示法:*(*(b+i)+j)*(bi+j)(*(b+i)j(&b00+5*i+j)4、三維數(shù)組的指針表示法(同二維)5、示例2.5.2指針和數(shù)組(續(xù))例2.1:分析下列程序的輸出結(jié)果。#include void main() static int a5=5,4,3,2,1; int i,j; i=a0+a4; j=*(a+2)+*(a+4); coutiendljendl;輸出644a15a03a22a31a4aa+2a+42.5.2指針和數(shù)組(續(xù))例2.2:分析下列程序的輸出結(jié)果。#include void main() static

35、char s1=abcde,s25=m, n, p, q, 0; char *ps=s1; couts1 or s2endl; couts21s22s13s14endl; cout*ps*(ps+2)*(ps+4)*ps+2endl;輸出abcde or mnpqnpdeace99a的ASCII碼值為0 x61,即972.5.2指針和數(shù)組(續(xù))例2.3:分析下列程序的輸出結(jié)果。#include void main() static char t35=abcd, efgh, ijkl, mnop, qrst, uvwx; coutt123*(t12+3)*(*(*(t+1)+2)+3) *(*(

36、t1+2)+3)endl; cout*tt*(*(t+1)+1)tt02 t*t+1endl;輸出xxxxabcdqrstijklbcd2.5.3引用 標(biāo)識(shí)對(duì)象的一種機(jī)制; 對(duì)對(duì)象存儲(chǔ)地址的抽象,但引用不是值; 引用有類型; 變量的別名;1、定義格式 &();或 &=;2、初始化與賦值 定義引用時(shí)必須初始化; 可以將一個(gè)引用賦給某個(gè)變量; 引用可被賦值;2.5.3引用(續(xù))示例:int a=3;int &m=a;int n=m;int *p=&m;m=m+5;3a8pm3n定義引用并初始化將引用賦值給變量a=8,對(duì)引用的操作就是對(duì)被引用者的操作3、引用的功能 用

37、做函數(shù)的參數(shù)或函數(shù)的返回值; 函數(shù)不能返回對(duì)局部對(duì)象的引用;2.5.3引用(續(xù))示例:int& f(int index,int a) int r=aindex; return r;錯(cuò),r是局部對(duì)象4、指針與引用的區(qū)別 指針通過地址間接訪問某個(gè)變量,引用通過別名直接訪問某個(gè)變量; 引用必須初始化,一旦被初始化后不得再作為其他變量的別名;正確:int &r=aindex;2.5.3引用(續(xù))例2.4:分析下列程序的輸出結(jié)果。#include void main() int val(5); int &refv=val; refv=refv+5; coutvalendl; in

38、t *p=&refv,val1(refv); cout*ptval1endl;輸出1010102.5.3引用(續(xù))例2.5:分析下列程序的輸出結(jié)果。#include int& f(int index,int a) int &r=aindex; return r;void main() int a=1,3,5,7,9; f(2,a)=55; for(i=0;i5;i+) coutai、=、=、=、!= 前四種優(yōu)先級(jí)高于后兩種;2.6.3邏輯運(yùn)算符 雙目運(yùn)算符:&、| 優(yōu)先級(jí):&、|、! 單目運(yùn)算符:!2.6.4位操作運(yùn)算符1、邏輯位運(yùn)算符 單目邏輯位運(yùn)算符

39、: 雙目邏輯位運(yùn)算符:&、|、 雙目邏輯位運(yùn)算符的優(yōu)先級(jí):&、|、;2、移位運(yùn)算符 雙目運(yùn)算符:; 時(shí)移掉的位被丟棄,左邊移出的空位補(bǔ)0或符號(hào)位;2.6.5賦值運(yùn)算符 簡(jiǎn)單賦值運(yùn)算符:= 復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=、&=、|=、=、=2.6.6其他運(yùn)算符1、三目運(yùn)算符 格式:d1?d2:d3 功能:先計(jì)算d1,若其非零,表達(dá)式的值為d2的值,否則為d3的值; 表達(dá)式類型:d2和d3中類型較高者的類型;2、逗號(hào)運(yùn)算符 格式:d1,d2,dn 表達(dá)式的值和類型:由最后一個(gè)表達(dá)式確定; 優(yōu)先級(jí)在所有運(yùn)算符中最低;3、sizeof運(yùn)算符2.6.6其他運(yùn)算符(續(xù)

40、) 格式: 功能:返回其后的類型說明符或表達(dá)式所表示的數(shù)在內(nèi)存中所占的字節(jié);4、單目運(yùn)算符&和* &:取地址; *:用在指針名前,表示取指針的內(nèi)容;5、強(qiáng)制類型運(yùn)算符sizeof();或sizeof(); 格式: ();或 () ;2.6.6其他運(yùn)算符(續(xù)) 強(qiáng)制類型轉(zhuǎn)換可將高類型轉(zhuǎn)換為低類型,是一種不安全的轉(zhuǎn)換;示例:double f(3.85);int h;h=int(f); 該轉(zhuǎn)換是暫時(shí)的,一次性的;示例:int a(3),m;double b;b=3.56+double(a);m=a+5;2.6.7運(yùn)算符和優(yōu)先級(jí)和結(jié)合性 P46,表表達(dá)式的種類 由運(yùn)算符

41、和操作數(shù)組成的式子; 常見的表達(dá)式k算術(shù)表達(dá)式;k邏輯表達(dá)式;k關(guān)系表達(dá)式;k賦值表達(dá)式;k條件表達(dá)式;k逗號(hào)表達(dá)式;2.7.1表達(dá)式的種類(續(xù)) 注意事項(xiàng):k連續(xù)的兩個(gè)運(yùn)算符之間用空格分隔;k可用括號(hào)來改變運(yùn)算符優(yōu)先級(jí);k雙目運(yùn)算符的左右可以用空格符和操作數(shù)分開;k過長(zhǎng)的表達(dá)式可分成幾個(gè)表達(dá)式;2.7.2表達(dá)式的值和類型一、確定表達(dá)式的值二、表達(dá)式求值方法與確定類型的方法 先確定運(yùn)算符的功能; 確定計(jì)算順序:先考慮優(yōu)先級(jí),再考慮結(jié)合性;2.7.2表達(dá)式的值和類型(續(xù))例2.6:分析下列程序的輸出結(jié)果(算術(shù)表達(dá)式)。#include void main() unsigned a(0 xab),

42、b(20); a&=b; a=a; coutatby; x=y; x|=yy; y&=x+1; coutxtyendl;輸出:020-1 12.7.2表達(dá)式的值和類型(續(xù))例2.7:分析下列程序的輸出結(jié)果(關(guān)系表達(dá)式)。#include void main() char x(m),y(n); int n; n=xy; coutnendl; n=x=y-1; coutn3)+(y-x=1); coutnendl; 輸出:1132.7.2表達(dá)式的值和類型(續(xù))例2.8:分析下列程序的輸出結(jié)果(邏輯表達(dá)式)。#include void main() int x,y,z; x=y=z=

43、1; -x&+y&+z; coutxtytzendl; +x&+y&+z; coutxtytzendl; +x&y-|+z; coutxtytzendl; 輸出:011122212注意邏輯表達(dá)式的求值方法2.7.2表達(dá)式的值和類型(續(xù))例2.9:分析下列程序的輸出結(jié)果(條件表達(dá)式)。#include void main() int a(3),b(4),c; c=ab?+a:+b; couta,b,cendl; c=a-b?a+b:a-3?b:a; couta,b,cendl;3,5,53,5,8注意三目運(yùn)算符的判斷條件輸出2.7.2表達(dá)式的值和類型(續(xù))

44、例2.10:分析下列程序的輸出結(jié)果(賦值表達(dá)式)。#include void main() int x(1),y(3),z(5); x+=y*=z-=2; coutx, y, zendl; x*=y/=z-=x; coutx, y, zendl; x=y=z=2; z=(x+=2)+(y+=4)+2; coutx, y“, zendl; 輸出:10,9,3-10,-1,-74,6,122.7.2表達(dá)式的值和類型(續(xù))例2.11:分析下列程序的輸出結(jié)果(逗號(hào)表達(dá)式)。#include void main() int a,b,c; a=1,b=2,c=a+b+3; couta, b, cendl;

45、 c=(a+,a+=b,a+b); couta, b, cendl;1,2,64,2,6輸出2.7.3表達(dá)式中的類型轉(zhuǎn)換一、隱含轉(zhuǎn)換 雙目運(yùn)算中操作數(shù)的類型轉(zhuǎn)換; 是一種保值轉(zhuǎn)換,轉(zhuǎn)換類型由低到高; 轉(zhuǎn)換規(guī)則:int unsigned long unsigned long doubleshort,charfloat二、強(qiáng)制轉(zhuǎn)換 顯式強(qiáng)制轉(zhuǎn)換(通過強(qiáng)制轉(zhuǎn)換運(yùn)算符實(shí)現(xiàn));2.7.3表達(dá)式中的類型轉(zhuǎn)換(續(xù)) 隱式強(qiáng)制轉(zhuǎn)換:k在賦值表達(dá)式中,當(dāng)左值(賦值運(yùn)算符左邊的值)和右值(賦值運(yùn)算符右邊的值) 的類型不同時(shí),一律將右值類型強(qiáng)制轉(zhuǎn)換為左值的類型;k在函數(shù)有返回值的調(diào)用中,將return后面的表達(dá)式的

46、類型強(qiáng)制轉(zhuǎn)換為該函數(shù)的類型;顯式隱式賦值表達(dá)式函數(shù)返回值隱含轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換類型轉(zhuǎn)換2.8類型定義1、格式typedef ;例如:typedef double wages,bouns;wages weekly;bouns monthly;2、自定義類型的作用 改善程序的可讀性,增加所定義變量的信息 書寫簡(jiǎn)練 提高程序的可移植性 第3章預(yù)處理和語(yǔ)句 3.1預(yù)處理功能 3.2語(yǔ)句 3.3選擇語(yǔ)句 3.4循環(huán)語(yǔ)句 3.5轉(zhuǎn)向語(yǔ)句3.1預(yù)處理功能一、預(yù)處理命令及預(yù)處理功能1、預(yù)處理命令 C+源程序中包含的各種編譯命令在程序被正常編譯之前執(zhí)行; 預(yù)處理命令不是C+語(yǔ)言的一部分;2、預(yù)處理功能 由預(yù)處理命令實(shí)

47、現(xiàn)的功能;二、常用的預(yù)處理命令 文件包含命令 宏定義命令3.1預(yù)處理功能(續(xù)) 以 # 為引導(dǎo); 每條預(yù)處理命令單獨(dú)占用一行,同一行不能有其他預(yù)處理命令和語(yǔ)句;三、預(yù)處理命令使用說明 條件編譯命令 停止編譯命令 預(yù)處理命令的位置可以放在開頭、中間和結(jié)尾; 預(yù)處理命令可以續(xù)行,續(xù)行符為 ; 預(yù)處理命令不是語(yǔ)句,不能以分號(hào)(;)結(jié)束;3.1.1文件包含命令一、功能 指示C+編譯器將一個(gè)文件(頭文件)的內(nèi)容 嵌入到該指令所在的文件中該指令所在位置處; 頭文件指存放與標(biāo)準(zhǔn)函數(shù)有關(guān)的信息,或者存放符號(hào)常量、類型定義、類和其他復(fù)雜類型的定義以及與程序環(huán)境相關(guān)信息的.h文件;二、格式#include 由系統(tǒng)

48、提供并放在指定子目錄中的頭文件;#include 文件名由用戶定義,放在當(dāng)前目錄或其他目錄下的頭文件或其他源文件;3.1.1文件包含命令(續(xù))三、說明 文件包含命令一般放在程序頭; 一條文件包含命令只能包含一個(gè)文件;文件名:myfile.h#include myfile2.h#include myfile3.h 文件包含命令可以嵌套; 包含文件不易過多;3.1.2宏定義命令一、功能用來將一個(gè)標(biāo)識(shí)符定義為一個(gè)字符串,該標(biāo)識(shí)符稱為宏名,被定義的字符串稱為替換文本;二、宏定義命令格式1、兩種定義格式 簡(jiǎn)單宏定義 帶參數(shù)的宏定義2、簡(jiǎn)單宏定義定義符號(hào)常量,例如:#define PI 3.1415#de

49、fine 3.1.2宏定義命令(續(xù)) #define與const定義符號(hào)常量的區(qū)別 const產(chǎn)生一個(gè)具有類型的符號(hào) #define僅產(chǎn)生文本替換,而不管內(nèi)容是否正確const double PI=3.1415;#define PI 3.1415 使用const可以定義一個(gè)局部常量,可局部在一個(gè)函數(shù)體內(nèi) 用#define定義的常量的作用域是從定義時(shí)開始,直到使用#undef取消定義時(shí)為止,如果不取消定義,直到整個(gè)文件結(jié)束 使用const定義常量是一個(gè)說明語(yǔ)句,用分號(hào)(;)結(jié)束 使用#define定義常量是一個(gè)預(yù)處理命令,不能用分號(hào)(;)結(jié)束3.1.2宏定義命令(續(xù)) 說明k書寫#define命

50、令時(shí),與之間用空格分隔,不能使用等號(hào)連接;k使用#define定義的標(biāo)識(shí)符不是變量,它只用作宏替換,不占用內(nèi)存;k#define是一條預(yù)處理命令,不用分號(hào)結(jié)束,它所定義的標(biāo)識(shí)符等價(jià)于其后的字符串;k標(biāo)識(shí)符被宏定義后,在取消這次宏定義之前,不允許重新對(duì)它進(jìn)行宏定義;k宏定義可以嵌套,已定義的標(biāo)識(shí)符可以用來定義新的字符串;3.1.2宏定義命令(續(xù)) 說明k應(yīng)寫在一行上,如果需要寫在多行時(shí),需使用續(xù)行符()結(jié)束,并在其后按下回車鍵;k與左括號(hào)之間不能出現(xiàn)空格,否則空格右邊都將作為宏體;k定義帶參數(shù)的宏體時(shí),宏體中與參數(shù)名相同的字符序列適當(dāng)?shù)丶由侠ㄌ?hào),可以避免宏替換后出現(xiàn)的優(yōu)先級(jí)問題;kC+中,帶參數(shù)

51、的宏定義常由內(nèi)聯(lián)函數(shù)取代;3、帶參數(shù)的宏定義#define () 3.1.2宏定義命令(續(xù))例3.1:分析下列程序的輸出結(jié)果。#include void main() int b(5); #define b 2 #define f(x) b*(x) int y(3); coutf(y+1)endl; #undef b coutf(y+1)endl; #define b(3) coutf(y+1)endl;輸出:82012簡(jiǎn)單宏定義帶參數(shù)的宏定義b=2b=5b=33.1.2宏定義命令(續(xù))4、替換正文中的操作符#與# #:將它兩邊的操作數(shù)連接成一個(gè)符號(hào); #:將它右邊的操作數(shù)變成一個(gè)字符串文字;

52、例如:#define CON(a,b) a#bdouble i=CON(5,E-10)double i=5E-10;#define STR(a) #acoutSTR(Programming is fun!)endl;cout Programming is fun! endl;5、取消宏定義命令#undef 3.1.3條件編譯命令一、功能用來定義某些編譯內(nèi)容要在滿足一定條件下才參與編譯,否則不參與編譯;可使同一源程序在不同的編譯條件下產(chǎn)生不同的目標(biāo)代碼。二、格式格式一:#ifdef #else#end if或#ifdef #end if3.1.3條件編譯命令(續(xù))格式二#ifndef #else

53、#end if或#ifndef #end if格式三#if #elif #elif .#else#end if3.1.3條件編譯命令(續(xù))例3.2:分析下列程序的輸出結(jié)果。#include #define A 10void main() #if A0 cout0endl; #elif A0 couta0endl; #else couta=003.1.3條件編譯命令(續(xù))例3.3:避免重復(fù)引用某個(gè)頭文件。/main.cpp#include myfile1.h#include myfile2.h/myfile1.h#include myhead.h/myfile2.h#include myhead

54、.h改進(jìn): /myfile1.h #ifndef MYHEAD_H #define MYHEAD_H #include myhead.h#endif/myfile2.h #ifndef MYHEAD_H #define MYHEAD_H #include myhead.h#endif 3.1.3條件編譯命令(續(xù))例3.4:用于調(diào)試。調(diào)試時(shí):#define DEBUG 1.#if DEBUG=1 coutOKendl;#end if.調(diào)試后:#define DEBUG 停止編譯命令一、格式#error 二、功能當(dāng)編譯器遇到該指令時(shí),顯示“字符序列”,即錯(cuò)誤信息,然后停止對(duì)該程序的編

55、譯,從而可以在編譯階段發(fā)現(xiàn)程序中的錯(cuò)誤;三、示例假設(shè)country值為:US、ENGLAND、CHINA程序中有如下語(yǔ)句:3.1.4停止編譯命令(續(xù))/#else #error You define country incorrectly#endif當(dāng)country的值不是上述三者之一時(shí),編譯器將顯示:然后停止編譯。You define country incorrectly3.2語(yǔ)句1、表達(dá)式語(yǔ)句和空語(yǔ)句 表達(dá)式語(yǔ)句:任何一個(gè)表達(dá)式加上分號(hào)(;); 空語(yǔ)句:只有一個(gè)分號(hào)(;)的語(yǔ)句;2、復(fù)合語(yǔ)句和分程序 復(fù)合語(yǔ)句:由兩條或兩條以上的程序構(gòu)成,并由一對(duì)花括號(hào)括起; 分程序:又稱塊結(jié)構(gòu),含有一條

56、或多條說明語(yǔ)句的復(fù)合語(yǔ)句;3.3.1條件語(yǔ)句if () else if () else if () .else if () else 說明:if語(yǔ)句可以嵌套,在此情況下,else與最近的一個(gè)沒有與else配對(duì)的if配對(duì)。3.3.2開關(guān)語(yǔ)句switch ()case :case :.case :default 注意:在執(zhí)行語(yǔ)句序列中如果遇到break語(yǔ)句,則退出switch語(yǔ)句,執(zhí)行后面的語(yǔ)句;如果其后的語(yǔ)句序列中沒有break語(yǔ)句,則一直執(zhí)行至switch語(yǔ)句結(jié)束。3.3.2開關(guān)語(yǔ)句(續(xù))例3.5:分析下列程序的輸出結(jié)果。#include void main() int i(1),j(0),m

57、(1),n(2); switch(i+) case 1:m+; n+; case 2:switch(+j) case 1:m+; case 2:n+; case 3:m+; n+; break; case 4:m+;n+; coutm, nendl; 輸出:4,53.4循環(huán)語(yǔ)句1、while循環(huán)語(yǔ)句while () ;2、do-while循環(huán)語(yǔ)句do while ();do-while循環(huán)與while循環(huán)的區(qū)別:do-while循環(huán)至少執(zhí)行一次循環(huán)體,while循環(huán)可能一次也不執(zhí)行循環(huán)體;3、for循環(huán)語(yǔ)句for (d1;d2;d3) ;4、多重循環(huán)3.5轉(zhuǎn)向語(yǔ)句1、goto語(yǔ)句 格式:got

58、o ; goto語(yǔ)句只能在一個(gè)函數(shù)內(nèi)進(jìn)行轉(zhuǎn)向;2、break語(yǔ)句 格式:break; 適用情況:k用于開關(guān)語(yǔ)句的語(yǔ)句序列中,其功能是退出開關(guān)語(yǔ)句,執(zhí)行其后的語(yǔ)句;k用于循環(huán)體中,其功能是用來退出該重循環(huán);3、continue語(yǔ)句 格式:continue; 功能:在循環(huán)體中用來結(jié)束本次循環(huán);第4章函數(shù)和作用域 4.1函數(shù)的基本概念 4.2函數(shù)的定義和說明 4.3函數(shù)的調(diào)用 4.4函數(shù)的參數(shù) 4.5內(nèi)聯(lián)函數(shù) 4.6函數(shù)重載 4.7異常處理基礎(chǔ) 4.8作用域返回類型為void類型的函數(shù)抽象為過程抽象4.1函數(shù)的基本概念 函數(shù)結(jié)構(gòu):由花括號(hào)括起來的一個(gè)語(yǔ)句序列; 函數(shù)抽象:使用標(biāo)識(shí)符對(duì)語(yǔ)句序列進(jìn)行的抽

59、象; 函數(shù)調(diào)用:函數(shù)級(jí)上的控制抽象,一種控制轉(zhuǎn)移; 參數(shù)化:在函數(shù)抽象中對(duì)其所操作的值進(jìn)行抽象的過程; 形參與實(shí)參 函數(shù)抽象與過程抽象k函數(shù)抽象的目的是進(jìn)行求值k過程抽象的目的是更新對(duì)象 C+中只有函數(shù)抽象4.2.1函數(shù)的定義格式 ()說明:為函數(shù)返回值類型,若為void,則為過程調(diào)用;中的參數(shù)為形參,在函數(shù)被調(diào)用時(shí)進(jìn)行初始化,從而從被調(diào)用處獲得數(shù)據(jù);函數(shù)體4.2.2函數(shù)的說明方法(函數(shù)的聲明)一、函數(shù)的說明原則 如果一個(gè)函數(shù)定義在先,調(diào)用在后,調(diào)用前可以不必說明; 如果一個(gè)函數(shù)定義在后,調(diào)用在先,調(diào)用前必須說明;二、函數(shù)的說明方法(原型說明) ();三、示例參數(shù)表中的參數(shù)名稱可以省略4.2.

60、2函數(shù)的說明方法(續(xù))#include void fun1(),fun2(),fun3();void main() coutIt is in main. endl; fun2(); coutIt is back in main. endl;void fun1() coutIt is in fun1. endl; fun3(); coutIt is back in fun1. endl;例4.1:分析下列程序的輸出結(jié)果。函數(shù)原型聲明4.2.2函數(shù)的說明方法(續(xù))void fun2() coutIt is in fun2. endl; fun1(); coutIt is back in fun2. endl;void fun3() coutIt is in fun3. endl;It is in main.It is back in fun1.It is in fun2. It is back in fun2.It is in fun1. It is back

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論