《面向?qū)ο蟪绦蛟O(shè)計》答案_第1頁
《面向?qū)ο蟪绦蛟O(shè)計》答案_第2頁
《面向?qū)ο蟪绦蛟O(shè)計》答案_第3頁
《面向?qū)ο蟪绦蛟O(shè)計》答案_第4頁
《面向?qū)ο蟪绦蛟O(shè)計》答案_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗一熟悉VC++IDE開發(fā)環(huán)境一、實驗?zāi)康?熟悉VC++6.0集成開發(fā)環(huán)境,熟練掌握VC++6.0項目工作區(qū)、各種編輯器、菜單欄和工具欄的使用。2、掌握如何編輯、編譯、連接和運行一個 C++程序。3、 通過運行簡單的C++程序,初步了解C++源程序的結(jié)構(gòu)和特點。二、實驗要求1分析下列程序運行的結(jié)果。程序一:intadd(intx,inty=8);voidmain()intadd(intx,inty=8);voidmain(){intx=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}intadd(intx,inty){ returnx+y;}〃12,28程序二:#inelude<iostream.h>voidmain(){int*p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}〃i=15程序三:#inelude<iostream.h>void main(void){inti=10;int &r=i;r++;cout<<"i="<<i<<",r="<<r<<'\n';i=88;cout<<"i="<<i<<",r="<<r<<'\n';}〃i=11,r=11i=88,r=88程序四:#inelude<iostream.h>intf(inti){staticintk=1;for(;i>0;i--)k+=i;returnk;}voidmain(){inti;for(i=0;i<5;i++)eout<<f(i)<<"";}//1 2 5 11 21程序五:#inelude<iostream.h>voidfunc();intn=1;voidmain(){staticinta;intb=-9;cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;b+=4;func();cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;n+=10;func();}voidfunc(){staticinta=2;intb=5;a+=2;n+=12;b+=5;cout<<"a:"<<a<<"b:"<<b<<"n:"<<n<<endl;}//a:0b:-9n:1a:4b:10n:13a:0b:-5n:13a:6b:10n:35實驗二C++對C的擴充、實驗?zāi)康?、了解在面向?qū)ο蟪绦蛟O(shè)計過程中 C++對C功能的擴充與增強,并善于在編寫程序的過程中應(yīng)用這些新功能。2、進一步熟悉編輯、編譯、連接和運行 C++程序的方法。3、 進一步熟悉C++程序的結(jié)構(gòu)和編程方法。二、實驗要求1分析下列程序運行的結(jié)果。#inelude<iostream.h>intvoid{amount=123;intvoid{main()intamount=456;cout<<::amount<<',';cout<<amount<<',';::amount=789;eout<<::amount<<',';cout<<amount<<'\n';}II123,456,789,4562、編寫一個程序,用來求 2個或3個正整數(shù)中的最大數(shù)。①用不帶默認參數(shù)的函數(shù)實現(xiàn)。include<iostream>usingnamespacestd;intmax(inta,intb,intc){if(b>a)a=b;if(e>a)a=e;returna;}include<iostream>usingnamespacestd;intmax(inta,intb,intc){if(b>a)a=b;if(e>a)a=e;returna;}intmax(inta,intb){if(a>b)returna;elsereturnb;}intmain(){inta=7,b=-4,c=9;cout<<max(a,b,c)<<endl;cout<<max(a,b)<<endl;return0;}②用帶默認參數(shù)的函數(shù)實現(xiàn)?!ㄇ?個整數(shù)中的最大者II求兩個整數(shù)中的最大者II輸出3個整數(shù)中的最大者II輸出兩個整數(shù)中的最大者#inelude<iostream>usingnamespacestd;intmain(){intmax(inta,intb,inte=0);inta,b,c;cin>>a>>b>>c;cout<<"max(a,b,c)="<<max(a,b,c)<<endl;cout<<"max(a,b)="<<max(a,b)<<endl;return0;}intmax(inta,intb,intc){if(b>a)a=b;if(c>a)a=c;returna;}3、有5個字符串,要求對它們按由小到大順序排列,用 string方法。#include<iostream>#include<string>usingnamespacestd;intmain(){inti;stringstr[5]={"BASIC","C","F0RTRAN","C++","PASCAL"};voidsort(string[]);sort(str);cout<<"thesortedstrings:"<<endl;for(i=0;i<5;i++)cout<<str[i]<<"";cout<<endl;return0;}voidsort(strings[]){inti,j;stringt;for(j=0;j<5;j++)for(i=0;i<5-j;i++)if(s[i]>s[i+1]){t=s[i];s[i]=s[i+1];s[i+1]=t;}}4、定義一個求兩個數(shù)中較小值的函數(shù)模板 min(),要求在main()函數(shù)中進行調(diào)用求兩個浮點型數(shù)據(jù)和兩個整型數(shù)據(jù)中較小的數(shù)。#include"iostream"#include"string"usingnamespacestd;template<typenameT>Tmin(Ta,Tb){returna<b?a:b;}intmain(){inta=1,b=9;floatc=1.23471,d=32.431564;cout<<"Theminof"<<a<<"and"<<b<<"is"<<min(a,b)<<endl<<"Theminof"<<c<<"and"<<d<<"is"<<min(c,d)<<endl;return0;}實驗三類和對象(一)、實驗?zāi)康?掌握聲明類的方法,類和類的成員的概念以及定義對象的方法。2、 掌握類的構(gòu)造函數(shù)與析構(gòu)函數(shù)的概念和使用方法。3、 初步掌握用類和對象編制基于對象的程序。二、實驗要求1、分析下面的程序,寫出其運行時的輸出結(jié)果。#include<iostream>usingnamespacestd;classDate{public:Date(int,int,int);Date(int,int);Date(int);Date();voiddisplay();private:intmonth;intday;intyear;};Date::Date(intm,intd,inty):month(m),day(d),year(y){}Date::Date(intm,intd):month(m),day(d){year=2005;}Date:Date(intm):month(m){day=1;year=2005;}Date:Date(){month=1;day=1;year=2005;}voidDate::display(){cout<<month<<〃/〃<<day<<"/〃<<year<<endl;}intmain()

Dated1(10,13,2005);Dated2(12,30);Dated3(10);Dated4;d1.display();d2.display();d3.display();d4.display();return0;}//}//10/13/200512/30/200510/1/20051/1/20052、建立一個名為Student2、#include"iostream"#include"string"usingnamespacestd;classstudent{public:student();voiddisplay();private:stringsName,sNum;charchSex;intiAge;};student::student(stnngna,stringnum,chars,inta):sName(na),sNum(num),chSex(s),iAge(a){}voidstudent::display(){cout<<" THEINFORMATIONOFSTUDENT \n";cout<<"name:"<<sName<<endl<<"number: "<<sNum<<endl<<"sex: "<<chSex<<endl<<"age: "<<iAge<<endl;}intmain(){students("WangFang","0811045263",'w',20);

s.display();return0;}3、類Person的定義如下,請實現(xiàn)該類,并在主函數(shù)中創(chuàng)建對象 obj,然后使用構(gòu)造函數(shù)為obj賦予初始值(內(nèi)容自定)。classPerson{private:charname[10];intage;intsalary;chartel[8];public:Person(char*xname,intxage,intxsalary,char*xtel);voiddisp();};解:#inelude<iostream.h>#include<string.h>Person::person(char*Xname,intXage,intXsalary,char *Xtel){strcpy(name,xname);姓名:”<<name<<endl;年齡”:<<age<<endl;工資”:<<salary<<endl:電話”:<<tel<<endl;age=xage;salary=xsalary;strcpy(tel,xtel);}voidPerson::disp(){cout<<姓名:”<<name<<endl;年齡”:<<age<<endl;工資”:<<salary<<endl:電話”:<<tel<<endl;}voidmain(){Personobj(張三”,25,850,“45678912”);obj.disp()}實驗四類和對象(二)一、實驗?zāi)康?進一步加深對類和對象的理解。2、 掌握對類的對象數(shù)組、對象的指針及其使用方法。3、 掌握友元的概念和使用。4、 了解類模板的使用方法。二、實驗要求1分析并比較下列程序運行的結(jié)果。程序一:#include<iostream.h>#include<iostream.h>classsmallone{public:smallone(intsma){cout<<"smconstr:"<<sma<<"\n";}};voidfn(intn){smallonesm(n);cout<<"infunctionfnwithn="<<n<<endl;}intmain(){ fn(10);fn(20);return0;}//smconstr:10infunctionfnwithn=10smconstr:20infunctionfnwithn=20程序二:#include<iostream.h>#include<iostream.h>classsmallone{public:smallone(intsma){cout<<"smconstr:"<<sma<<"\n";}};voidfn(intn){staticsmallonesm(n);cout<<"infunctionfnwithn="<<n<<endl;}intmain(){ fn(10);fn(20);return0;}//smconstr:10infunctionfnwithn=10infunctionfnwithn=202、建立一個對象數(shù)組,內(nèi)放5個學生的數(shù)據(jù)(學號、成績),設(shè)立一個函數(shù)max,用指向?qū)ο蟮闹羔樧骱瘮?shù)參數(shù),在max函數(shù)中找出5個學生中成績最高者,并輸出其學號。#inelude<iostream>usingnamespacestd;classStudent{public:Student(intn,floats):num(n),score(s){}intnum;floatscore;};voidmain(){Studentstud[5]={Student(101,78.5),Student(102,85.5),Student(103,98.5),Student(104,100.0),Student(105,95.5)};voidmax(Student*);Student*p=&stud[0];max(p);reyurn0;}voidmax(Student*arr){floatmax_score=arr[0].score;intk=0;for(inti=1;i<5;i++)if(arr[i].score>max_score){max_score=arr[i].score;k=i;}cout<<arr[k].num<<""<<max_score<<endl;}3、聲明一個類模板,禾U用它分別實現(xiàn)兩個整數(shù)、浮點數(shù)和字符的比較,求出大數(shù)和小數(shù)。#include<iostream>usingnamespacestd;template<classnumtype〉classCompare{public:Compare(numtypea,numtypeb){x=a;y=b;}numtypemax(){return(x>y)?x:y;}numtypemin(){return(x<y)?x:y;}private:numtypex,y;};intmain(){Compare<int>emp1(3,7);cout<<cmp1.max()<<"istheMaximumoftwointedernumbers."<<endl;cout<<cmp1.min()<<"istheMinimumoftwointedernumbers."<<endl<<endl;Compare<float>emp2(45.78,93.6);

cout<<cmp2.max()<<"istheMaximumoftwofloatnumbers."<<endl;cout<<cmp2.min()<<"istheMinimumoftwofloatnumbers."<<endl<<endl;Compare<char>cmp3('a','A');cout<<cmp3.max()<<"istheMaximumoftwocharacters."<<endl;cout<<cmp3.min()<<"istheMinimumoftwocharacters."<<endl;return0;}實驗五運算符重載、實驗?zāi)康?進一步了解運算符重載的概念和使用方法。2、掌握幾種常用的運算符重載的方法。二、實驗要求1、定義一個復(fù)數(shù)類Complex,重載運算法“+”,使之能用于復(fù)數(shù)的加法運算。將運算符重載為普通函數(shù)(非成員、非友元)、成員函數(shù)、友元函數(shù)。根據(jù)要求修改通過函數(shù)來實現(xiàn)復(fù)數(shù)相加的示例,分別編寫程序,求兩個復(fù)數(shù)之和。#include<iostream>//定義//定義Complex類classComplex//構(gòu)造函數(shù)//構(gòu)造函數(shù)//聲明復(fù)數(shù)相加函數(shù)CompIex(floatx=0,floaty=O){real=x;imag=y;}Complexcompiex_add(Complex&c2);void display(){cout<<real<<'+'<<imag<<'i'<<endl;};//實部//實部//虛部floatreal;floatimag;};Complexc;c.real=real+c2.real;Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}int{}int{main()//定義//定義3個復(fù)數(shù)對象//進行兩個復(fù)數(shù)的加運算compiex=plex_add(compIex2);compiex.display();return0;}//16.14+10i〃普通函數(shù)(非成員、非友元)#include<iostream>usingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}CompIex(doubler,doublei){real=r;imag=i;}doubleget_real();doubleget_imag();voiddisplay();private:doublereal;doubleimag;};doubleCompIex::get_real(){returnreal;}doubleCompIex::get_imag(){returnimag;}voidComplex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}Complexoperator+(Complex&c1,Complex&c2){returnCompIex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());}intmain(){Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c3=";c3.display();return0;}//運算符重載為成員函數(shù)#include<iostream>usingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}CompIex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c2);voiddisplay();private:doublereal;doubleimag;};ComplexCompIex::operator+(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}voidComplex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}intmain(){Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c1=";c1.display();cout<<"c2=";c2.display();cout<<"c1+c2=";c3.display();return0;}//將運算符重載為友元函數(shù)#include<iostream>usingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}CompIex(doubler){real=r;imag=0;}CompIex(doubler,doublei){real=r;imag=i;}friendComplexoperator+(Complex&c1,Complex&c2);voiddisplay();private:doublereal;doubleimag;};Complexoperator+(Complex&c1,Complex&c2){returnCompIex(c1.real+c2.real,c1.imag+c2.imag);}voidComplex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}intmain(){Complexc1(3,4),c2(5,-10),c3;c3=c1+c2;cout<<"c1=";cl.display();cout<<"c2=";c2.display();cout<<"c1+c2=";c3.display();return0;}實驗六繼承和派生、實驗?zāi)康?、 了解繼承在面向?qū)ο蟪绦蛟O(shè)計中的重要作用。2、 進一步理解繼承與派生的概念。3、 掌握通過繼承派生出一個新的類的方法。4、 了解虛基類的作用和用法。二、實驗要求1、運行程序,分析構(gòu)造函數(shù)與析構(gòu)函數(shù)的調(diào)用順序。程序一:#include<iostream.h>classA{public:A(){cout<<"A:Constructor"<<endl;}~A(){cout<<"A:Destructor"<<endl;}};classB:publicA{public:B(){cout<<"B:Constructor"<<endl;}~B(){cout<<"B:Destructor"<<endl;}};voidmain(){Bb;}//A:ConstructorB:ConstructorB:DestructorA:Destructor程序二:#include<iostream.h>classA{inta;public:A(intaa=0) {a=aa;}~A() {cout<<”DestructorA!”<<a<<endl;}};

classB:PublicA{intb;public:B(intaa=0,intbb=0):classB:PublicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B() {cout<<”DestructorB!”};voidmain(){Bx(5),y(6,7);}//DestructorB!7DestructorA!6DestructorB!0DestructorA!5調(diào)用順序:構(gòu)造x.Aa=5構(gòu)造X.Ba=5y.Ba=6 b=7析構(gòu)y.BB!72、分別聲明Teacher(教師)類和類Teacher_Cader類。要求:在兩個基類種豆包含姓名、年齡、在Teacher類中還包含數(shù)據(jù)成員<<b<<endl;b=0構(gòu)造y.A//不匹配,不調(diào)用A()構(gòu)造A!6析構(gòu)X.BB!0析構(gòu)x.AA!5析構(gòu)y.ACadre(干部)類,采用多重繼承方式由這兩個類派生出新性別、地址、電話等數(shù)據(jù)成員。title(職稱),在Cader類中還包含數(shù)據(jù)成員post(職務(wù))。在Teacher_Cader類中還包含數(shù)據(jù)成員wages(工資)。在對兩個基類中的姓名、年齡、性別、地址、電話等數(shù)據(jù)成員用相同的名字,在引用這些數(shù)據(jù)成員時,指定作用域。在類體中聲明成員函數(shù),在類外定義數(shù)據(jù)成員。在派生類Teacher_Cade啲成員函數(shù)show中調(diào)用Teacher類中的display函數(shù),輸出姓名、年齡、性別、職稱、地址、電話,然后再調(diào)用 cout語句輸出職務(wù)和工資。#include<string>#include<iostream>usingnamespacestd;classTeacher{public:Teacher(stringnam,inta,chars,stringtit,stringad,stringt);voiddisplay();protected:stringname;intage;charsex;stringtitle;stringaddr;stringtel;};Teacher::Teacher(stringnam,inta,chars,stringtit,stringad,stringt):name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){}voidTeacher::display(){cout<<"name:"<<name<<endl;cout<<"age"<<age<<endl;cout<<"sex:"<<sex<<endl;cout<<"title:"<<title<<endl;cout<<"address:"<<addr<<endl;cout<<"tel:"<<tel<<endl;}classCadre{public:Cadre(stringnam,inta,chars,stringp,stnngad,stringt);voiddisplay();protected:stringname;intage;charsex;stringpost;stringaddr;stringtel;};Cadre::Cadre(stringnam,inta,chars,stringp,stnngad,stringt):name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}voidCadre::display(){cout<<"name:"<<name<<endl;cout<<"age:"<<age<<endl;cout<<"sex:"<<sex<<endl;cout<<"post:"<<post<<endl;cout<<"address:"<<addr<<endl;cout<<"tel:"<<tel<<endl;}classTeacher_Cadre:publicTeacher,publicCadre{public:Teacher_Cadre(stringnam,inta,chars,stringtit,stringp,stnngad,stringt,floatw);voidshow();private:floatwage;};Teacher_Cadre::Teacher_Cadre(stringnam,inta,chars,stringt,stringp,stringad,stringtel,floatw):Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w){}voidTeacher_Cadre::show(){Teacher::display();cout<<"post:"<<Cadre::post<<endl;cout<<"wages:"<<wage<<endl;}intmain(){Teacher_Cadrete_ca("Wang-li",50,'f,"prof.","president","135BeijingRoad,Shanghai","(021)61234567",1534.5);te_ca.show();return0;}實驗七多態(tài)性和虛函數(shù)、實驗?zāi)康?、 了解多態(tài)性的概念。2、 了解虛函數(shù)的作用及其使用方法。3、 了解靜態(tài)關(guān)聯(lián)和動態(tài)關(guān)聯(lián)的概念和用法。4、 了解純虛函數(shù)和抽象類的概念和用法。二、實驗要求1、分析程序運行結(jié)果,掌握虛函數(shù)的使用。程序一:#include<iostream.h>classONE{public:virtualvoidf(){cout<<"l"<<endl;}};classTWO:publicONE{public:TWO(){cout<<"2"<<endl;}};classTHREE:publicTWO{public:virtualvoidf(){TWO::f();cout<<"3";}};voidmain(){ONEaa,*p;TWObb;THREEcc;p=&CC;p->f();}〃2213程序二:#include<iostream.h>classBase{public:virtualvoidfn(){cout<<"InBaseClass'n";}};classSubClass:publicBase{public:virtualvoidfn(){cout<<"InSubClass\n";}};voidmain(){Basebc,*p;SubClasssc;p=&bc; p->fn();p=≻ p->fn();}//InBaseClassInSubClass2、實現(xiàn)一個類A,在A中有兩個私有的整型變量a和b,定義構(gòu)造函數(shù)對a和b進行初始化,并實現(xiàn)成員函數(shù)geta()取得a的值和getb()取b的值。實現(xiàn)類B從A繼承,覆蓋geta(),使其返回a的2倍。主函數(shù)中聲明類B對象,調(diào)用類B中的geta()并將結(jié)果輸出。#include"iostream"usingnamespacestd;classA{private:inta;intb;public:A(intm,intn){a=m;b=n;}intgeta(){returna;}intgetb(){returnb;}};classB:publicA{public:B(intm,intn):A(m,n){}intgeta(){returnA::geta()*2;}};voidmain(){Bb(2,2);cout<<b.geta()<<endl;return0;}3、聲明抽象基類Shape,由它派生出3個派生類:Cirle(圓形)、Rectangle(矩形)、Triangle(三角形),用一個函數(shù)printArea分別輸出以上三者的面積,3個圖形的數(shù)據(jù)在定義對象是給定。#include<iostream>usingnamespacestd;〃定義抽象基類ShapeclassShape{public:virtualdoublearea()const=0;};//定義Circle類classCircle:publicShape{public:Circle(doubler):radius(r){}//純虛函數(shù)//結(jié)構(gòu)函數(shù)virtualdoublearea()const{return3.14159*radius*radius;};protected:doubleradius;};//定義Rectangle類classRectangle:publicShape{public:Rectangle(doublew,doubleh):width(w),height(h){}virtualdoublearea()const{returnwidth*height;}protected:doublewidth,height;};classTriangle:publicShape{public:Triangle(doublew,doubleh):width(w),height(h){}virtualdoublearea()const{return0.5*width*height;}protected:doublewidth,height;};//輸出面積的函數(shù)voidprintArea(constShape&s){cout<<s.area()<<endl;}〃定義虛函數(shù)//半徑//寬與高//寬與高〃輸出S的面積〃結(jié)構(gòu)函數(shù)//定義虛函數(shù)//結(jié)構(gòu)函數(shù)//定義虛函數(shù)intmai

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論