}
doubleArea(doublea,doubleb,doublec)
{
returnsqrt((a+b+c)/2*((a+b+c)/2-a)*((a+b+c)/2-b)*((a+b+c)/2-c));
}
doubleArea(doublea,doubleb)
{
returna*b;
}
doubleArea(doubler)
{
returnr*r*3、14;
}
doubleZhc(doublea,doubleb,doublec)
{
returna+b+c;
}
doubleZhc(doublea,doubleb)
{
return2*(a+b);
}
doubleZhc(doubler)
{
return2*r*3、14;
}
结果:
(2)编写程序,(注意复数构造函数的重载及构造函数分带默认参数与不带默认参数的情况)
求两个复数的与,复数考虑有实部与虚部、无实部、无虚部三种情况
代码:
头文件:
#defineN2
classComplex
{
private:
doublereal;
doubleimag;
public:
Complex(doubler=0,doublei=0);
voidInput();
voidPrint();
friendComplexAdd(Complexc1,Complexc2);
};
//复数相加、cpp:
定义控制台应用程序的入口点。
#include"stdafx、h"
#include"iostream"
usingnamespacestd;
#include"complex、h"
intmain()
{
Complextotal=0;
Complexc[N];
for(intm=0;m{
cout<<"请输入第"<";
c[m]、Input();
total=Add(total,c[m]);
}
cout<<"复数相加的结果就是:
";
total、Print();
return0;
}
Complex:
:
Complex(doubler,doublei)
{
real=r;
imag=i;
}
voidComplex:
:
Input()
{
cin>>real>>imag;
cout<if(imag>0)
{
cout<<"+";
cout<}
elseif(imag==0)
cout<<""<}
ComplexAdd(Complexc1,Complexc2)
{
c1、real=c1、real+c2、real;
c1、imag=c1、imag+c2、imag;
returnc1;}
voidComplex:
:
Print()
{
cout<if(imag>0)
cout<<"+";
if(imag!
=0)
cout<}
结果:
(3)以上实验做完,练习书上的例题。
实验项目四常量与引用
1、有关const的上机内容:
(1)、运行课本中的例4-5,分析查瞧,然后逐个将程序中的const删除,分析运行的结果;
代码:
//student、h
#ifndefSTUDENT_H_
#defineSTUDENT_H_
classStudent{
intNo;
charName[20];
public:
Student();
intGetNo();
char*GetName();
};
#endif
//student、cpp
#include"stdafx、h"
#include
#include"student、h"
Student:
:
Student(){
No=1;
strcpy(Name,"wang");
}
intStudent:
:
GetNo(){
returnNo;
}
char*Student:
:
GetName(){
returnName;
}
//例_5、cpp:
定义控制台应用程序的入口点。
#include"stdafx、h"
#include"student、h"
intmain()
{
Students1;
s1、GetNo();
s1、GetName();
Students2;
s2、GetNo();
//s2、GetName();
return0;
}
结果:
(2)、运行课本中的例4-10与例4-11,对比两个程序中指针与引用。
例4-10:
//例_10、cpp:
定义控制台应用程序的入口点。
#include"stdafx、h"
#include
usingnamespacestd;
voidchangpointer1(int**x)
{
(*x)++;
**x=1;
}
voidchangpointer2(int*&x)
{
x++;
*x=2;
}
intmain()
{
intiData[3]={0};
int*p=iData;
inti;
for(i=0;i<3;i++)
cout<<"iData["<
cout<changpointer1(&p);
for(i=0;i<3;i++)
cout<<"iData["<
cout<p=iData;
changpointer2(p);
for(i=0;i<3;i++)
cout<<"iData["<
cout<return0;
}
结果:
例4-11:
//例_11、cpp:
定义控制台应用程序的入口点。
#include"stdafx、h"
#include
usingnamespacestd;
voids(int*x,int*y)
{
intz;
z=*x;
*x=*y;
*y=z;
}
voids(int&x,int&y)
{
intz;
z=x;
x=y;
y=z;
}
intmain()
{
inti=10,j=20;
intm=10,n=20;
s(&i,&j);
s(m,n);
cout<<"i="<
cout<<"m="<return0;
}
结果:
2、有关拷贝构造函数
(1)比较例4-15与例4-16,理解拷贝构造函数的作用。
例4-15:
//例-15、cpp:
定义控制台应用程序的入口点。
#include"stdafx、h"
#include
usingnamespacestd;
classStudent
{
staticintnumber;
public:
Student()
{
number++;
show("Student");
}
~Student()
{
number--;
show("~Student");
}
staticvoidshow(constchar*str=NULL)
{
if(str)
cout<";
cout<<"number="<}
};
intStudent:
:
number=0;
Studentf(Studentx)
{
x、show("xinsidef()");
returnx;
}
int_tmain(intargc,_TCHAR*argv[])
{
Studenth1;
Studenth2=f(h1);
Student:
:
show("aftercallf()");
return0;
}
结果:
例4-16:
//例-16修改例-15、cpp