上機(jī)調(diào)試程序方法.ppt_第1頁(yè)
上機(jī)調(diào)試程序方法.ppt_第2頁(yè)
上機(jī)調(diào)試程序方法.ppt_第3頁(yè)
上機(jī)調(diào)試程序方法.ppt_第4頁(yè)
上機(jī)調(diào)試程序方法.ppt_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟪绦蛟O(shè)計(jì),計(jì)算機(jī)與信息學(xué)院 李麗珊,學(xué)時(shí)安排,本課程共60學(xué)時(shí),3.5學(xué)分,理論教學(xué)40學(xué)時(shí),實(shí)踐教學(xué)20學(xué)時(shí),教學(xué)內(nèi)容與教材章節(jié)對(duì)應(yīng)關(guān)系,補(bǔ)充知識(shí): 面向?qū)ο笙嚓P(guān)知識(shí) MFC基礎(chǔ)和ViC可視化開(kāi)發(fā)基礎(chǔ) UML相關(guān)知識(shí),目錄,第1章 C+語(yǔ)言特點(diǎn),了解: C+與C的關(guān)系以及二者的相同點(diǎn)和不同點(diǎn); 掌握: C+的非面向?qū)ο笳Z(yǔ)言特征。,目的要求,C+的起源和特點(diǎn)、與C的關(guān)系 最簡(jiǎn)單的C+程序 C+對(duì)C的擴(kuò)充 C+程序的編寫(xiě)和實(shí)現(xiàn) 關(guān)于C+上機(jī)實(shí)踐,授課內(nèi)容,1.1 C+的起源和特點(diǎn)、與C的關(guān)系,C語(yǔ)言是七十年代初貝爾實(shí)驗(yàn)室的Dennis Richie 等人在B語(yǔ)言基礎(chǔ)上開(kāi)發(fā)出來(lái)的。C最初是作為UNIX操作系統(tǒng)的開(kāi)發(fā)語(yǔ)言為人們所認(rèn)識(shí)。七十年代末,隨著微型計(jì)算機(jī)的發(fā)展,C語(yǔ)言開(kāi)始移植到非UNIX環(huán)境中,并逐步脫離UNIX系統(tǒng)成為一種獨(dú)立的程序設(shè)計(jì)語(yǔ)言。C 語(yǔ)言版本很多,為了讓開(kāi)發(fā)出來(lái)的代碼能夠在多種平臺(tái)上運(yùn)行,1988年美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)ANSI對(duì)C語(yǔ)言進(jìn)行了標(biāo)準(zhǔn)化,產(chǎn)生了ANSI C。,(1)C語(yǔ)言既具備高級(jí)語(yǔ)言的結(jié)構(gòu)和編程環(huán)境,又提供類(lèi)似于匯編語(yǔ)言那樣的系統(tǒng)資源操縱能力及程序執(zhí)行效率。適合解決有實(shí)時(shí)要求的問(wèn)題。,C 語(yǔ)言的主要特點(diǎn):,(2)有豐富的運(yùn)算符和數(shù)據(jù)類(lèi)型,表達(dá)式類(lèi)型多樣化,可以方便地實(shí)現(xiàn)在其他語(yǔ)言中較難實(shí)現(xiàn)的運(yùn)算,對(duì)各種不同類(lèi)型的程序設(shè)計(jì)都有良好的適應(yīng)性。,(3)以函數(shù)為基礎(chǔ)實(shí)現(xiàn)程序的結(jié)構(gòu)化設(shè)計(jì),支持大型程序的多文件構(gòu)成及單個(gè)文件獨(dú)立編譯,適合大型復(fù)雜程序的設(shè)計(jì)。,(4)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活,書(shū)寫(xiě)形式自由。,(5)可移植性好。,C+是由C發(fā)展成為的以面向?qū)ο鬄橹饕卣鞯恼Z(yǔ)言。作為C語(yǔ)言的超集,C+繼承了C的所有優(yōu)點(diǎn),又對(duì)數(shù)據(jù)類(lèi)型做了擴(kuò)充,使得編譯系統(tǒng)可以檢查出更多類(lèi)型錯(cuò)誤。,C+支持面向?qū)ο蟪绦蛟O(shè)計(jì),通過(guò)類(lèi)和對(duì)象的概念把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,通過(guò)派生、繼承、重載和多態(tài)性等特征實(shí)現(xiàn)了軟件重用和程序自動(dòng)生成,使得大型復(fù)雜軟件的構(gòu)造和維護(hù)變得更加有效和容易。,此外,在一致性(Consistency)檢查機(jī)制方面也作了加強(qiáng),提高了軟件開(kāi)發(fā)的效率和質(zhì)量。,C+與C完全兼容,很多用C編寫(xiě)的庫(kù)函數(shù)和應(yīng)用程序都可以為C+所用。,但正是由于與C兼容,使得C+不是純正的面向?qū)ο蟮恼Z(yǔ)言,它既支持面向?qū)ο蟪绦蛟O(shè)計(jì),也支持面向過(guò)程設(shè)計(jì)。但我們應(yīng)當(dāng)注意用面向?qū)ο蟮乃枷脒M(jìn)行設(shè)計(jì),以發(fā)揮出C+的優(yōu)勢(shì)。,C+有許多版本,國(guó)內(nèi)較為流行的有Microsoft公司的Visual C+。,C+對(duì)C的“增強(qiáng)”,表現(xiàn)在兩個(gè)方面: (1) 在原來(lái)面向過(guò)程的機(jī)制基礎(chǔ)上,對(duì)C語(yǔ)言的功能做了不少擴(kuò)充。 (2) 增加了面向?qū)ο蟮臋C(jī)制。 面向?qū)ο蟪绦蛟O(shè)計(jì),是針對(duì)開(kāi)發(fā)較大規(guī)模的程序而提出來(lái)的,目的是提高軟件開(kāi)發(fā)的效率。 學(xué)習(xí)C+,既要會(huì)利用C+進(jìn)行面向過(guò)程的結(jié)構(gòu)化程序設(shè)計(jì),也要會(huì)利用C+進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。,運(yùn)行結(jié)果: This is a C+ program.,1.2 最簡(jiǎn)單的C+程序,#include /包含頭文件iostream using namespace std; /使用命名空間std int main( ) coutThis is a C+ program.; return 0; ,例1.1,用main代表“主函數(shù)”的名字。每一個(gè)C+程序都必須有一個(gè) main 函數(shù)。必須聲明main函數(shù)的類(lèi)型,無(wú)返回值時(shí)要聲明為void類(lèi)型。一般聲明為int,如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值,不能正常結(jié)束時(shí)返回一個(gè)非0值。,在初學(xué)C+時(shí),只需知道: 如果程序有輸入或輸出時(shí),必須使用“#include ”命令以提供必要的信息,同時(shí)要用“using namespace std;” ,使程序能夠使用這些信息,否則程序編譯時(shí)將出錯(cuò)。,“using namespace std; ” 的意思是“使用命名空間std”。C+標(biāo)準(zhǔn)庫(kù)中的類(lèi)和函數(shù)是在命名空間std中聲明的,因此程序中如果需要用到C+標(biāo)準(zhǔn)庫(kù),就需要用“using namespace std; ”作聲明,表示要用到命名空間std中的內(nèi)容。,文件iostream的作用是向程序提供輸入或輸出時(shí)所需要的一些信息。iostream是i-o-stream 3個(gè)詞的組合,代表“輸入輸出流”的意思。,#include using namespace std; int main( ) int a,b,sum; cinab; sum=a+b; cout“a+b=”sumendl; return 0; ,例1.2,#include using namespace std; int max(int x,int y) int z; if(xy) z=x; else z=y; return(z); int main( ) int a,b,m; cinab; m=max(a,b); cout“max=”m n; return 0; ,例1.3,例1.3的程序可以改寫(xiě)如下: #include using namespace std; int main( ) int max(int x,int y); /對(duì)max函數(shù)作聲明 int a,b,c; cinab; c=max(a,b); /調(diào)用max函數(shù) couty) z=x; else z=y; return(z); ,int main( ) stud1.setdata( ); stud2.setdata( ); stud1.display( ); stud2.display( ); return 0; ,程序運(yùn)行情況如下: 1001 98.5 1002 76.5 輸出結(jié)果: num=1001 score=98.5 num=1002 score=76.5,#include using namespace std; class Student private: int num; int score; public: void setdata( ) cinnum; cinscore; void display( ) coutnum=numendl; coutscore=scoreendl; ; ; Student stud1,stud2;,例1.4:一個(gè)包含類(lèi)和對(duì)象的C+程序。,在一個(gè)類(lèi)中包含兩種成員: 數(shù)據(jù)和函數(shù),分別稱(chēng)為數(shù)據(jù)成員和成員函數(shù)。在C+中把一組數(shù)據(jù)和有權(quán)調(diào)用這些數(shù)據(jù)的函數(shù)封裝在一起,組成一種稱(chēng)為“類(lèi)(class)”的數(shù)據(jù)結(jié)構(gòu)。 成員函數(shù)是用來(lái)對(duì)數(shù)據(jù)成員進(jìn)行操作的。也就是說(shuō),一個(gè)類(lèi)是由一批數(shù)據(jù)以及對(duì)其操作的函數(shù)組成的。類(lèi)可以體現(xiàn)數(shù)據(jù)的封裝性和信息隱蔽。 在大多數(shù)情況下,會(huì)把所有數(shù)據(jù)指定為私有,以實(shí)現(xiàn)信息隱蔽。 具有“類(lèi)”類(lèi)型特征的變量稱(chēng)為“對(duì)象”(object)。,在上面的程序中: 數(shù)據(jù)成員num,score和成員函數(shù)setdata,display組成了一個(gè)名為Student的“類(lèi)”類(lèi)型。 在聲明Student類(lèi)時(shí),把類(lèi)中的數(shù)據(jù)和函數(shù)分為兩大類(lèi): private(私有的)和public(公用的)。 把全部數(shù)據(jù)(num,score)指定為私有的,把全部函數(shù)(setdata,display)指定為公用的。,1.3 C+對(duì)C的擴(kuò)充,使用以”/”開(kāi)頭的注釋 對(duì)變量的定義可以出現(xiàn)在程序中的任何行(但必須在引用該變量之前) 提供了標(biāo)準(zhǔn)輸入輸出流cin和cout 用const定義常變量 函數(shù)模板,簡(jiǎn)化同一類(lèi)型的函數(shù)的編程工作 使用帶默認(rèn)值的參數(shù)的函數(shù),使函數(shù)的調(diào)用更加靈活,提供變量的引用類(lèi)型,將引用作為函數(shù)形參,可以實(shí)現(xiàn)通過(guò)函數(shù)的調(diào)用來(lái)改變實(shí)參變量的值 增加了內(nèi)置函數(shù)(內(nèi)嵌函數(shù)),以提高程序的執(zhí)行效率 作用域運(yùn)算符:,這樣在局部變量作用域內(nèi)也能引用全局變量 用string類(lèi)定義字符串變量,使字符串運(yùn)算更加方便 用new和delete運(yùn)算符代替malloc和free函數(shù),使分配動(dòng)態(tài)空間更加方便,1.3 C+對(duì)C的擴(kuò)充(續(xù)),1.3.1 C+的輸入輸出,輸入和輸出并不是C+語(yǔ)言中的正式組成成分, 而是在編譯系統(tǒng)提供的I/O庫(kù)中定義的。 C+的輸出和輸入是用“流”(stream)的方式實(shí)現(xiàn)的。 C+中, 可以用cin和cout函數(shù)進(jìn)行輸入輸出.,cout語(yǔ)句的一般格式為 cout變量1變量2變量n; 在定義流對(duì)象時(shí),系統(tǒng)會(huì)在內(nèi)存中開(kāi)辟一段緩沖區(qū),用來(lái)暫存輸入輸出流的數(shù)據(jù)。 在執(zhí)行cout語(yǔ)句時(shí),先把插入的數(shù)據(jù)順序存放在輸出緩沖區(qū)中,直到輸出緩沖區(qū)滿(mǎn)或遇到cout語(yǔ)句中的endl(或n,ends,flush)為止,此時(shí)將緩沖區(qū)中已有的數(shù)據(jù)一起輸出,并清空緩沖區(qū)。輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備(一般為顯示器)輸出。,1.3.2 用const定義常變量,加上關(guān)鍵字const,變量的值在程序運(yùn)行期間不能改變,這種變量稱(chēng)為常變量(constant variable)。 在定義常變量時(shí)必須同時(shí)對(duì)它初始化(即指定其值),此后它的值不能再改變。 可以用表達(dá)式對(duì)常變量初始化 例:const int a=3; /用const來(lái)聲明為常變量,指定其值始終為3 const int b=3+6,c=3*cos(1.5); /b的值被指定為9,c的值被指定為3*cos(1.5),1.3.3 函數(shù)原型聲明,C+要求在函數(shù)調(diào)用之前必須對(duì)所調(diào)用的函數(shù)做函數(shù)原型聲明. 函數(shù)聲明的一般形式為: 函數(shù)類(lèi)型 函數(shù)名(參數(shù)表); 參數(shù)表中一般包括參數(shù)類(lèi)型和參數(shù)名,1.3.4 函數(shù)的重載,C+允許用同一函數(shù)名定義多個(gè)函數(shù),這些函數(shù)的參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型不同。這就是函數(shù)的重載(function overloading)。即對(duì)一個(gè)函數(shù)名重新賦予它新的含義,使一個(gè)函數(shù)名可以多用。 重載函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類(lèi)型或參數(shù)順序3者中必須至少有一種不同,函數(shù)返回值類(lèi)型可以相同也可以不同。,例1.6 求3個(gè)數(shù)中最大的數(shù),#include using namespace std; int main( ) int max(int a,int b,int c); double max(double a,double b,double c); long max(long a,long b,long c); int i1,i2,i3,i; cini1i2i3; i=max(i1,i2,i3); coutd1d2d3; d=max(d1,d2,d3); coutg1g2g3; g=max(g1,g2,g3); coutg_max=gendl; ,int max(int a,int b,int c) if(ba) a=b; if(ca) a=c; return a; double max(double a,double b,double c) if(ba) a=b; if(ca) a=c; return a; long max(long a,long b,long c) if(ba) a=b; if(ca) a=c; return a; ,運(yùn)行情況如下: 185 -76 567 (輸入3個(gè)整數(shù)) 56.87 90.23 -3214.78 (輸入3個(gè)實(shí)數(shù)) 67854 -912456 673456 (輸入3個(gè)長(zhǎng)整數(shù)) i_max=567 (輸出3個(gè)整數(shù)的最大值) d_max=90.23 (輸出3個(gè)雙精度數(shù)的最大值) g_max=673456 (輸出3個(gè)長(zhǎng)整數(shù)的最大值),#include using namespace std; int main( ) int max(int a,int b,int c); int max(int a,int b); int a=8,b=-12,c=27; couta) a=b; if(ca) a=c; return a; int max(int a,int b) if(ab) return a; else return b; ,例1.7 求兩個(gè)整數(shù)或3個(gè)整數(shù)中的最大數(shù)。,運(yùn)行情況如下: max(a,b,c)=27 max(a,b)=8,1.3.5 函數(shù)模板,所謂函數(shù)模板,實(shí)際上是建立一個(gè)通用函數(shù),其函數(shù)類(lèi)型和形參類(lèi)型不具體指定,用一個(gè)虛擬的類(lèi)型來(lái)代表。這個(gè)通用函數(shù)就稱(chēng)為函數(shù)模板。 凡是函數(shù)體相同的函數(shù)都可以用這個(gè)模板來(lái)代替,不必定義多個(gè)函數(shù),只需在模板中定義一次即可。在調(diào)用函數(shù)時(shí)系統(tǒng)會(huì)根據(jù)實(shí)參的類(lèi)型來(lái)取代模板中的虛擬類(lèi)型,從而實(shí)現(xiàn)了不同函數(shù)的功能。 用函數(shù)模板比函數(shù)重載更方便,程序更簡(jiǎn)潔。,#include using namespace std; template /模板聲明,其中T為類(lèi)型參數(shù) T max(T a,T b,T c) /定義一個(gè)通用函數(shù),用T作虛擬的類(lèi)型名 if(ba) a=b; if(ca) a=c; return a; int main( ) int i1=185,i2=-76,i3=567,i; double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,g2=-912456,g3=673456,g; i=max(i1,i2,i3); /調(diào)用模板函數(shù),此時(shí)T被int取代 d=max(d1,d2,d3); /調(diào)用模板函數(shù),此時(shí)T被double取代 g=max(g1,g2,g3); /調(diào)用模板函數(shù),此時(shí)T被long取代 couti_max=iendl; coutf_max=fendl; coutg_max=gendl; return 0; ,例1.8 :,定義函數(shù)模板的一般形式為 template 或 template 通用函數(shù)定義 通用函數(shù)定義 類(lèi)型參數(shù)可以不只一個(gè),可以根據(jù)需要確定個(gè)數(shù)。如 template 注意:只適用于函數(shù)的參數(shù)個(gè)數(shù)相同而類(lèi)型不同,且函數(shù)體相同的情況,如果參數(shù)的個(gè)數(shù)不同,則不能用函數(shù)模板。,1.3.6 有默認(rèn)參數(shù)的函數(shù),多次調(diào)用同一函數(shù)且用同樣的實(shí)參,可以給形參一個(gè)默認(rèn)值。 這種方法比較靈活,可以簡(jiǎn)化編程,提高運(yùn)行效率。 例1:函數(shù)聲明 float area(float r=6.5); 函數(shù)調(diào)用: area( ); /相當(dāng)于area(6.5); area(7.5); /不想取默認(rèn)值,通過(guò)實(shí)參另行給出。,有多個(gè)形參,可以使每個(gè)形參有一個(gè)默認(rèn)值,也可以只對(duì)一部分形參指定默認(rèn)值,另一部分形參不指定默認(rèn)值。 例2:函數(shù)聲明: float volume(float h,float r=12.5); 函數(shù)調(diào)用: volume(45.6); /相當(dāng)于volume(45.6,12.5) volume(34.2,10.4) /h的值為34.2,r的值為10.4 實(shí)參與形參的結(jié)合是從左至右順序進(jìn)行的。因此指定默認(rèn)值的參數(shù)必須放在形參表列中的最右端,否則出錯(cuò)。,例3: 函數(shù)聲明: void f1(float a,int b=0,int c,char d=a); /不正確 void f2(float a,int c,int b=0, char d=a); /正確 函數(shù)調(diào)用: f2(3.5, 5, 3, x) /形參的值全部從實(shí)參得到 f2(3.5, 5, 3) /最后一個(gè)形參的值取默認(rèn)值a f2(3.5, 5) /最后兩個(gè)形參的值取默認(rèn)值,b=0,d=a 在調(diào)用有默認(rèn)參數(shù)的函數(shù)時(shí),實(shí)參的個(gè)數(shù)可以與形參的個(gè)數(shù)不同,實(shí)參未給定的,從形參的默認(rèn)值得到值。,在使用帶有默認(rèn)參數(shù)的函數(shù)時(shí)有兩點(diǎn)要注意: (1) 什么時(shí)候設(shè)定默認(rèn)值: 函數(shù)定義中給出:函數(shù)的定義在函數(shù)調(diào)用之前 函數(shù)聲明中給出:函數(shù)的定義在函數(shù)調(diào)用之后,在函數(shù)定義時(shí)可以不給出默認(rèn)值。 (2) 一個(gè)函數(shù)不能既作為重載函數(shù),又作為有默認(rèn)參數(shù)的函數(shù)。,1.3.7 變量的引用,引用又稱(chēng)別名。 例:int a; int 說(shuō)明: (1)引用不是一種獨(dú)立的數(shù)據(jù)類(lèi)型,必須與某一種類(lèi)型的數(shù)據(jù)相聯(lián)系。 (2)引用與其所代表的變量共享同一內(nèi)存單元。 (3)區(qū)別聲明引用變量還是取地址操作:引用的聲明前面有類(lèi)型符。 (4)對(duì)引用的初始化,可以用一個(gè)變量名,也可以用另一個(gè)引用 (5)引用初始化后不能再重新聲明為另一個(gè)變量的別名,1.3.8 內(nèi)置函數(shù),能在編譯時(shí)將所調(diào)用函數(shù)的代碼直接嵌入到主調(diào)函數(shù)中的函數(shù)稱(chēng)為內(nèi)置函數(shù)(inline function),又稱(chēng)內(nèi)嵌函數(shù)。在有些書(shū)中把它譯成內(nèi)聯(lián)函數(shù)。節(jié)省了調(diào)用函數(shù)所需要的時(shí)間和空間的開(kāi)銷(xiāo)。 在函數(shù)首行的左端加一個(gè)關(guān)鍵字inline即可指定內(nèi)置函數(shù)。,例1.13 函數(shù)指定為內(nèi)置函數(shù)。 #include using namespace std; inline int max(int,int, int); /聲明函數(shù),注意左端有inline int main( ) int i=10,j=20,k=30,m; m=max(i,j,k); couta) a=b; /求a,b,c中的最大者 if(ca) a=c; return a;,例1.15 用內(nèi)置函數(shù)實(shí)現(xiàn)求平方值 #include using namespace std; inline int power( int x) return x*x ; int main( ) coutpower(2)endl; coutpower(1+1)endl; return 0; 運(yùn)行結(jié)果是: 4 (輸出power(2)的值) 4 (輸出power(1+1)的值),注意: 在聲明函數(shù)和定義函數(shù)時(shí)同時(shí)寫(xiě)inline,或只在其中一處聲明inline,都能按內(nèi)置函數(shù)處理。 使用內(nèi)置函數(shù)可以節(jié)省運(yùn)行時(shí)間,但卻增加了目標(biāo)程序的長(zhǎng)度。 內(nèi)置函數(shù)中不能包括復(fù)雜的控制語(yǔ)句,如循環(huán)語(yǔ)句和switch語(yǔ)句。 只有那些規(guī)模較小而又被頻繁調(diào)用的簡(jiǎn)單函數(shù),才適合于聲明為inline函數(shù)。,1.3.9 作用域運(yùn)算符,作用域運(yùn)算符:,能指定所需要的作用域。 注意:不能用”:”訪(fǎng)問(wèn)函數(shù)中的局部變量 見(jiàn)教材P26例1.16,1.3.10 字符串變量,C+新的一種數(shù)據(jù)類(lèi)型字符串類(lèi)型(string類(lèi)型),可以用來(lái)定義變量,這就是字符串變量用一個(gè)名字代表一個(gè)字符序列。 實(shí)際上,string并不是C+語(yǔ)言本身具有的基本類(lèi)型,它是在C+標(biāo)準(zhǔn)庫(kù)中聲明的一個(gè)字符串類(lèi),用這種類(lèi)可以定義對(duì)象。每一個(gè)字符串變量都是string類(lèi)的一個(gè)對(duì)象。 要使用string類(lèi)的功能時(shí),必須有文件包含 #include ,1. 定義字符串變量:用類(lèi)名string 2. 對(duì)字符串變量的賦值 可以用賦值語(yǔ)句對(duì)它賦予一個(gè)字符串常量 也可以用一個(gè)字符串變量給另一個(gè)字符串變量賦值。不要求兩個(gè)字符川長(zhǎng)度相同。 可以對(duì)字符串變量中某一字符進(jìn)行操作 例1: string string1; /定義string1為字符串變量 string string2=China; /定義string2同時(shí)對(duì)其初始化 string1=Canada; string2=string1; 例2: string word=“Then”; /定義并初始化字符串變量word word2=a; /修改后word的值為”Than”,3. 字符串變量的輸入輸出 用在cin,cout語(yǔ)句中直接用字符串變量名輸入輸出字符串 如:cin string1; cout string2; 4. 字符串變量的運(yùn)算 字符串復(fù)制用賦值號(hào)“=” string1=string2; 字符串連接用加號(hào)“+” string string1=C+; string string2=Language; string1=string1 + string2; 字符串比較直接用關(guān)系運(yùn)算符,5. 字符串?dāng)?shù)組 在一個(gè)字符串?dāng)?shù)組中包含若干個(gè)元素,每個(gè)元素相當(dāng)于一個(gè)字符串變量。 不要求每個(gè)字符串元素具有相同的長(zhǎng)度,即使對(duì)同一個(gè)元素而言,它的長(zhǎng)度也是可以變化的。 在字符串?dāng)?shù)組的每一個(gè)元素中存放一個(gè)字符串。 每一個(gè)字符串元素中只包含字符串本身的字符而不包括0。,如: string name5; /定義一個(gè)字符串?dāng)?shù)組,它包含5個(gè)字符串元素 string name5=“Zhang”,”Li”,”Fun”,”Wang”,”Tan; 此時(shí)name數(shù)組的狀況如圖所示。,1.2.4 字符串運(yùn)算舉例,例1.17 輸入3個(gè)字符串,要求將字母按由小到大的順序輸出。 #include int main( ) string string1,string2,string3,temp; coutstring1string2string3; if(string2string3) temp=string2;string2=string3;string3=temp; /使串2串3 if(string1=string2) coutstring1“ “string2“ “string3endl; /如果串1串2,則串1串2串3 else if(string1=string3) coutstring2“ “string1“ “string3endl; /如果串1串2,且串1串3,則串2串1串3 else coutstring2“ “string3“ “string1endl; /如果串1串2,且串1串3,則串2串3串1 ,運(yùn)行情況如下: please input three strings: China U.S.A. Germany China Germany U.S.A.,1.3.11 動(dòng)態(tài)分配/撤銷(xiāo)內(nèi)存的運(yùn)算符,C+提供了運(yùn)算符new和delete來(lái)取代C語(yǔ)言中的malloc和free函數(shù)。 new運(yùn)算符使用的一般格式為 new 類(lèi)型 初值 用new分配數(shù)組空間時(shí)不能指定初值。如果由于內(nèi)存不足等原因而無(wú)法正常分配空間,則new會(huì)返回一個(gè)空指針NULL。 delete運(yùn)算符使用的一般格式為 delete 指針變量,#include #include using namespace std; struct Student /聲明結(jié)構(gòu)體類(lèi)型Student string name; int num; char sex; ; int main( ) Student *p; /定義指向結(jié)構(gòu)體類(lèi)型Student的數(shù)據(jù)的指針變量 p=new Student; /用new運(yùn)算符開(kāi)辟一個(gè)存放Student數(shù)據(jù)的空間 p-name=Wang Fun; /向結(jié)構(gòu)體變量的成員賦值 p-num=10123; p-sex=m; coutnamenumsexendl; delete p; /撤銷(xiāo)該空間 return 0; ,例1.18 開(kāi)辟空間以存放一個(gè)結(jié)構(gòu)體變量。,從C+源程序到可執(zhí)行程序的步驟: 編輯、預(yù)處理、編譯、連接、調(diào)試,1.4 C+程序的編寫(xiě)和實(shí)現(xiàn),編輯是將源程序輸入計(jì)算機(jī),生成后綴為.cpp的文件。 編譯(compile)是將程序的源代碼轉(zhuǎn)換成機(jī)器語(yǔ)言代碼。編譯后,會(huì)生成一個(gè).obj的目標(biāo)文件,為源程序的目標(biāo)代碼。 目標(biāo)代碼需要相互銜接成為一個(gè)適應(yīng)一定操作系統(tǒng)環(huán)境的程序整體,即連接(link)。C+程序通常是通過(guò)同時(shí)連接一個(gè)或多個(gè)目標(biāo)文件以及一個(gè)或幾個(gè)庫(kù)而創(chuàng)建的。 庫(kù)(.lib)是一組由機(jī)器指令構(gòu)成的程序代碼,是可連接文件。庫(kù)有標(biāo)準(zhǔn)庫(kù)和用戶(hù)生成的庫(kù)。標(biāo)準(zhǔn)庫(kù)是由C+提供的,用戶(hù)生成的庫(kù)是由軟件開(kāi)發(fā)商或程序員提供的。文件與庫(kù)連接的結(jié)果,即生成一個(gè)后綴為.exe的計(jì)算機(jī)可執(zhí)行程序。,1.5 關(guān)于C+上機(jī)實(shí)踐,C+的運(yùn)行環(huán)境,Microsoft公司的Visual C+ 6.0,Borland公司的Borland C+ 5.02等等,在Visual C+ 6.0 運(yùn)行環(huán)境中建立C+應(yīng)用程序的過(guò)程演示,建立新工程(Project),建立新文件(File),編輯、編譯及運(yùn)行程序,實(shí)例程序: /* 功 能:從鍵盤(pán)接收兩個(gè)整數(shù),輸出顯示其中的較大數(shù)。 */ # include void main( ) int a , b , max ; /聲明三個(gè)整型變量 cout a b ; /從鍵盤(pán)接收兩個(gè)整數(shù)賦給a、b if (a = b) max = a ; /若a b 則將a賦給max else max = b ; /否則將b賦給max cout “The max is : “ max endl ; /輸出max并換行 ,.cpp文件 .h文件 .exe文件,存入軟盤(pán),將結(jié)果,關(guān)閉工程, 準(zhǔn)備輸入下一個(gè)程序,ALT COMAPP向?qū)?com應(yīng)用) 資源類(lèi)創(chuàng)建向?qū)?普通 app向?qū)?app就是application應(yīng)用程序) 數(shù)據(jù)類(lèi)程序 開(kāi)發(fā)和設(shè)計(jì)附加向?qū)?擴(kuò)展存儲(chǔ)程序向?qū)?api擴(kuò)展向?qū)?制作文件 控制向?qū)?mfc app 向?qū)?用于生成dll) mfc app 向?qū)?用于生成exe) 新建數(shù)據(jù)類(lèi)型向?qū)?通用程序 win32 應(yīng)用程序(做有界面的) win32 控制臺(tái)應(yīng)用程序(黑框) win32 動(dòng)態(tài)鏈接庫(kù) win32 靜態(tài)鏈接庫(kù),比較Win32 Application和Win32 Console Application 都是工作在32位Windows環(huán)境的程序。 其中

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論