




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)附:如何知道該程序析構(gòu)函數(shù)的 調(diào)用順序是p3 p2 pl ?答:將拷貝構(gòu)造函數(shù)中改為x=2*p.x; y=2*p.y 析構(gòu)函數(shù)中在cout<<"Destructor is called:'之.后添力口 <<"x="<<x<<" y="<<y后面的不變運(yùn)行時(shí)析構(gòu)函數(shù)輸出結(jié)果變?yōu)椋篋estructor is called. x=12 y=16Destructor is called. x=6 y=8 Destructor is called. x=3 y=4 Press any
2、 key to continue 由此可知其調(diào)用順序 或者在拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù) 中的cout語句的<<endl;之前加 入<<this來輸出對(duì)象地址再對(duì)號(hào)入座也可知調(diào)運(yùn)順序i一、明確的概念:(1)理解類和對(duì)象的概念;(具體見附一)類是抽象的 對(duì)象是具體的 例如:你、我、他 都是人 那么 你、我、他就是對(duì)象 人就是類(2)掌握類與對(duì)象的定義方法;類的定義:class類名/*定義這個(gè)類*/; /(別忘了最后的分號(hào))對(duì)象的定義:類名對(duì)象名(參數(shù));(3)理解類的成員的訪問控制的含義,公有和私有成員的區(qū)別;public:/訪問屬性為公有通過外部直接訪問即:對(duì)象名.成員名或成
3、員函數(shù)private:/ 訪問屬性為私有不能通過外部直接訪問(不聲明訪問屬性時(shí)系統(tǒng)默認(rèn)為私有)當(dāng)出現(xiàn)對(duì)象名.成員(私有)時(shí) 編譯器報(bào)錯(cuò)protected:/ 訪問屬性為保護(hù)與private 類似但protected 屬性的成員可以繼承private 不能繼承(4)掌握構(gòu)造函數(shù)和析構(gòu)函數(shù)的含義與作用、定義方式和實(shí)現(xiàn);構(gòu)造函數(shù):為數(shù)據(jù)成員開辟存儲(chǔ)空間函數(shù)名必須與類名相同之前絕對(duì)不許說明返回值類型void也不行構(gòu)造函數(shù)不能由用戶調(diào)用即:對(duì)象名.構(gòu)造函數(shù)名(參數(shù))是錯(cuò)誤的構(gòu)造函數(shù)是隨著對(duì)象的聲明而調(diào)用的例如: class StudentStudent()cout<< " Hell
4、o. ” <<endl;Int main(void) '/cout<< "代以"<<endl;/Student A; "/./運(yùn)行結(jié)果:Hello. / /<-這個(gè)Hello是主函數(shù)中的Hello* /<-是聲明A對(duì)象時(shí)調(diào)用的構(gòu)造函數(shù)構(gòu)造函數(shù)中的Hello析構(gòu)函數(shù)功能與構(gòu)造函數(shù)相反注意調(diào)用時(shí)間和順序(看書)、練習(xí)項(xiàng)目1.輸入下列程序,按要求進(jìn)行實(shí)驗(yàn),并記錄實(shí)驗(yàn)的結(jié)果。#include <iostream>using namespace std;class Coordinatepublic:Coor
5、dinate(int x1, int y1)x=x1; y=y1; Coordinate(Coordinate &p);Coordinate()cout<<"Destructo門s called."<<endl;int getx()return x;+int gety()return y;private:int x, y;L_Coordinate:Coordinate(Coordinate&p)拷貝構(gòu)造函數(shù)x=p.x; y=p.y;+、cout<<"Copy initianization constructor&
6、#39;s ca|led."<<endl;=' int main() 、Coordinate p1(3,4);,調(diào)用構(gòu)造函數(shù) Coordinate p2(p1); A調(diào)用拷貝構(gòu)造函數(shù)(見、P89)Coordinate p3=p2;.,一cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;return 0;_一一A程序結(jié)束時(shí)調(diào)用析構(gòu)函數(shù)注意析構(gòu)函數(shù)的調(diào)用順序 從上至下 依此為p3 p2
7、pl的 析構(gòu)函數(shù)(1)記錄程序的運(yùn)行結(jié)果將Coordinate類中帶有兩個(gè)參數(shù)的構(gòu)造函數(shù)進(jìn)行修改, 在函數(shù)體增加如下語句:運(yùn)行結(jié)果:Copy initianization constructor is called.Copy initianization constructor is called. p3=(3,4)Destructor is called.Destructor is called.Destructor is called.Press any key to continue” <<endl;cout<< " Constructor is cal
8、led.重新記錄程序的運(yùn)行結(jié)果,并解釋輸出結(jié)果。(3) 按下列要求進(jìn)行測試。在主函數(shù)體,添加如下語句: Coordinate p4;錯(cuò)誤原因:構(gòu)造函數(shù)沒有參數(shù)構(gòu)造函數(shù)為 Coordinate:Coordinate(int ,int)Coordinate p5(2);錯(cuò)誤原因:參數(shù)數(shù)量不對(duì)2.根據(jù)注釋語句的提示實(shí)現(xiàn)類Date的成員函數(shù),并將完整的程序編譯、連接成功以保證程序能夠正確運(yùn)行。#include <iostream.h> class Date public: void printDate();/ 顯示日期分析:1 .題目中Date類的數(shù)據(jù)成員為 day, month, yea
9、r且均為 整型訪問屬性為私有主函數(shù)中聲明了 testDay對(duì)象2 .數(shù)據(jù)成員均為私有則不能通過tesDay.day=<數(shù)彳!>的方void setDay(int);/ 設(shè)置日的值void setMonth(int); /設(shè)置月的值void setYear(int); 設(shè)置年的值private:int day, month, year;;int main()Date testDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2010);testDay.printDate();void Date:setDay(int
10、d)day=d;void Date:setMonth(int m)month=m;void Date:setYear(int y)year=y;void Date:printDate()cout<<year<<"/"<<month<<"/"<<day<<endl;3.下面是一個(gè)計(jì)算器類的定義,請(qǐng)完成該類的成員函數(shù)的實(shí)現(xiàn),并設(shè)計(jì)一個(gè)主函數(shù)使用該類和相關(guān)成員函數(shù)以測 試該類設(shè)計(jì)的正確性。#include <iostream> using namespace std;class
11、 counterpublic:counter(int number=0)value=number;void increment。;void decrement。;int getvalue();int print();private:int value;/構(gòu)造函數(shù)給value原值加1 給value原值減1 取得計(jì)數(shù)器值顯示計(jì)數(shù)數(shù)據(jù)成員(其中的 cout語句void counter:increment()value+;cout<<"The counter has increased by 1"<<endl;可以不寫)void counter:decrem
12、ent()value-;cout<<"The counter has decreased by 1"<<endl; int counter:getvalue()return value;int counter二print()cout<<"nDisplay:"<<getvalue()<<endl<<endl;return 0;int main()cout<<"Please input origin number:"定義counter類的幾個(gè)對(duì)象并調(diào)用有關(guān)
13、成員函數(shù)int a;cin>>a;counter c(a); 輸入a并將a作為參數(shù) 通過構(gòu)造函數(shù)為對(duì)象中的value賦值c.increment();c.print();/題目要求驗(yàn)證所以使用輸出函數(shù)一次驗(yàn)證value的值c.decrement();c.print();return 0;4.定義一個(gè)類ClsName,要求該類設(shè)計(jì)如下:(1)該類有兩個(gè)整型數(shù)據(jù)成員x和y;(2)為該類重載三個(gè)不同的構(gòu)造函數(shù):分別為無參數(shù)、帶一個(gè)參數(shù)和帶兩個(gè)參數(shù)的構(gòu)造函數(shù),要求在構(gòu)造函 數(shù)中輸出必要的信息以示區(qū)別;(3)設(shè)計(jì)2個(gè)成員函數(shù)用來讀取數(shù)據(jù)成員x和y;(4)設(shè)計(jì)2個(gè)成員函數(shù)用來設(shè)置數(shù)據(jù)成員x和y;
14、(5)設(shè)計(jì)1個(gè)成員函數(shù)用來在屏幕上打印輸出數(shù)據(jù)成員x和v;(6)在main ()函數(shù)中用三個(gè)不同的構(gòu)造函數(shù)創(chuàng)建3個(gè)對(duì)象,并使用所有的成員函數(shù)對(duì)這些對(duì)象進(jìn)行必要的操作。class CisNamepublic:int a,b;ClsName(int a,int b)cout<<"Construct by two numbers."<<endl;x=a,y=b;/ 以下三個(gè)(2)中要求的重載構(gòu)造函數(shù)ClsName(int a)cout<<"Construct by 1 number."<<endl;x=a,y=b
15、;題目要求加以區(qū)另1J,所以 cout 輸出不同容加以區(qū)分ClsName(void)cout<<"Construct without a number."<<endl;x=a,y=b;int getx()return x;因?yàn)閤,y的訪問屬性為私有,不能由主函數(shù)直接訪問所以會(huì)設(shè)置讀取函數(shù)專門負(fù)責(zé)返回相應(yīng)的值int gety()return y;重載:函數(shù)名相同,參數(shù)的類型不同或者個(gè)數(shù)不同、或者都不同。即根據(jù)帶入?yún)?shù)的類型、數(shù)量的不同,來實(shí)現(xiàn)不同的功能void setx()cout<<"Change X:"cin>
16、>x;void sety()cout<<"Change Y:"cin>>y;void print()cout<<"X="<<getx()<<'t'<<"Y="<<gety()<<endl; private:int x,y;(1)中要求的兩個(gè)整型數(shù)據(jù)成員; int main()int a,b;cout<<"Test1:Input with 2 numbers, now please input tw
17、o numbers:"<<endl;cin>>a;cin>>b;ClsName t1(a,b);t1.print();t1.setx();t1.sety();t1.print();cout<<"nTest2:Input with a numbers, now pleaserestl:lnpul. iith I numbers, now please input ttfd numbers:input a number:"cin>>a;ClsName t2(a);t2.print();t2.setx();t2
18、.sety();t2.print();cout<<"nTest3:Without numbers"ClsName t3;t3.print();t3.setx();t3.sety();t3.print();return 0;Jonstruct by two numbers.腦 Y=6加曜自X; 6Change V: 5性 Y=5rest.2 : Input rlth a mmbers, now pl ease i nput & number:5Jonstruct bn 1 number.<=6Y=-058:i8346Ojhane N: 8Change
19、 Y:5+E V=5號(hào)X3卅ithout numbersCoristrLict without a nujinter,<=-858S934G0Y1二-g5g 鳴 M刖jhange X; B:hSiFb時(shí) ¥: 5K=6Y=5,五客營 自型 k白ycbnlirwjw5.建立類cylinder ,包括兩個(gè)數(shù)據(jù)成員 radius和height ,分別表示圓柱體的半徑和高度,cylinder 類的構(gòu)造函數(shù)被傳遞了兩個(gè) double值來初始化這兩個(gè)成員;定義成員函數(shù)area()和volume用來求圓柱體的表面積和體積,定義成員函數(shù)print()打印cylinder類的相關(guān)信息。最后,在主
20、函數(shù)中對(duì) cylinder類的設(shè)計(jì)進(jìn)行測試。這題很簡單沒啥說的#include<iostream.h>class cylinderpublic:void set(double r,double h)radius=r,height=h;double area()return (radius*3.14);double volume()return (height*area();void print()cout<<"Area="<<area()<<'t'<<"Volume="<&
21、lt;volume()<<endl;private:double radius,height;int main()int a,b;cylinder v;cout<<"Radius="cin>>a;cout<<"Height="cin>>b;v.set(a,b);v.print();return 0;6.(2)(4)(6)性別,年齡,專業(yè),入學(xué)時(shí)間,各門功課成績定義一個(gè)學(xué)生類 CStudent實(shí)現(xiàn)簡單的學(xué)籍管理功能,要求該類至少實(shí)現(xiàn)以下功能:錄入學(xué)生的基本信息(包括,學(xué)號(hào), 輸出學(xué)生的基本信息選課
22、(輸入時(shí)間和所選的課程)統(tǒng)計(jì)每門課的學(xué)分績點(diǎn)統(tǒng)計(jì)每學(xué)期的平均學(xué)分績點(diǎn)統(tǒng)計(jì)重考科目統(tǒng)計(jì)重修科目#include<iostream>#include<string> using namespace std;const MAX=4;class CStudentstring name,sex,ID,object,jtime;/ int age;int markMAX;string sbjMAX;int retry,redo;string t_chose,s_chose;int m_pointMAX,m_markMAX;int markerMAX;數(shù)組)int marker2MA
23、X;public:CStudent()/分別存儲(chǔ)性別學(xué)號(hào)專業(yè)入學(xué)時(shí)間存儲(chǔ)年齡設(shè)立一個(gè)數(shù)組存放成績?cè)O(shè)立string 數(shù)組來存放科目名稱統(tǒng)計(jì)重考重修數(shù)量存放選課時(shí)間和選課名稱存放每門功課的學(xué)分和績點(diǎn)存放重修科目的角標(biāo)(有時(shí)不止掛掉一科可能會(huì)很多 所以聲明稱存放重修科目角標(biāo)cout<<"構(gòu)造CStudent開始錄入基本信息"<<endl; cout<<"Name:"cin>>name;cout<<"ID:"cin>>ID;cout<<"Sex:&q
24、uot;cin>>sex;cout<<"Age:"cin>>age;cout<<"Your Object:"cin>>object;cout<<"Time you join the colleage:"cin>>jtime;cout<<"Now please input your marks."<<endl;for(int i=0;i<MAX;i+) 為什么建立數(shù)據(jù)時(shí)使用的數(shù)組?通過對(duì)角標(biāo)的控制 便可以
25、把一行數(shù)據(jù)全部對(duì)應(yīng)起來請(qǐng)看下面數(shù)據(jù)對(duì)應(yīng)關(guān)系:1角標(biāo)1科目名稱(sbji)成績(marki)學(xué)分(m_marki)0數(shù)學(xué)4461C語百926L2-英語724cout<<"Subject name:"cin>>sbji;cout<<"Mark:"cin>>marki;便于統(tǒng)計(jì)也可以方便地調(diào)用出一門科目的 全部內(nèi)容void baseprint()/按(2)要求輸出基本信息cout<<"cout<<"基本信息:"<<endl;學(xué)生:"<
26、;<name<<"t 學(xué)號(hào):"<<ID<<"t年齡:"<<age<<"t 性別"<<sex<<endl;cout<<"入學(xué)時(shí)間:"<<jtime<<"t 專業(yè):"<<object<<endl;cout<<"成績:"<<endl; for(int i=0;i<MAX;i+) (cout<<
27、sbji<<" : "<<marki<<"t" ) cout<<endl;)void chose()/按要求設(shè)置選課函數(shù)( cout<<"選課名稱:”;cin>>s_chose;cout<<"選課時(shí)間:”;cin>>t_chose;)void Point()/ 按(4)要求(for(int i=0;i<MAX;i+) (cout<<"請(qǐng)?jiān)O(shè)置"<<sbji<<"的學(xué)分:&
28、quot;cin>>m_marki; ) cout<<endl;cout<<endl; int score=0,j=0;給score賦初值防止溢出因?yàn)楹竺嬗衧core+=. 相當(dāng)于score=score+無法確定第一個(gè) score的值retry=0;for(i=0;i<MAX;i+) (if(marki>=60)score+=m_marki;/ 成績及格壘加學(xué)分else retry+;markerj+=i;/否則不及格便要重考將重考數(shù)量自增/其中markerj+=i是將當(dāng)時(shí)重修科目的角標(biāo)記錄下來float s=0;for(i=0;i<MAX
29、;i+)if(m_mark=0)m_pointi=0;cout<<sbji<<"學(xué)分績點(diǎn)均為 0"<<endl;continue;float(m_pointi=4-(100-(float)marki)*(100-(float)marki)/1600);績點(diǎn)的計(jì)算方法s+=m_pointi;cout<<sbji<<"所獲學(xué)分:"<<m_marki<<"t 績點(diǎn):"<<m_pointi<<endl; cout<<&quo
30、t;平均績點(diǎn)為:"<<s/MAX<<endl; cout<<endl;void check() if(retry=0)cout<<" 無重考科目" else cout<<"重考數(shù)目為:"<<retry<<" 包括"<<endl;for(int i=0;i<retry;i+)cout<<sbjmarkeri<<"t"cout<<endl;redo=0;cout<&l
31、t;endl;int temp,j=0;cout<<"輸入重考分?jǐn)?shù)"<<endl;for(i=0;i<retry;i+) cout<<sbjmarkeri<<":"cin>>temp; if(temp<60)redo+;marker2j+=markeri;cout<<endl;if(redo=0)cout<<"無重修科目"elsecout<<"重修數(shù)目為:"<<redo<<"
32、包括"<<endl;for(i=0;i<redo;i+)cout<<sbjmarker2i<<"t" cout<<endl;;int main(void)CStudent a;a.baseprint();a.chose();a.Point();a.check();return 0;一、/»注息:選定 nD:My DocumentsCppExpDecordin-g.-aX構(gòu)造C&tu出M開始錄入基本唁息Noe :X. DukeID:20090000Sax:SA零色Your ObjectTime
33、you join the co 1Is«kb:2009-3-14New p 1 ease input yajr marks.Subject n電me:數(shù)學(xué)Mark:44=Subj ect name:Cl sMark: 32SdbjecH:央語Mark:72SdbJ ed name: k£JUMark:20基本僖息:學(xué)生姓名:X.Duke學(xué)號(hào):20090000年第:20入學(xué)時(shí)間:20O9-S-U專業(yè):計(jì)宜機(jī)成箱:數(shù)學(xué):44施言:92英語:”選課名稱:英語演講選課時(shí)間:20W-12-22請(qǐng)?jiān)O(shè)置韻學(xué)的學(xué)分:6請(qǐng)?jiān)O(shè)置5百言的學(xué)分:4請(qǐng)?jiān)O(shè)置英語的學(xué)分二a請(qǐng)?jiān)O(shè)置虛擬的學(xué)分:2SSL:,
34、靜所獲學(xué)分:6裝點(diǎn):2CiS虛擬所獲學(xué)分:2費(fèi)點(diǎn):0平均鰻點(diǎn)為:2數(shù)學(xué)輸入重考分?jǐn)?shù)數(shù)學(xué)WT虛擬:6。重修數(shù)目為;1包括數(shù)學(xué)Press ftny key to coni irwe(1)新設(shè)計(jì)的類中所需要的數(shù)據(jù)成員需要根據(jù)所要實(shí)現(xiàn)的功能自行設(shè)計(jì);(2)用一個(gè)演示程序完成對(duì)所設(shè)計(jì)的新類的功能測試,并給出測試數(shù)據(jù)和實(shí)驗(yàn)結(jié)果;(3)為增加程序可讀性,請(qǐng)?jiān)诔绦蛑袑?duì)類成員進(jìn)行適當(dāng)注釋說明;補(bǔ)充實(shí)驗(yàn)題:(1)教材134頁3.33 -13.36實(shí)驗(yàn)二(2010-3-23 )實(shí)驗(yàn)名稱:復(fù)雜形式的對(duì)象。實(shí)驗(yàn)?zāi)康模海?)掌握對(duì)象數(shù)組、對(duì)象指針和string類的使用方法;把對(duì)象想象成一種數(shù)據(jù)類型比如整型 有整型數(shù)組吧(
35、int a10)自然也有對(duì)象數(shù)組對(duì)象指針以以上類似有時(shí)涉及到動(dòng)態(tài)聯(lián)編()String類不如說是string 類型類似于智能化的字符串?dāng)?shù)組(2)掌握對(duì)象數(shù)組、對(duì)象指針和對(duì)象引用作為函數(shù)參數(shù)的使用方法;主要看書 實(shí)際用的不多 注意對(duì)象數(shù)組初始化方法(書 P77中上的說明)(3)掌握類對(duì)象作為成員的使用方法;了解就行(4)掌握友元的概念和使用方法;通常的,通過 A對(duì)象想要訪問B對(duì)象的私有成員是不可能的而通過友元就可以做到需要注意的是友元函數(shù)雖然在類聲明但是友元函數(shù)不是成員函數(shù)獨(dú)立于類外所以類外定義是不能加作用域“:”另外,由于使用的Visual C+6.0不是完全使用 C+而準(zhǔn) 編程時(shí)如果遇到 報(bào)錯(cuò)
36、容為一堆大寫字母且錯(cuò)誤位置指向友元函數(shù)的話把#include<iostream> using namespace std; 改為#include<iostream.h> 還有!只有上述情況才可以把頭文件加上“ .h ",否則會(huì)導(dǎo)致部分功能不正常(5)掌握靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用方法;例如:有Object類,擁有數(shù)據(jù)成員a,由Object類聲明出的對(duì)象A、B、C,那么A、B、C都擁有各自的a,存中也會(huì)分配出各自的存空間 A:a , B:a , C:a (共3個(gè))。而如果將數(shù)據(jù)成員 a聲明為靜態(tài)成員(static ),那么 A B、C則共用一個(gè)存空間 a
37、(只有1個(gè))最典型的例子是統(tǒng)計(jì)聲明對(duì)象的數(shù)量使用方法:static 數(shù)據(jù)類型數(shù)據(jù)成員名由于不能直接對(duì)數(shù)據(jù)成員賦初值所以靜態(tài)數(shù)據(jù)成員初始化方法為:數(shù)據(jù)類型類名:靜態(tài)數(shù)據(jù)成員名=初值(注意:1.是類名,不是對(duì)象名;2.之前不要加static )靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)屬于整個(gè)類而不是某個(gè)對(duì)象所以調(diào)用方法為類名:靜態(tài)成員函數(shù)名(參數(shù)表)其他參看書P103幾點(diǎn)說明練習(xí)項(xiàng)目Time類的框架定義如下:#include<iostream.h>/Powered by Zuki & X.Duke class Time/ 聲明 Time 類 public:Time(int A=0,int B=
38、0,int C=0) /帶默認(rèn)參數(shù)的構(gòu)造函數(shù)hour=A;minute=B;second=C;/ set functionsvoid setTime(int a,int b,int c)設(shè) 置 hour,minute, secondcout<<"Run Setime Function"<<endl;setHour(a);setMinute(b);setSecond(c);void setHour(int a)/設(shè)置hour (確保數(shù)據(jù)在合理圍)for(;)if(a>=24|a<0)cout<<"小時(shí)輸入錯(cuò)誤再來一次&
39、quot;<<endl;cin>>a;else break; hour=a;void setMinute(int a)/ 設(shè)置 minute (確保數(shù)據(jù)在合理圍)for(;)if(a>=60|a<0)cout<<"n分鐘輸入錯(cuò)誤再來一次"<<endl;cin>>a; else break; minute=a;void setSecond( int a)/ 設(shè)置 second (確保數(shù)據(jù)在合理圍)for(;) if(a>=60|a<0) cout<<"秒輸入錯(cuò)誤 再來一次
40、"<<endl;cin>>a; else break; second=a;/ get functionsint getHour()/ 返回 hour return hour;int getMinute()/返回 minutereturn minute;int getSecond()/ 返回 second return second; void printUniversal()/ 按 24小時(shí)格 式輸出 時(shí)間: 23:56:12cout<<getHour()<<":"<<getMinute()<<
41、;":"<<getSecond()<<endl;void printStandard()/ 按12小時(shí)格式輸出 時(shí)間: 11:56:12 (PM) 或 9:23:55(AM) if (hour>12)cout<<(hour-12)<<":"<<minute<<":"<<second<<"(PM)"<< endl;elsecout<<hour<<":"<&
42、lt;minute<<":"<<second<<"(AM)"<<endl;private:int hour; / 0 - 23 (24 小時(shí)格式)int minute; / 0 - 59int second; / 0 - 59; / Timel類定義結(jié)束int main()Time t;int a,b,c;cout<<"設(shè)置小時(shí):cin>>a;cout<<"設(shè)置分鐘: cin>>b;cout<<"設(shè)置秒:"
43、cin>>c;t.setTime(a,b,c);t.printStandard();t.printUniversal();return 0;設(shè)置秒:S2Run Set iiu Furwt ion 小時(shí)輸入錯(cuò)誤再來一次23分鐘輸入錯(cuò)誤再來一次眇輸入錯(cuò)懼再來一次93秒粕人錯(cuò)課再來一次5911:26:68()23:28:59Press any kei/ to continue2.設(shè)計(jì)一個(gè)用來表示直角坐標(biāo)系的Location類,在主程序中創(chuàng)建類Location的兩個(gè)對(duì)象 A和B,要求A的坐標(biāo)在第3象限,B的坐標(biāo)點(diǎn)在第2象限,分別采用成員函數(shù)和友元函數(shù)計(jì)算給定兩個(gè)坐標(biāo)點(diǎn)之間的距離,要求按如下
44、格 式輸出結(jié)果:A (x( y1 ) , B (x2, y2 )Distance1=d1Distance2=d2其中:x1, x2, y1, y2為指定的坐標(biāo)值,d1和d2為兩個(gè)坐標(biāo)點(diǎn)之間的距離。Location類框架可參考如下:友元函#include<iostream.h>#include<cmath>class Location聲明類 Locationpublic:Location(double,double);/ 構(gòu)造函數(shù)double Getx();/成員函數(shù),取 x坐標(biāo)的值double Gety();/成員函數(shù),取 y坐標(biāo)的值double distance1(L
45、ocation&);/ 成員函數(shù),求兩坐標(biāo)點(diǎn)之間 的距離friend double distance2(Location &A, Location &B)/數(shù),求兩坐標(biāo)點(diǎn)之間的距離returnsqrt(A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);Location(void)cout<<"Destrcted."private:double x,y;Location:Location(double a,double b)x=a;y=b;double Location:Getx()return x;double
46、 Location:Gety()return y;double Location:distance1(Location &L)return sqrt(L.x-x)*(L.x-x)+(L.y-y)*(L.y-y);int main()double a,b;cout<<"輸入A點(diǎn)坐標(biāo)(在第二象限):"<<endl;cout<<"x(x<0):"for(;)cin>>a;if(a<0)break;cout<<"不對(duì),再來一次:"cout<<"
47、;y(y>0):"for(;)cin>>b;if(b>0)break;cout<<"不對(duì),再來一次:"Location A(a,b);cout<<"輸入B點(diǎn)坐標(biāo)(在第四象限):"<<endl;cout<<"x(x>0):"for(;)cin>>a;if(a>0)break;cout<<"不對(duì),再來一次:"cout<<"y(y<0):"for(;)cin>&
48、gt;b;if(b<0)break;cout<<"不對(duì),再來一次:"Location B(a,b);cout<<"A("<<A.Getx()<<","<<A.Gety()<<")"<<endl; cout<<"B("<<B.Getx()<<","<<B.Gety()<<")"<<endl; cou
49、t<<"Distance1="<<A.distance1(B)<<endl;cout<<"Distance2="<<distance2(A,B)<<endl;return 0;3.使用C+的string類,將5個(gè)字符串按逆轉(zhuǎn)后的順序顯示出來。例如,逆轉(zhuǎn)前的5個(gè)字符串是:Germany Japan America Britain France逆轉(zhuǎn)后的順序輸出字符串是:France Britain America Japan Germany#include<iostream>
50、#include<string>using namespace std;int main(void)string str1,str2,str3,str4,str5;cin>>str1>>str2>>str3>>str4>>str5;cout<<str5<<" "<<str4<<" "<<str3<<" "<<str2<<" "<<str1
51、<<endl;return 0;4.設(shè)計(jì)一個(gè)模仿類magic來實(shí)現(xiàn)4*4的魔方陣。類的框架如下: #include<iostream>using namespace std;class magic/聲明魔方陣類 magic/輸入初值成員函數(shù)/設(shè)置初始魔方成員函數(shù)/生成最終魔方成員函數(shù)/顯示魔方成員函數(shù) public:void getdata();void setfirstmagic();int generate。;int printmagic(); private:int m44;int step;int first;int sumj;void magic:getdat
52、a()cout<<"first="cin>>first;cout<<"step="cin>>step;void magic:setfirstmagic()int temp;temp=m00=first;for(int i=0,j=0;i<4;i+)for(j=0;j<4;j+) if(i=0&&j=0)continue;temp+=step; mij=temp;sumj=m00+m33;int magic:generate()int i,j;for(i=0,j=3;i<4;
53、i+,j-)mij=sumj-mij;mii=sumj-mii;return 0;int magic:printmagic()cout<<endl;for(int i=0,j;i<4;i+)for(j=0;j<4;j+)cout<<mij<<"t"cout<<endl;return 0;int main(void)magic m;m.getdata();m.setfirstmagic();m.generate();m.printmagic();return 0;所謂3191774*43211327的魔方陣,是指該矩
54、陣的各行值的和等于各列值的和,并等于兩對(duì)角線值的和,如:51911292515 ,一,其各行、各列以及對(duì)角線值的和都是23164。求4*4的魔方陣的一般步驟提示如下:設(shè)置初始魔方的起始值和相鄰元素之間的差值。例如上述魔方陣的初始魔方的起始值和相鄰元素之間的差值分別為:巾rst=1, step=2設(shè)置初始魔方元素的值。例如上述魔方的初始魔方陣為:1357911 13 1517 19 21 2325 27 29 31生成最終魔方陣。方法如下:求最大元素和最小元素的和sumi本仞I為1+31=32。國用32減去初始魔方陣所有對(duì)角線上元素的值,然后將結(jié)果放在原來的位置,即可求得最終的魔方陣。本例最終
55、魔方陣為:31 3525921191517 13 11 237 27 29 1編寫主程序,測試所設(shè)計(jì)的魔方類的正確性.5.聲明一個(gè)Employee類,數(shù)據(jù)成員包括:一個(gè)long型的id,兩個(gè)字符指針成員,代表職員的和家庭住址, 數(shù)據(jù),代表月薪。成員函數(shù)有:構(gòu)造函數(shù)、析構(gòu)函數(shù)、set_salary() 和get_salary()代表修改和獲取薪資、和get_name()代表修改和獲取、set_address() 和get_address() 代表修改和獲取家庭住址,set_id()對(duì)象數(shù)組 調(diào)用上述函數(shù)以測試用來修改獲取當(dāng)前職員的id號(hào)。在主程序中,創(chuàng)建Employee類的框架可參考:#incl
56、ude<iostream>#include<string> using namespace std; class Employee/ 聲明 Employee 類public:Employee(long = 0,char* = "000",char* = "000", double0); / 構(gòu)造函數(shù)Employee(); / 析構(gòu)函數(shù)/ set functionsvoid set_id(long);void set_salary(double);/設(shè)置id/設(shè)置salaryvoid set_name(char* );/設(shè)置name
57、void set_address(char* );/設(shè)置adress/ get functionslong get_id();/返回iddouble get_salary();/返回salarychar* get_name();/返回namechar* get_addressSecond();/返回addressvoid print();/打印輸出Employee的相關(guān)信息一個(gè) double set_name() 和 get_id()Employee類設(shè)計(jì)的正確性。char *name;/char *address; / 家庭住址double salary; / 月薪; / Employee
58、類聲明結(jié)束Employee:Employee(long , char *, char *, double ) =name=new char;address=new char;void Employee:set_address(char *q)address=q;void Employee:set_id(long a)id=a;void Employee:set_name(char *z)name=z;void Employee:set_salary(double a)/工號(hào)salary=a;private:long id;long Employee:get_id()return id;doub
59、le Employee:get_salary()return salary;char* Employee:get_name()return name;char* Employee:get_addressSecond() / 返回 addressreturn address;Employee:Employee()void Employee:print()cout<<"= ="<<endl;cout<<"tID"<<get_id()<<"tt"<<"nt 月
60、薪:"<<get_salary()<<endl;cout<<"t 住址:"<<get_addressSecond()<<endl;int main(void)cout<<"輸入要統(tǒng)計(jì)的員工數(shù)量:"int i;cin>>i;int j=0,a;double b;cout<<"nnntttt= 錄入信息="<<endl;Employee s1000;char *p;for(;j<i;j+)cout<<"n輸入員工ID:cin>>a;sj.set_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國頸椎牽引治療枕市場分析及競爭策略研究報(bào)告
- 2025至2030年中國白面牛卡紙市場分析及競爭策略研究報(bào)告
- 2025至2030年中國夾鋼絲石棉布市場分析及競爭策略研究報(bào)告
- 2025至2030年中國針織棉布市場分析及競爭策略研究報(bào)告
- 2025年學(xué)校重大事項(xiàng)請(qǐng)示報(bào)告制度與民主管理
- 學(xué)校戶外生活活動(dòng)方案
- 孝為先活動(dòng)方案
- 學(xué)校雙優(yōu)化具體活動(dòng)方案
- 學(xué)期升旗活動(dòng)方案
- 學(xué)校團(tuán)員志愿活動(dòng)方案
- 網(wǎng)絡(luò)輿情監(jiān)控管理制度
- 2024-2025學(xué)年人教版(2024)初中英語七年級(jí)下冊(cè)教學(xué)工作總結(jié)(共4套)
- Unit 1 Happy Holiday 第5課時(shí)(Section B 2a-3c) 2025-2026學(xué)年人教版英語八年級(jí)下冊(cè)
- 機(jī)器試用擔(dān)保協(xié)議書范本
- 小學(xué)生預(yù)防拐騙教育課件
- 醫(yī)學(xué)影像分析-洞察及研究
- 2025至2030中國無線通訊檢測行業(yè)市場發(fā)展分析及競爭格局與投資機(jī)會(huì)報(bào)告
- 2025年廣東高考物理試卷真題及答案詳解(精校打印版)
- 2025年上海徐匯區(qū)高一(下)信息技術(shù)合格考試題及答案
- 2025至2030年中國鐵電存儲(chǔ)器行業(yè)市場深度評(píng)估及投資機(jī)會(huì)預(yù)測報(bào)告
- 國家開放大學(xué)《理工英語1》期末機(jī)考題庫
評(píng)論
0/150
提交評(píng)論