c++西安交大类二.docx
- 文档编号:12948740
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:28
- 大小:298.07KB
c++西安交大类二.docx
《c++西安交大类二.docx》由会员分享,可在线阅读,更多相关《c++西安交大类二.docx(28页珍藏版)》请在冰点文库上搜索。
c++西安交大类二
西安交通大学实验报告
课程_C++程序设计_实验名称_类和对象
(二)第页共页
系别_____实验日期2013年11月28日
专业班级___组别_____________实验报告日期2013年11月28日
姓名_学号_报告退发(订正、重做)
同组人_________________________________教师审批签字
对比分析:
一.实验目的
1.复习类的定义和使用。
2.学习定义和使用构造函数,并能使用不同形参的构造函数的重载。
3.学习定义和使用构析函数。
4.掌握指向对象的指针的使用。
二.实验内容
(-)实验题目一:
第7章第5题
1.程序源代码
#include
#include
usingnamespacestd;
classPoint_3D
{
private:
double*point;
public:
Point_3D(inti=1,intj=1,intk=1)
{
point=newdouble[3];
point[0]=i;
point[1]=j;
point[2]=k;
};
Point_3D(Point_3D&m)
{
point=newdouble[3];
point[0]=m.point[0];
point[1]=m.point[1];
point[2]=m.point[2];
};
voidSet(inti,intj,intk);
doubleDistance(Point_3D&y);
voidShow();
~Point_3D()
{
cout<<"Thisisthedestructorfunction\n";
cout<<"Point";
Show();
delete[]point;
};
};
voidPoint_3D:
:
Set(inti,intj,intk)
{
point=newdouble[3];
point[0]=i;
point[1]=j;
point[2]=k;
}
voidPoint_3D:
:
Show()
{
cout<<"("< } doublePoint_3D: : Distance(Point_3D&y) { returnsqrt((point[0]-y.point[0])*(point[0]-y.point[0])+(point[1]-y.point[1])*(point[1]-y.point[1])+(point[2]-y.point[2])*(point[2]-y.point[2])); } voidmain() { Point_3Dp1(1,2,3); Point_3Dp2; p2.Set(2,2,2); cout<<"Point1"; p1.Show(); cout<<"Point2"; p2.Show(); Point_3Dp3(p2); cout<<"Point3"; p3.Show(); cout<<"Distancebetweenpoint1andpoint2is"< } 2.实验结果 (二)实验题目二: 第7章第6题 1.程序源代码 #include #include #include usingnamespacestd; classE_Clock { private: intHour,Minute,Second; public: E_Clock(){Hour=0;Minute=0;Second=0;}; E_Clock(inth,intm,ints){Hour=h;Minute=m;Second=s;}; voidSet(inth,intm,ints){Hour=h;Minute=m;Second=s;}; voidShowTime(){cout< "< "< voidRun30s(); voidCount_up(int); voidCount_down(int); }; voidE_Clock: : Run30s() { for(inti=0;i<30;i++) { Second++; if(Second==60) { Second=0; Minute++; if(Minute==60) { Minute=0; Hour++; if(Hour==24)Hour=0; } } cout<<"\r"; Sleep(1000); ShowTime(); } } voidE_Clock: : Count_up(intk) { Set(0,0,0); ShowTime(); for(inti=0;i { Second++; if(Second==60) { Second=0; Minute++; if(Minute==60) { Minute=0; Hour++; if(Hour==24)Hour=0; } } cout<<"\r"; Sleep(1000); ShowTime(); } }; voidE_Clock: : Count_down(intk) { Set(k/3600,(k%3600)/60,k%60); ShowTime(); for(inti=0;i { Second--; if(Second<0) { Second+=60; Minute--; if(Minute<0) { Minute+=60; Hour--; } } cout<<"\r"; Sleep(1000); ShowTime(); if(Hour==0&&Minute==0&&Second==0)break; } } voidmain() { E_Clockc1; c1.ShowTime(); cout< time_tt; time(&t); inth=(t/3600+8)%24; intm=(t%3600)/60; ints=t%60; E_Clockc2(h,m,s); cout<<"Nowthecurrenttimeis"; c2.ShowTime(); cout< c1.Set(9,2,23); c1.ShowTime(); cout< cout<<"Nexttheclockwillrunfor30s\n"; c1.Run30s(); cout< cout<<"Nexttheclockwillcountupfor23s\n"; c1.Count_up(23); cout< cout<<"Nexttheclockwillcountdownfor30s\n"; c1.Count_down(30); cout< } 2.实验结果 (三)实验题目三: 第7章第7题 1.程序源代码 #include #include usingnamespacestd; classRational { private: intnu,de; public: Rational(intn=1,intd=1){if(d! =0){nu=n;de=d;if(de<0){de=-de;nu=-nu;}}elsecout<<"Thedenominatorcan'tbezero! ! ";}; voidSet(intn,intd){if(d! =0){nu=n;de=d;if(de<0){de=-de;nu=-nu;}}elsecout<<"Thedenominatorcan'tbezero! ! ";}; voidAdd(Rational&k); voidSub(Rational&k); voidMul(Rational&k); voidDiv(Rational&k); voidPrint(){cout< doubleGcd(); voidFsd(); }; doubleRational: : Gcd() { intk=1; for(inti=2;i<=abs(nu)||i<=abs(de);i++) { if(nu%i==0&&de%i==0)k=i; } returnk; } voidRational: : Fsd() { de/=Gcd(); nu/=Gcd(); } voidRational: : Add(Rational&k) { nu=nu*k.de+k.nu*de; de=de*k.de; Fsd(); } voidRational: : Sub(Rational&k) { nu=nu*k.de-k.nu*de; de=de*k.de; Fsd(); } voidRational: : Div(Rational&k) { if(k.nu==0)cout<<"Thedenominatorcan'tbezero! ! "; else { nu=nu*k.de; de=de*k.nu; Fsd(); if(de<0) { de=-de; nu=-nu; } } } voidRational: : Mul(Rational&k) { nu=nu*k.nu; de=de*k.de; Fsd(); } voidmain() { Rationalr1(6,8); r1.Print(); cout< cout<<"Thegreatestcommondivisoris"< r1.Fsd(); r1.Print(); cout< Rationalr2; r2.Set(5,7); cout<<"(5/7)/(3/4)="; r2.Div(r1); r2.Print(); cout< Rationalr3(5,7); r3.Add(r1); cout<<"5/7+3/4="; r3.Print(); cout< Rationalr4(5,7); r4.Sub(r1); cout<<"5/7-3/4="; r4.Print(); cout< Rationalr5(5,7); r5.Mul(r1); cout<<"(5/7)*(3/4)="; r5.Print(); cout< } 2.实验结果 (四)实验题目四: 第7章第8题 1.程序源代码 #include #include usingnamespacestd; classCitizen { private: charid[19],name[9],gender,*bp,*fa; intage; public: Citizen() { strcpy(name,"xxxxxxxx"); age=0; gender='x'; strcpy(id,"xxxxxxxxxxxxxxxxxx"); bp=NULL; fa=NULL; } Citizen(char*n,chars,inta,char*ID,char*BP,char*FA) { strcpy(name,n); age=a; gender=s; strcpy(id,ID); intL=strlen(BP); bp=newchar[L+1]; strcpy(bp,BP); L=strlen(FA); fa=newchar[L+1]; strcpy(fa,FA); } ~Citizen() {cout<<"NowdestroyingCitizen"< delete[]bp; delete[]fa; } voidInput(char*n,chars,inta,char*ID,char*BP,char*FA); voidOutput(); }; voidCitizen: : Input(char*n,chars,inta,char*ID,char*BP,char*FA) { strcpy(name,n); age=a; gender=s; strcpy(id,ID); if(bp! =NULL)delete[]bp; intL=strlen(BP); bp=newchar[L+1]; strcpy(bp,BP); if(fa! =NULL)delete[]fa; L=strlen(FA); fa=newchar[L+1]; strcpy(fa,FA); } voidCitizen: : Output() { cout<<"姓名: "< cout<<"性别: "< cout<<"年龄: "< cout<<"身份证号: "< if(bp! =NULL)cout<<"籍贯: "< if(fa! =NULL)cout<<"家庭住址: "< } voidmain() { Citizenperson1,person2; cout<<"person1: \n"; person1.Output(); person2.Input("张三",'m',19,"610103199409199999","中国上海市华山北路35号","西安市咸宁西路24号"); cout<<"person2: \n"; person2.Output(); Citizenperson3("李四",'f',29,"610103198409199999","西安市咸宁西路24号","中国上海市华山北路35号"); cout<<"person3: \n"; person3.Output(); } 2.实验结果 (五)实验题目五: 设计定义圆管类,成员函数至少应有构造函数、计算容积函数、计算总体积函数、计算重量函数、计算表面积函数、输出函数和析构函数,并编写主函数加以测试。 1.程序源代码 #include usingnamespacestd; classCircular_tube { private: doubled1,d2,h,p; public: Circular_tube(doubleD1=2,doubleD2=1,doubleH=1,doubleP=1) { d1=D1; d2=D2; h=H; p=P; } ~Circular_tube(){cout<<"NowdestroyingthisCircular_tube"< voidInput(doubleD1,doubleD2,doubleH,doubleP); doubleV(); doubleC(); doubleS(); doubleW(); voidPrint(); }; voidCircular_tube: : Input(doubleD1,doubleD2,doubleH,doubleP) { d1=D1; d2=D2; h=H; p=P; } doubleCircular_tube: : C() { return3.14159*d2*d2*h/4; } doubleCircular_tube: : V() { return3.14159*h*(d1*d1-d2*d2)/4; } doubleCircular_tube: : S() { return3.14159*d1*h+3.14159*d2*h+2*3.14159*(d1*d1-d2*d2)/4; } doubleCircular_tube: : W() { returnV()*p; } voidCircular_tube: : Print() { cout<<"圆管外径D="< cout<<"圆管内径d="< cout<<"圆管长度l="< cout<<"圆管密度p="< } voidmain() { Circular_tubec1; cout<<"Circular_tube1\n"; c1.Print(); Circular_tubec2(3,1.5,2,3); cout<<"Circular_tube2\n"; c2.Print(); Circular_tube; Circular_tubec3; c3.Input(3,1.5,2,3); cout<<"Circular_tube3\n"; c3.Print(); cout<<"其体积为"< cout<<"其容积为"< cout<<"其表面积为"< cout<<"其重量为"< } 2.实验结果 (六)实验题目六: 在上周实验定义二元一次方程组类中,增加构造函数、相加函数、相减函数,仍然保持原来求根函数、输出该二元一次方程组函数,并编写主函数测试各成员函数。 提示: 两个二元一次方程组对应相加和对应相减仍然是一个二元一次方程组,相加函数原型如下: funadd(funF1) fun是你定义的二元一次方程组类,F1是方程组类的对象,函数体中将本类中的6个系数与F1中6个系数相加,再赋值给本类中6个系数,形成新的二元一次方程组。 1.程序源代码 #include usingnamespacestd; classfun { private: doublea,b,c,d,e,f; public: fun(intA=1,intB=1,intC=1,intD=1,intE=1,intF=1) { a=A;b=B;c=C;d=D;e=E;f=F; } voidAdd(fun&F1); voidSub(fun&F1); voidRegister(double,double,double,double,double,double); voidSolve(); voidPrint(); }; voidfun: : Register(doubleA,doubleB,doubleC,doubleD,doubleE,doubleF) { a=A,b=B,c=C,d=D,e=E,f=F; } voidfun: : Solve() { a*e-b*d! =0? cout<<"X="<<(c*e-b*f)/(a*e-b*d)<<","<<"Y="<<(a*f-c*d)/(a*e-b*d)< (a*f-c*d==0? cout<<"X,Y有无数解"< cout<<"X,Y无解"< } voidfun: : Add(fun&F1) { a+=F1.a;b+=F1.b;c+=F1.c;d+=F1.d;e+=F1.e;f+=F1.f; } voidfun: : Sub(fun&F1) { a-=F1.a;b-=F1.b;c-=F1.c;d-=F1.d;e-=F1.e;f-=F1.f; } voidfun: : Print() { a==0? cout<<"": (a==1||a==-1)?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 西安 大类