一、编写C++程序,要求:(50’)
(1)声明一个类Complex,定义类Complex的两个对象c1和c2,对象c1通过构造函数指定复数的实部与虚部(类私有数据成员为double型的real和image)为2.5及3.7,对象c2通过构造函数直接指定复数的实部与虚部为4.2及6.5。
(2)编写加法友元函数,以c1,c2对象为参数,调用时能返回两个复数对象相加操作。编写减法友元函数,以c1,c2对象为参数,调用时能返回两个复数对象相减操作;编写取反成员函数,调用时能返回该复数的相反数(实部、虚部分别是原数的相反数)。
(3)定义成员函数print(),调用该函数时,以格式(real,image)输出当前对象。
(4)编写主程序,计算出复数对象c1与c2相减结果,并输出。然后计算c2的相反数与c1相加结果,并输出。
二、编写C++程序,要求:(50’)
(1)建立一个代表空间点的基类Point,它的数据成员为点的三维坐标,分别用成员变量X、Y和Z表示。建立代表球体的派生类Sphere,继承Point,以该点为球心并增加了数据成员R表示半径。
(2)基类中有计算该点到坐标原点距离的办法,派生类中有计算球体表面积和体积的方法
(3)基类和派生类都有构造函数,并且可以通过构造函数直接设定数据成员。
(4)主函数中让用户输入球体中心坐标及半径,然后输出球心到原点的距离、球体表面积和体积。
//代码开头部分:
#include <iostream>
#include <math.h>
const double PI=3.1415926;
class Point{
private:
double X,Y,Z;
public:
Point(double x, double y, double z) {X=x; Y=y; Z=z;}
double distance() {return sqrt(X*X+Y*Y+Z*Z);}
double getX() {return X;}
double getY() {return Y;}
double getZ() {return Z;;}
void setX(double x) {X=x;}
void setY(double y) {Y=y;}
void setZ(double z) {Z=z;}
};
//1.cpp
#include "iostream"
using namespace std;
class Complex
{
private:
double real,image;
public:
Complex(double r,double i) {real=r; image=i;}
Complex() {real=0; image=0;}
friend Complex Add(Complex c1,Complex c2);
friend Complex Sub(Complex c1,Complex c2);
void Fan() {real=-real; image=-image;}
void print() {cout << '(' << real << ',' << image << ')' << endl;}
};
Complex Add(Complex c1,Complex c2)
{
Complex t;
t.real=c1.real+c2.real;
t.image=c1.image+c2.image;
return t;
}
Complex Sub(Complex c1,Complex c2)
{
Complex t;
t.real=c1.real-c2.real;
t.image=c1.image-c2.image;
return t;
}
int main()
{
Complex c1(2.5,3.7);
Complex c2(4.2,6.5);
Complex t1,t2;
t1=Sub(c1,c2);
t1.print();
c2.Fan();
t2=Add(c1,c2);
t2.print();
return 0;
}
//2.cpp
#include <iostream>
#include <math.h>
using namespace std;
const double PI=3.1415926;
class Point{
private:
double X,Y,Z;
public:
Point(double x, double y, double z) {X=x; Y=y; Z=z;}
double distance() {return sqrt(X*X+Y*Y+Z*Z);}
double getX() {return X;}
double getY() {return Y;}
double getZ() {return Z;;}
void setX(double x) {X=x;}
void setY(double y) {Y=y;}
void setZ(double z) {Z=z;}
};
class Sphere:public Point
{
private:
double R;
public:
Sphere(double x, double y, double z,double r):Point(x,y,z) {R=r;}
double Area() {return 4*PI*R*R;}
double Volu() {return 4*PI*R*R*R/3;}
};
int main()
{
double x,y,z,r;
cin >> x >> y >> z >> r;
Sphere s(x,y,z,r);
cout <<"("<< s.getX() <<","<< s.getY() <<","<< s.getZ() <<")"<< endl;
cout << s.distance() << endl;
cout << s.Area() << endl;
cout << s.Volu() << endl;
return 0;
}