C++实验报告之静态成员运算符重载Word文档下载推荐.docx
- 文档编号:21389998
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:98.35KB
C++实验报告之静态成员运算符重载Word文档下载推荐.docx
《C++实验报告之静态成员运算符重载Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++实验报告之静态成员运算符重载Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
Complexoperator*(Complex&
c1,Complex&
c2)
{
Complext;
t.Real=c1.Real*c2.Real-c1.Image*c2.Image;
t.Image=c1.Image*c2.Real+c1.Real*c2.Image;
returnt;
ComplexComplex:
operator/(Complex&
c)
{
t.Real=(Real*c.Real+Image*c.Image)/(c.Real*c.Real+c.Image*c.Image);
t.Image=(Image*c.Real-Real*c.Image)/(c.Real*c.Real+c.Image*c.Image);
operator+(Complex&
t.Real=Real+c.Real;
t.Image=Image+c.Image;
Complexoperator-(Complex&
c1,Complex&
t.Real=c1.Real-c2.Real;
t.Image=c1.Image-c2.Image;
voidmain()
{Complexc1(1,2),c2(3,4),c3;
c3=c1*c2;
cout<
两个复数的乘法c3=c1*c2:
c3.Show();
c3=c1/c2;
两个复数的除法c3=c1/c2:
Complexc4(1,2),c5(3,4),c6,c7(1,2),c8(3,0),c9;
c6=c4+c5;
两个复数的加法c6=c4+c5:
c6.Show();
c6=c4-c5;
两个复数的减法c6=c4-c5:
c9=c7+c8;
一个复数与一个实数的加法c9=c7+c8:
c9.Show();
c9=c7-c8;
一个复数与一个实数的减法c9=c7-c8:
运行结果截图
题目2:
定义一个向量(一维数组)类,通过重载运算符实现向量之间的加法和减法。
加法用成员函数重载,减法用友元函数重载。
源程序2
/*******************第2题*******************/
#include<
classVect
{private:
float*p;
intn;
intx;
inty;
public:
Vect(intx1,inty1,intnum)
{
x=x1;
y=y1;
n=num;
}
Vect(){}
~Vect()
{}
friendVect&
operator-(Vect&
a,Vect&
b);
Vectoperator+(Vect&
a)
if(a.n==n)
{
returnVect(a.x+x,a.y+y,n);
}
returna;
voidshow(){
cout<
x="
x<
\ty="
y<
\tn="
n<
Vect&
b)
if(a.n==b.n)
returnVect(a.x-b.x,a.y-b.y,a.n);
returna;
intmain()
Vecta(4,2,6),b(3,7,6),c;
c=a-b;
c.show();
return0;
题目3:
为数组类重载下标运算符“[]”、“+”加运算符和“=”赋值运算符。
源程序3
/*******************第3题*******************/
/******************2012-5-6*****************/
usingnamespacestd;
classarray
int*a;
intlenth;
array(intlenth=5)
a=newint[lenth];
this->
lenth=lenth;
int&
operator[](inti)
if(i<
lenth&
&
i>
=0)
returna[i];
elsecout<
输入有误"
arrayoperator+(arrayb)
arrayc;
for(inti=0;
i<
lenth;
i++)
c.a[i]=a[i]+b[i];
returnc;
arrayoperator=(arrayb)
a[i]=b[i];
return*this;
voidshow()
a[i]<
"
arraya,b,c;
inti;
输入数组a(5个元素):
for(i=0;
5;
cin>
>
a[i];
输入数组b(5个元素):
b[i];
c=a+b;
a=b;
数组a和数组b对应列相加后的新数组:
c.show();
题目4:
编写程序,统计某旅馆住宿客人的总数。
要求输入客人的姓名,输出客人编号(按先后顺序自动生成)、姓名以及总人数。
总人数用静态成员。
其他的三个用普通的数据成员就好了。
源程序4
/*******************第4题*******************/
/******************2012-5-10*****************/
classHotel{
private:
staticintm_TotalCustNum;
char*m_CustomerName;
intm_CustomerNum;
//通过m_TotalCustNum来定义每个顾客的编号
Hotel(char*a_Customer){
m_CustomerName=a_Customer;
m_TotalCustNum++;
//增加顾客
m_CustomerNum=m_TotalCustNum;
//记得,m_TotalCustNum++和m_CustomerNum按照m_TotalCustNum来生成
~Hotel()
//deletem_CustomerName;
//记得m_CudeletestomerName
voidDisplay()
姓名:
m_CustomerName<
\t编号:
m_CustomerNum<
\t总人数:
m_TotalCustNum<
//相应输出客人姓名、编号和总人数
intHotel:
m_TotalCustNum=0;
Hotela("
张三"
),b("
李四"
),c("
王五"
),d("
赵六"
),e("
刘七"
a.Display();
b.Display();
c.Display();
d.Display();
e.Display();
题目5:
读下列4个程序,给出80%的注释,调试并写出运行结果
源程序5
1)Sy3_1.cpp
//包含源文件iostream
//使用命名空间
classMy//定义一个My类
public:
//定义My类的公共接口
My(intaa)//定义一个构造函数
{
A=aa;
//把aa的值赋给A
B-=aa;
//B-aa的结果赋给B
}
staticvoidfun(Mym);
//声明静态函数fun
private:
//定义My类的私有数据
intA;
//定义整型变量A
staticintB;
//定义静态整型变量B
voidMy:
fun(Mym)//定义My类中空类型的fun函数
A="
m.A<
//输出A的结果
B="
B<
//输出B的结果
}
intMy:
B=100;
//设定B的值为100
intmain()//主函数
MyP(6),Q(8);
//构造函数初始化列表
My:
fun(P);
Q.fun(Q);
//函数执行完毕返回0值
2)Sy3_2.cpp
cmath>
//包含源文件cmath
My(doublei=0){x=y=i;
}//定义构造函数My
My(doublei,doublej){x=i;
y=j;
}//构造函数My重载
My(My&
m){x=m.x;
y=m.y;
frienddoubledist(My&
a,My&
//声明友元函数dist
doublex,y;
//定义两个双精度浮点型变量
doubledist(My&
b)//定义dist函数
doubledx=a.x-b.x;
//两点之间横坐标相减
doubledy=a.y-b.y;
//两点之间纵坐标相减
returnsqrt(dx*dx+dy*dy);
//返回两个点的距离值
Mym1,m2(15),m3(13,14);
//构造函数初始化列表
Mym4(m3);
distance1:
dist(m1,m3)<
//输出m1与m3的距离
distance2:
dist(m2,m3)<
//输出m2与m3的距离
distance3:
dist(m3,m4)<
//输出m3与m4的距离
distance4:
dist(m1,m2)<
//输出m1与m2的距离
3)Sy3_3.cpp
classStudent//定义一个Student类
//定义类的公共接口
voidscoretotalcount(floats);
//声明函数
staticfloatsum();
//声明一个静态单精度浮点型函数
staticfloataverage();
//定义类的私有数据
staticfloattotal;
//定义静态单精度浮点型变量total
staticfloatcount;
//定义静态单精度浮点型变量count
floatscore;
//定义单精度浮点型变量score
voidStudent:
scoretotalcount(floats)//定义类中scoretotalcount函数用来统计学生总分
score=s;
//把s的值赋给score
count++;
//人数自增
total+=score;
//统计总分
floatStudent:
sum()//返回总分
returntotal;
//返回总分的值
average()//求学生平均分
returntotal/count;
//返回总分除以总人数的值
total=0;
//使总分初始值为0
count=0;
//使总人数初始值为0
Studentstud[20];
//定义一个存放学生数据的一维数组
//定义一个整型变量n
floats;
//定义一个单精度浮点型变量s
inputnumberofstudents:
//提示输入学生人数
n;
//输入学生人数
for(inti=0;
i<
n;
i++)//用for循环求学生总分
inputscoreofNo."
i+1<
student:
//提示输入一个学生成绩
s;
//输入一个学生成绩
stud[i].scoretotalcount(s);
totalscore:
Student:
sum()<
//输出学生的总分
averagescore:
average()<
//输出学生的平均分
4)
//包含iostream文件
cstdio>
//包含cstdio文件
classRuler;
classBook//创建一个Book类
//定义Book类的公共接口
Book(floatj){weight=j;
}//定义构造函数Book
friendfloattotalWeight(Book&
abook,Ruler&
aruler);
//声明友元函数
//定义Book类的私有数据
floatweight;
//定义一个单精度浮点型的变量weight
classRuler//创建一个Ruler类
//定义Ruler类的公共接口
Ruler(floatj){weight=j;
}//定义构造函数Ruler
abook,Ruler&
//定义Ruler类的私有数据
//定义一个单精度浮点型的变量weight
floattotalWeight(Book&
aruler)//定义友元函数totalWeight
returnabook.weight+aruler.weight;
//返回书质量加上尺子质量的值
floatw;
//定义一个单精度浮点型的变量w
inputweightofbook"
//提示输入书的质量
w;
//输入书的质量
Bookb(w);
//调用Book函数
inputweightofruler"
//提示输入尺子的质量
//输入尺子的质量
Rulerr(w);
//调用Ruler函数
Totalweightofthebookandruleris"
//提示输出结果
totalWeight(b,r)<
//输出结果
1)
2)
3)
仅供学习交流参考之用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告 静态 成员 运算 重载