




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 西南交通大學(xué)2012年面向?qū)ο蟪绦蛟O(shè)計試題及答案開發(fā)環(huán)境為VC+6.0,運行結(jié)果有截圖,若發(fā)現(xiàn)錯誤歡迎指正。實驗一、C+程序開發(fā)環(huán)境及c+簡單程序設(shè)計。題目1、簡單c+程序任務(wù): 按提示的操作步驟輸入下面的代碼,編譯連接并執(zhí)行。源程序代碼:#include"iostream.h"void main() cout<<"Hello!n" cout<<"Welcome to c+!"<<endl; cout<<"This is my first c+ program"&l
2、t;<endl;運行結(jié)果:題目2、編寫程序,從標(biāo)準(zhǔn)輸入讀入一個數(shù),把它轉(zhuǎn)化為英文單詞輸出,如輸入123,這是輸出“one two three”。源程序代碼:#include<iostream>using namespace std;void main() char ch; cout <<"請輸入數(shù)字用來轉(zhuǎn)化為英文單詞:" while(1) cin>>ch;if(ch='n') break; switch(ch-48) case 0:cout<<"zero " break; case 1
3、:cout <<"one " break; case 2:cout <<"two " break; case 3:cout <<"three "break; case 4:cout <<"four " break; case 5:cout <<"five " break; case 6:cout <<"six " break; case 7:cout <<"seven "b
4、reak; case 8:cout <<"eight "break; case 9:cout <<"nine " break; 運行結(jié)果:題目 3、循環(huán)結(jié)構(gòu)程序設(shè)計任務(wù)把一張一元紙幣換成一分、二分和五分的硬幣,假如每一種至少一枚,文友多少種換法,編程將各種換法顯示出來。源程序代碼:#include<iostream>using namespace std;void main()int i,j,k,x=0;cout<<"一角 "<<"兩角 "<<
5、"三角 "<<endl;for(i=1;i<=93;i+)for(k=1;k<=47;k+)for(j=1;j<=19;j+)if(i+2*k+5*j=100)x+;cout<<i<<" "<<j<<" "<<k<<" "<<endl; cout<<"換法的總數(shù)為 :"<<x<<endl;運行結(jié)果:(由于種數(shù)太多截圖不方便所以只截了最后的部分?。?/p>
6、驗二、函數(shù)題目1、內(nèi)聯(lián)函數(shù)任務(wù)(1) 定義內(nèi)斂函數(shù)max(),求兩個整數(shù)中的最大值,然后在main()函數(shù)中驚醒調(diào)用(2) 定義內(nèi)聯(lián)函數(shù)inline-fun()和一般函數(shù)common-fun(),使整型參數(shù)值加1,然后在main()函數(shù)中驚醒調(diào)用;源程序代碼:#include<iostream>using namespace std;inline int max(int x,int y);inline int inline_fun(int x);int common_fun(int x);void main()int x=4,y=5;cout<<x<<&qu
7、ot;,"<<y<<"中最大的是 :"<<max(x,y)<<endl;cout<<x<<"加1后為 :"<<inline_fun(x)<<endl;cout<<y<<"加1后為 :"<<common_fun(y)<<endl;inline int max(int x,int y) if(x>y) return x; else return y;inline int inlin
8、e_fun(int x) return +x;int common_fun(int x) return +x;運行結(jié)果:題目2、函數(shù)參數(shù)的傳遞機制、重載函數(shù)任務(wù)()編寫重載函數(shù)max1()可分別求2個整數(shù)、3個整數(shù)、2個雙精度和3雙精度數(shù)的最大值。(2)定義兩個名稱都為sum()的函數(shù),第一個函數(shù)支持整型數(shù)組,第二個函數(shù)支持浮點型數(shù)組,求數(shù)組元素的和。源程序代碼:#include<iostream>using namespace std;int max1(int x,int y) if(x>y) return x;else return y;int max1(int x,in
9、t y,int z)if(x>max1(y,z) return x;else return max1(y,z);double max1(double x,double y) if(x>y) return x;else return y;double max1(double x,double y,double z) if(x>max1(y,z) ) return x;else return max1(y,z);int sum(int *p,int n) int i=0,s=0; for(;i<n;i+) s+=pi; return s;double sum(double
10、*p,int n)int i; double s=0;for(i=0;i<n;i+)s+=pi;return s;void main()int a=1,b=2,c=3; double x=4.5, y=6.7, z=8.9;int p5=1,2,3,4,5; double q5=4.5 ,6.7,8.9,2.4,1.2;cout<<a<<","<<b<<"的最大值為 :"<<max1(a,b)<<endl;cout<<a<<","&l
11、t;<b<<","<<c<<"的最大值為 :"<<max1(a,b,c)<<endl;cout<<x<<","<<y<<"的最大值為 :"<<max1(x,y)<<endl;cout<<x<<","<<y<<","<<"的最大值為 :"<<max1(
12、x,y,z)<<endl; cout<<"int 型p數(shù)組元素的和為 :"<<sum(p,5)<<endl;cout<<"double 型數(shù)組q的元素和為 :"<<sum(q,5)<<endl;運行結(jié)果: 題目 3、帶默認(rèn)參數(shù)的函數(shù)任務(wù) 定義函數(shù)volume(),計算立體的體積,要求在主函數(shù)中以5中不同的形式調(diào)用此函數(shù)。源程序代碼:#include<iostream>using namespace std;double volume(double x=1,do
13、uble y=2,double z=3);void main()double x=4,y=5,c=6;cout<<volume()<<endl;cout<<volume(4)<<endl;cout<<volume(4,5)<<endl;cout<<volume(5,6)<<endl;cout<<volume(4,5,6)<<endl;double volume(double x,double y,double z)/注意這里不可以再帶默認(rèn)的參數(shù)!cout<<&qu
14、ot;以"<<x<<","<<y<<","<<z<<"為棱的長方體的體積為 :"return x*y*z;運行結(jié)果:實驗三、類于對象題目1、私有成員的訪問任務(wù)下面的程序中用ERROR標(biāo)明的語句有錯誤,在不刪除和增加代碼行的情況下,改正錯誤的語句,使其正確運行。錯誤代碼及改正方法:#include<iostream>using namespace std;class Aapublic :Aa(int i=0) a=i; cout<<
15、"Constructor"<<a<<endl;Aa() cout<<"Destructor"<<a<<endl;void print() cout<<a<<endl;private :int a;int main()Aa a1(1),a2(2);a1.print();cout<<a2.a<<endl;/ERROR將該行代碼中訪問了a2的私有屬性,改為a2.print();return 0;改正后的運行結(jié)果:題目2、構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)任務(wù)(1)
16、調(diào)試下列程序源程序代碼:#include <iostream>using namespace std;class Topint public:Topint(int x,int y) X=x;Y=y;Topint(Topint &p);Topint () cout<<"destructor is called n"int getx() return X;int gety() return Y;private :int X,Y;Topint:Topint(Topint &p)X=p.X; Y=p.Y;cout<<"C
17、opy -initialization Cnstructor is calledn"int main()Topint p1(4,9);Topint p2(p1);Topint p3=p2;cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")n"return 0;運行結(jié)果:問題:(1) 在該程序中將Topint類的帶有兩個參數(shù)的構(gòu)造函數(shù)進行修改,在函數(shù)體內(nèi)添加下述語句:cout<<"Constructor is
18、Called.n"。對程序的輸出結(jié)果進行分析和說明。運行結(jié)果:第一個Constructor is Called是構(gòu)造p1時產(chǎn)生的,兩個Copy-initialization Constructor is Called分別hi構(gòu)造p2 和p3 時 產(chǎn)生的。析構(gòu)p3、p2、p1,是產(chǎn)生了三個destructor is called。(2) 對上述程序在主函數(shù)中添加下列說明語句:Topint p4,p5(2)調(diào)試程序會出現(xiàn)什么現(xiàn)象,為什么?如何解決?結(jié)合運行結(jié)果分析如何使用不同的構(gòu)造函數(shù)創(chuàng)建把不同的對象?對程序的輸出結(jié)果進行分析和說明。會出現(xiàn)對象p4,p5 無法構(gòu)造。在類中將構(gòu)造函數(shù)Top
19、int(int x,int y);改成帶有默認(rèn)參數(shù)的構(gòu)造函數(shù),例如:Topint(int x=0,int y =0);運行結(jié)果:分析同上。題目3、析構(gòu)函數(shù)、new和delete運算符任務(wù) 定義字符串類,包括私有數(shù)據(jù)成員(char *ch),構(gòu)造函數(shù)中用new為ch申請空間,析構(gòu)函數(shù)用delete釋放空間,并驗證構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用書順序。源程序代碼:#include<iostream>using namespace std;class Stringprivate :char *ch;int n;public :String(int n=0) this->n=n; ch=n
20、ew charn; cout<<"構(gòu)造函數(shù)被調(diào)用!"<<n<<endl; void set() cout<<"請輸入"<<n<<"字符用來構(gòu)造字符串。"<<endl; for(int i=0;i<n;i+) cin>>chi; void show() cout<<"字符串的儲存的內(nèi)容如下:"<<endl;for(int i=0;i<n;i+) cout<<chi; cout
21、<<endl;String() cout<<"析構(gòu)函數(shù)被調(diào)用!"<<n<<endl; delete ch; ;void main() int n1,n2; cout<<"請分別輸入你所要建立的兩個字符串的含有字符的個數(shù) :"<<endl; cin>>n1>>n2;String s1(n1),s2(n2);s1.set();s2.set();s1.show();s2.show();運行結(jié)果:可以看出構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用的順序相反!注意:特別重視構(gòu)造函數(shù)、拷貝
22、構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用以及調(diào)用順序,這在整個面向?qū)ο蟪绦蛟O(shè)計中一直是重點同時也一直是難點。實驗四、靜態(tài)成員與友元題目1、靜態(tài)成員的特性任務(wù)(1) 調(diào)試下列程序,寫出輸出的結(jié)果,并分析輸出結(jié)果。程序代碼: #include<iostream>using namespace std;class Mypublic :My(int aa) A=aa;B-=aa;static void fun(My m);private :int A;static int B;void My:fun(My m)/這里的靜態(tài)函數(shù)在類外實現(xiàn)時就無需在家static關(guān)鍵字。cout<<"A
23、="<<m.A<<endl;cout<<"B="<<B<<endl;int My:B=100;/靜態(tài)的數(shù)據(jù)成員要在類外進行初始化,并且初始化時無需加關(guān)鍵字限定。int main()My P(6),Q(8);My:fun(P);/靜態(tài)函數(shù)的調(diào)用形式。 Q.fun(Q);return 0;運行結(jié)果:可以看出,static的數(shù)據(jù)成員是不屬于任何的對象的而屬于整個類。Static函同樣是屬于整個類可以用類名加作用域標(biāo)識符進行調(diào)用,也可以用對象進行調(diào)用,兩種形式的調(diào)用效果等價。題目2、友元函數(shù)任務(wù) 分析并調(diào)試程序,
24、完成下列問題程序代碼:#include<iostream>#include<cmath>using namespace std;class Mypublic:My (double i=0) x=y=i;My(double i,double j) x=i;y=j;My (My &m) x=m.x;y=m.y;friend double dist(My &a,My &b);private :double x,y;double dist (My &a,My &b)double dx=a.x-b.y;double dy=a.y-b.y;r
25、eturn sqrt(dx*dx+dy*dy);int main()My m1,m2(15),m3(13,14);My m4(m3);cout<<"The distancel :"<<dist(m1,m3)<<endl;cout<<"The distance2 :"<<dist(m2,m3)<<endl;cout<<"The distance3 :"<<dist(m3,m4)<<endl;cout<<"Th
26、e distance4 :"<<dist(m1,m2)<<endl;return 0;運行結(jié)果:思考:(1) 指出所有的構(gòu)造函數(shù),它們在本程序中分別起什么作用?My (double i=0);My(double i,double j) ;My (My &m) ;第一個實現(xiàn)單參和帶有一個默認(rèn)參數(shù)構(gòu)造,第二個實現(xiàn)雙參構(gòu)造;第三個事拷貝構(gòu)造函數(shù)。(實際上前兩個可以合并為一個My(double i=0;double j);). (2)指出設(shè)置默認(rèn)參數(shù)的構(gòu)造函數(shù)。(前面已回答) (3)指出友元函數(shù)。將友元函數(shù)放到私有部分,觀察結(jié)果是否有變化。 友元函數(shù)為:dou
27、ble dist(My &a,My &b);放到私有部分是沒有變化的。 (4)寫出結(jié)果并分析結(jié)果。(結(jié)果已給出)題目3、靜態(tài)成員的應(yīng)用任務(wù)定義一個Student類,在該類中定義包括一個數(shù)據(jù)成員score()(分?jǐn)?shù))、兩個靜態(tài)數(shù)據(jù)成員total(總分)和學(xué)生人數(shù)count;成員函數(shù)scoretotalcount(float s)用于設(shè)置分?jǐn)?shù)、求總分和累加學(xué)生人數(shù);靜態(tài)成員函數(shù)sum()用于計算總分;靜態(tài)成員函數(shù)average()用于計算平均值。在main(0函數(shù)中輸入學(xué)生成績,并調(diào)用上述函數(shù)求出全班學(xué)生的總分和平均分。源程序代碼:#include<iostream>u
28、sing namespace std;class Studentprivate :double score; static double total;static int count;public :Student() count+;void scoretotalcount() cin>>score;total+=score; double gets() return score; static void sum() cout<<"這個班的學(xué)生該課程的總分為 :"<<total<<endl;static void averag
29、e() cout<<"這個班的學(xué)生該課程的平均分為 :"<<total/count<<endl;double Student:total=0;int Student:count=0;void main()Student s10;cout<<"請輸入10個學(xué)生的成績 :"for(int i=0;i<10;i+)si.scoretotalcount();cout<<"這10個學(xué)生的成績?yōu)?:" for(i=0;i<10;i+) cout<<si.gets(
30、)<<ends; cout<<endl; Student:sum(); Student:average();運行結(jié)果:題目4、友元函數(shù)的應(yīng)用任務(wù) 聲明Book和Ruler兩個類,二者都有weight屬性,定義二者的一個友元函數(shù)totalweight(),計算二者的重量和。源程序代碼:#include<iostream>using namespace std;class Book;class Rulerprivate :double weight;public :Ruler(double x=0) :weight(x) void set() cout<&
31、lt;"請輸入你在Ruler類中所要設(shè)置weight的值 :" cin>>weight;void show() cout<<"weight ="<<weight<<endl;friend void totalweight(Book &a,Ruler &b);class Bookprivate :double weight;public :Book(double x=0) :weight(x) void set() cout<<"請輸入你在Book類所要設(shè)置weight的
32、值 :" cin>>weight;void show() cout<<"weight ="<<weight<<endl;friend void totalweight(Book &a,Ruler &b);void totalweight(Book &a,Ruler &b)cout<<"二者的重量之和為 :"<<a.weight+b.weight<<endl;void main()Book b;Ruler r;b.set();b.s
33、how();r.set();r.show();totalweight(b,r);這里子兩個類中屬性比較單一,主要是為使用友元函數(shù),如果需要可以添加其他屬性。運行結(jié)果:實驗五、繼承與派生題目1、單繼承任務(wù) 調(diào)試下列程序,并對程序進行修改,指出程序中錯誤的原因。程序代碼:#include<iostream>using namespace std;class Apublic :void seta(int i) a=i;int geta() return a;public :int a;class B :public Apublic :void setb(int i) b=i;int ge
34、tb() return b;void show() cout<<"A:a="<<a<<endl;public :int b;int main()B bb;/語句1bb.seta(6);/語句2bb.setb(3);/語句3bb.show();cout<<"A:a="<<bb.a<<endl;cout<<"B:b="<<bb.b<<endl;cout<<"A:a="<<bb.geta()
35、<<endl;cout<<"B:a="<<bb.getb()<<endl;return 0;運行結(jié)果:問題(1) 、將派生類B的繼承方式改為private,會出現(xiàn)那些錯誤和不正常的現(xiàn)象?為什么?在main()函數(shù)中直接使用用A類的屬性將是不可以的,因為繼承方式是private所以其屬性將不可以直接被調(diào)用!(2) 將派生類的繼承方式改為protected,會出現(xiàn)哪些錯誤和不正常的現(xiàn)象?為什么?同(1)支部過集成的方式改為protected。(3) 將派生類B的繼承方式恢復(fù)為public后,再將類A的數(shù)據(jù)成員int型的變量a的訪問
36、權(quán)限改為private時,會出現(xiàn)哪些錯誤和不正常的現(xiàn)象?為什么?將會出現(xiàn)在B類和main函數(shù)中是用數(shù)據(jù)a是不可以的,一維在A類中a是屬性為private。(4) 派生類B的繼承方式仍為public,再將類A中的數(shù)據(jù)成員int型的變量a的訪問權(quán)限該為 protected,會出現(xiàn)哪些錯誤和不正常的現(xiàn)象?為什么?更改后數(shù)據(jù)a在B類中是可以使用,但在main函數(shù)仍是不可以被使用的,因為繼承方式是protected!題目2、利用繼承與派生類來管理學(xué)生和教師的檔案任務(wù)假設(shè)要管理下述基類人員的如下的數(shù)據(jù)Teacher(教師):姓名、性別、年齡、職稱、教授課程;Student(學(xué)生): 姓名、性別、年齡、學(xué)號
37、、專業(yè);Graduate():姓名、性別、年齡、學(xué)號、專業(yè)、導(dǎo)師;源程序代碼:#include<iostream>#include<string>using namespace std;class Personprivate :string xm,xb;int age;public :Person(string na,string sex,int a) :xm(na),xb(sex),age(a)void show() cout<<" 姓名 :"<<xm<<" 性別 :"<<xb&l
38、t;<" 年齡 :"<<age;class Teacher :public Personprivate :string zc,kc;public :Teacher(string na,string sex,int a,string z,string k):Person(na,sex,a),zc(z),kc(k)void show() Person:show(); cout<<" 職稱 :"<<zc<<" 教授課程 :"<<kc<<endl;class Stu
39、dent :public Personprivate :string xh,sb;public :Student(string na,string sex,int a,string x,string s):Person(na,sex,a),xh(x),sb(s)void show() Person:show(); cout<<" 學(xué)號 :"<<xh<<" 專業(yè) :"<<sb;class Graduate :public Student private :string ds;public :Graduate(
40、string na,string sex,int a,string x,string s,string d):Student(na,sex,a,x,s),ds(d)void show() Student:show();cout<<"導(dǎo)師 :"<<ds<<endl;void main()Teacher t("張三","男",45,"教授","面向?qū)ο蟪绦蛟O(shè)計");Student s("李四","男",20,"20
41、1100001","計算機科學(xué)與技術(shù)");Graduate g("李紅","女",24,"200800001","計算機科學(xué)與技術(shù)","張三"); t.show(); s.show();cout<<endl; g.show();運行結(jié)果:題目3、教師干部類定義Person(人)類,由Person分別派生Teacher(教師)類和Cader(干部)類,再有Teacher(教師)類和Caderl類采用多重繼承的方式派生出TeacherCader(教師兼干部)
42、類。源程序代碼:#include<iostream>#include<string>using namespace std;class Personprivate :string xm,xb;int age;public :Person(string na,string sex,int a) :xm(na),xb(sex),age(a)void show() cout<<" 姓名 :"<<xm<<" 性別 :"<<xb<<" 年齡 :"<<
43、age;class Teacher :virtual public Personprivate :string zc;public :Teacher(string na,string sex,int a,string z):Person(na,sex,a),zc(z)void show1() Person:show(); cout<<" 職稱 :"<<zc;void show()cout<<" 職稱 :"<<zc;class Cader : virtual public Personprivate :str
44、ing post;public :Cader(string na,string sex,int a,string p):Person(na,sex,a),post(p)void show1() Person:show(); cout<<" 職務(wù):"<<post;void show() cout<<" 職務(wù):"<<post;class TeacherCader :public Teacher,public Caderprivate:double wages;public :TeacherCader(strin
45、g na,string sex,int a,string z,string p,double w):Person(na,sex,a),Teacher(na,sex,a,z),Cader(na,sex,a,p),wages(w)void show() Person:show(); Teacher:show();Cader:show(); cout<<" 工資:"<<wages<<endl;void main()Teacher t("張三","男",45,"教授");Cader c(
46、"李四","男",55,"校長"); TeacherCader tc("王五","女",45,"教授","院長",10000);t.show1();cout<<endl;c.show1();cout<<endl;tc.show();運行結(jié)果:實驗六、虛函數(shù)與多態(tài)題目1、動態(tài)聯(lián)編和靜態(tài)聯(lián)編任務(wù)分析并調(diào)試下列程序程序代碼:#include<iostream>using namespace std;class Basepubl
47、ic :virtual void f(float x) cout<<"Base:f(float)"<<x<<endl;void g(float x) cout<<"Base:g(float)"<<x<<endl;void h(float x) cout<<"Base:h(float)"<<x<<endl;class Derived :public Basepublic :virtual void f(float x) cout&
48、lt;<"Derived:f(float)"<<x<<endl;void g(int x) cout<<"Derived:g(int)"<<x<<endl;void h(float x) cout<<"Derived :h(float)"<<x<<endl;int main()Derived d;Base *pb=&d;Derived *pd=&d;pb->f(3.14f);pd->f(3.14f);pb-
49、>g(3.14f);pd->h(3.14f);pd->h(3.14f);return 0;運行結(jié)果:問題:(1) 找出以上程序張是使用了重載和覆蓋的函數(shù)。覆蓋的有virtual void f(float x);和void h(float x);重載的有void g(int x)和void g(float x) ; (2)寫出程序的輸出結(jié)果,并解釋結(jié)果。結(jié)果已截圖解釋省去。題目2、動態(tài)聯(lián)編和靜態(tài)聯(lián)編任務(wù)分析并調(diào)試下列程序:#include<iostream>using namespace std;const double PI=3.1415;class Sharpp
50、ublic :virtual double Area()=0;class Triangle :public Sharppublic :Triangle (double h,double w) H=h;W=w;double Area() return 0.5*W*H;private:double H,W;class Rectangle :public Sharppublic :Rectangle (double h,double w) H=h;W=w; double Area() return H*W;private :double H,W;class Cricle :public Sharpp
51、ublic :Cricle(double r) R=r;double Area() return PI*R*R;private :double R;class Squre :public Sharppublic :Squre(double s) S=s;double Area() return S*S;private :double S;double Total (Sharp *s,int n)double sum=0;for(int i=0;i<n;i+)sum=sum +si->Area();return sum;int main()Sharp *s5;s0=new Squre
52、(4.0);s1=new Rectangle(2.0,4.0);s2=new Squre(8.0);s3=new Cricle(2.0);s4 =new Triangle(4.0,8.0);double sum=Total(s,5);cout<<"SUM="<<sum<<endl;return 0;運行結(jié)果:問題(1) 指出抽象類;Sharp(2) 指出純虛函數(shù),并說明它的作用。Double Area()=0是抽象類,作用是為同類的函數(shù)日工同意的外部接口。 (3)每個類的作用是什么,正程序的作用是什么?讀者可以通過讀程序就會明白該程序的作
53、用和每個類的作用,所以就不在這里做過多的解釋。題目3.圖形類的設(shè)計任務(wù) 定義抽象類Shape;Class Shape Public : virtual double Area()=0;/任意圖形的面積 virtual double Volume()=0;/任意圖形的體積;要求(1) 定義派生類CIrcle(圓)、Rectangle(矩形),并實現(xiàn)相應(yīng)的純虛函數(shù)。(2) 定義CAR,使得到通過CAR一如下方式統(tǒng)一操作Circle和Rectangle圖形。 class CARprivate: Shape &shape;public:CAR (Shape &s):shape(s);
54、double Area() return shape.Area(); double Volume() return shape.Volume();源程序代碼:#include<iostream>using namespace std;const double PI=3.1415;class Shapepublic :virtual double Area()=0; virtual double Volume()=0;class Triangle :public Shapepublic :Triangle (double h,double w) H=h;W=w;double Area
55、() return 0.5*W*H; double Volume()return 0.0;/注意著里即使不用Volume()屬性也要對其進行一定函數(shù)實現(xiàn)。private:double H,W;class Rectangle :public Shapepublic :Rectangle (double h,double w) H=h;W=w; double Area() return H*W; double Volume()return 0.0;private :double H,W;class Cricle :public Shapepublic :Cricle(double r) R=r;d
56、ouble Area() return PI*R*R; double Volume()return 0.0;private :double R;class Squre :public Shapepublic :Squre(double s) S=s;double Area() return S*S; double Volume()return 0.0;private :double S;class FT :public Shape public : double Volume()return H*W*G; double Area() return 0.0;FT(double h,double
57、w,double g) H=h;W=w;G=g;private:double W ,H,G;class CARprivate: Shape &shape;public:CAR (Shape &s):shape(s); double Area() return shape.Area(); double Volume() return shape.Volume();void main()Cricle a(5.0); Rectangle c(10.0,5.0);FT b(10.0,8.0,9.0);CAR A(a),C(c),B(b);cout<<"圓A的面積為
58、 :"<<A.Area()<<endl; cout<<"球B的體積為 :"<<B.Volume()<<endl;cout<<"矩形C的面積為 :"<<C.Area()<<endl;運行結(jié)果:題目4、運算符重載任務(wù) 定義一個Time用來保存時間(時、分、秒),通過重載操作符“+”實現(xiàn)兩個時間的相加。要求 定義一個Time類,包括3個數(shù)據(jù)成員:hours(時)、minutes(分)、second(秒),另外兩個構(gòu)造函數(shù),時間相加運算符“+”重載函數(shù)輸出函
59、數(shù)gettime().源程序代碼:#include<iostream>#include<iomanip>using namespace std;class Timeprivate :int h,m,s;public :Time (int h=0,int m=0,int s=0) this->h=h;this->m=m;this->s=s;Time(Time &t) h=t.h;m=t.m;s=t.s;void operator +(Time &t) h+=t.h;m+=t.m;s+=t.s;void gettime() cout<
60、<"現(xiàn)在時間為 :"cout.fill('0'); cout<<setw(2)<<h<<":"<<setw(2)<<m<<":"<<setw(2)<<s<<endl;void main()Time t1(5,5,5),t2(10,10,10);t1.gettime();t2.gettime(); t1+t2;t1.gettime();運行結(jié)果:實驗7、模板與STL庫題目1、函數(shù)模板任務(wù) 編寫一個函數(shù)模板實現(xiàn)
61、n個數(shù)據(jù)的最小值,具體要求為:能求不同的數(shù)據(jù)類型的最小值,n個數(shù)據(jù)由鍵盤輸入。可以用int、float、double等類型的參數(shù),并在main函數(shù)進行測試。源程序代碼:#include <iostream>using namespace std;template <class T>T min(T *a,int n)T k=a0;for(int i=0;i<n;i+)if(ai<k) k=ai;return k;void main()int n;cout<<"請輸入n的值:" cin>>n;int *p=new in
62、tn;double *q=new doublen;cout<<"請輸入"<<n<<"個整型的數(shù) :"for(int i=0;i<n;i+) cin>>pi;cout<<"請輸入"<<n<<"個雙精度的數(shù) :"for(i=0;i<n;i+) cin>>qi;cout<<endl<<n<<"個整型數(shù)中最小的是 :"<<min(p,n)<&l
63、t;endl;cout<<n<<"個雙精度數(shù)最小的是 :"<<min(q,n)<<endl;delete p; delete q; 運行結(jié)果:題目 2、類模板任務(wù) 編寫一個使用類模板對數(shù)組經(jīng)型排序、查找和求元素的和的程序,并才用相關(guān)的數(shù)據(jù)進行測試。源程序代碼:#include<iostream>#include<cstdlib>using namespace std;template <class T> class szprivate :T *a;int n;public :sz(int nn) :n(nn)void set(T *p) a=p ; cout<<&quo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅靖遠縣高三數(shù)學(xué)試卷
- 高校聯(lián)盟數(shù)學(xué)試卷
- 方城縣中學(xué)二模數(shù)學(xué)試卷
- 關(guān)于千克方面的數(shù)學(xué)試卷
- 2025年甘肅中醫(yī)藥大學(xué)招聘41人筆試歷年專業(yè)考點(難、易錯點)附帶答案詳解
- 2025至2030船體清潔機器人行業(yè)市場深度調(diào)研及前景趨勢與投資報告
- 贛州高考二模數(shù)學(xué)試卷
- 二年級畢業(yè)題數(shù)學(xué)試卷
- 高一集合數(shù)學(xué)試卷
- 體育賽事官方藝術(shù)家合作項目的社區(qū)參與度分析考核試卷
- 2025河南省豫地科技集團社會招聘169人筆試參考題庫附帶答案詳解
- 人教版(2024)七年級下冊英語期末模擬測試卷(含答案)
- 兵團開放大學(xué)2025年春季《公共關(guān)系學(xué)》終結(jié)考試答案
- 電線電纜出入庫管理制度
- 供應(yīng)蒸汽服務(wù)合同協(xié)議書
- T/CADCC 003-2024汽車漆面保護膜施工技術(shù)規(guī)程
- 中國機器人工程市場調(diào)研報告2025
- 2025年金融科技企業(yè)估值方法與投資策略在金融科技企業(yè)并購中的應(yīng)用案例報告
- 福建省廈門市雙十中學(xué)2025屆七年級生物第二學(xué)期期末聯(lián)考模擬試題含解析
- 【小學(xué)】新蘇教版小學(xué)數(shù)學(xué)四年級下冊暑假每日一練(02):計算題-應(yīng)用題(含答案)
- 2025豬藍耳病防控及凈化指南(第三版)
評論
0/150
提交評論