Complex(float r=0,float i=0){Real=r;Image=i;}// 2分 void Show()
{cout<<\ friend Complex operator *(Complex &,Complex &);// +(对象) void operator += (Complex &); // +=
Complex operator ++( ); //前置++ };
// 1分
Complex operator *(Complex &c1,Complex &c2) // 3分 { Complex t;
t.Real=c1.Real *c2.Real- c1.Image *c2.Image; t.Image= c1.Real *c2.Image+ c1.Image*c2.Real; return t; }
void Complex::operator +=(Complex &c) // 3分 {
Real=Real +c.Real;
Image=Image +c.Image; }
Complex Complex::operator ++( ) // 3分 {
Real++; Image++; return *this; }
void main(void) {
Complex c1(2,5),c2(1,2),c,c4(2,4); // 1分 c1.Show();
c=c1*c2; // 1分 c.Show(); // 1分 c+=c1; // 1分 c.Show(); ++c4; // 1分 c4.Show(); }
第22题
/*------------------------------------------------ 【程序设计】
--------------------------------------------------
题目:建立一个复数类Complex,要求如下: (1)私有数据成员
float Real,Image; 表示一个复数的实部和虚部 (2)公有成员函数
Complex(float,float); 构造函数,实现对复数的初始化 void operator=(Complex &); 实现复数的=运算 void show(); 输出复数 (3)友元函数
Complex operator+(Complex &,Complex &); 重载运算符+的函数
Complex operator+(Complex,float); 重载运算符+的函数,只有实部 Complex operator-(Complex); 重载运算符-的函数,求复数的负数(实部和虚部分别乘以-1)。
(4)编写一个程序测试该类,测试数据及要求如下: 复数:c1(25,50),c3(100,200),c4(200,400),c2,c5,c 完成的运算有: c2=c1,c=c1+c3,c4=c4+200,c5=-c4 每完成一次运算,要将结果进行输出。 ------------------------------------------------*/ /**********Program**********/
/********** End **********/
答案:---------------------- #include
friend Complex operator+(Complex &,Complex &);
//重载运算符+的函数原型说明
friend Complex operator+(Complex,float); //重载运算符+的函数,只有实部 friend Complex operator-(Complex); //重载运算符-的函数原型说明 };
Complex operator+(Complex &c1,Complex &c2) //重载运算符+的函数定义,有实部和虚部 { Complex t; t.Real=c1.Real+c2.Real; t.Image=c1.Image+c2.Image; return t; }
Complex operator+(Complex c1,float s) { Complex t; t.Real=c1.Real+s; t.Image=c1.Image; return t; }
Complex operator-(Complex c) {
//重载运算符+的函数,只有实部
//重载运算符-函数定义,有实部和虚部
return Complex(-c.Real,-c.Image); }
void main(void) { Complex c1(25,50),c2,c3(100,200); Complex c,c4(200,400),c5; c1.Show(); c2=c1; c2.Show();
c=c1+c3; c.Show(); c4=c4+200; c4.Show();
//产生一个临时对象并返回其值
//定义对象并调用构造函数初始化 //定义对象并调用构造函数初始化
//相同类型对象赋值
//加法重载
//加一实数的重载
c5=-c4; //取负运算符重载 c5.Show(); }
----------------------
第23题
/*------------------------------------------------------- 【程序设计】
---------------------------------------------------------
题目:设计一个程序,计算组合数C(m,r)=m!/(r!×(m-r)!), 其中m、r为正整数,且m>r。分别求出C(4,2), C(6,4), C(8,7)的组合数。求阶乘和组合数须用函数来实现。 ------------------------------------------------*/
/**********Program**********/
/********** End **********/
第24题
/*------------------------------------------------ 【程序设计】
--------------------------------------------------
题目:把定义直角坐标系上的一个点的类point作为基类,派生出描述一条直线的类line,再由直线类派生出三角形类triangle。
求出两点间的距离、三角形的周长。 具体要求如下: (1)类point
保护数据成员: float x1,y1; 点的坐标 公有构造函数: point(float,float); 初始化x1、y1 (2)类line
保护数据成员: float x2,y2; 为直线的另一个点的坐标 公有构造函数: line(float,float,float,float);
前两个参数为第一个点(x1,y1)初始化; 后两个参数为第二个点(x1,y1)初始化
公有成员函数: float dis(); 求点(x1,y1)到点(x1,y1)之间的距离
计算公式:距离的平方=(x1-x2)的平方+(y1-y2)的平方 (3)类triangle
保护数据成员: float x3,y3; 为直线外的点的坐标 公有构造函数: triangle(float,float,float,float,float,float);
前两个参数为直线端点1(x1,y1)初始化,中间两个参数为直线端点2(x1,y1)初始化,
最后两个参数为直线外的点(x3,y3)初始化
公有成员函数: float tri_girth(); 求三角形的周长(三边长之和)
(4)在主程序中对该类进行测试,测试数据可以从键盘输入,也可以自行在初始化时确定。
--------------------------------------------------
注意:程序编写在下面的Program和End区域。 ------------------------------------------------*/ /**********Program**********/
/********** End **********/
答案:#include
};
class line:public point{ protected: float x2,y2; // 1' public: line(float a=0,float b=0,float c=0,float d=0):point(a,b) // 1' {x2=c;y2=d; } float dis() // 2' {float lin; lin=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); return lin; } };
class triangle:public line{ float x3,y3; // 1' public: triangle(float a=0,float b=0,float c=0, float d=0, float t e=0, float f=0):line(a,b,c,d) // 1' {x3=e;y3=f; } float tri_girth() // 3' { line li1(x3,y3,x2,y2),li2(x3,y3,x1,y1); float m=li1.dis(); float n=li2.dis(); float k=dis(); float L=m+n+k; return L; } };
void main(){ float x1,y1,x2,y2,x3,y3; // 1' cout<<\输入直线上点的坐标(x1,y1):\ cin>>x1>>y1; cout<<\输入直线上点的坐标(x2,y2):\ cin>>x2>>y2; line lin(x1,y1,x2,y2); // 1' cout<<\与(x2,y2)的距离为: \ // 1' cout<<\输入三角形的第三个点:\ cin>>x3>>y3; triangle tri(x1,y1,x2,y2,x3,y3); // 1' cout<<\、(x2,y2)及(x3,y3)组成的三角形的周长为: \ // 1' }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++改错和填空题题库(8)在线全文阅读。
相关推荐: