一、編寫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;
}