第一道题目的话,我是把A,B,C芯片当作基类,之后共同派生出来一个派生类(和A,B,C是一个的派生类不一样)(理解问题把)
#include<iostream> using namespace std; class A{ public: A(int i,int j){cout<<"i+j="<<i-j<<endl; } }; class B{ public: B(int i,int j) { cout<<"i*j="<<i*j<<endl; } }; class C{ public: C(int i ,int j) { if(j!=0) { cout<<"i/j="<<i/j<<endl; } else cout<<"错误输入"<<endl; } }; class G:public A,public B,public C{ public: G(int i,int j):A(i,j),B(i,j),C(i,j){ cout<<"i+j="<<i+j<<endl; } }; int main() { int a,b; cout<<"输入i,j"<<endl; cin>>a>>b; G z(a,b); return 0; }
第二条::
#include<iostream> using namespace std; class vehicle{ public: vehicle(int i,int j):maxspeed(i),weight(j){ if(i>0) { run(); } if(i==0) { stop(); } } void run(){ cout<<"the maxspeed is "<<maxspeed<<endl; cout<<"the weight is "<<weight<<endl; cout<<"the vehicle is running"<<endl; cout<<"*********************"<<endl; } void stop(){ cout<<"the vehicle is stopped "<<endl; cout<<"the maxspeed is 0 "<<endl; cout<<"the weight is "<<weight<<endl; cout<<"***********************"<<endl; } ~vehicle(){ cout<<"over"<<endl; } private: int maxspeed; int weight; }; class bicycle:virtual public vehicle{ public: bicycle(int i,int j,int k):height(k),vehicle(i,j){cout<<"the height is"<<k<<endl; cout<<"----------------"<<endl; } ~bicycle(){cout<<"over"<<endl; } private: int height; }; class motorcar:virtual public vehicle{ public: motorcar(int i,int j,int k):seatnum(k),vehicle(i,j){ cout<<"the seatnum is "<<k<<endl; cout<<"---------------"<<endl; } ~motorcar(){ cout<<"over"<<endl; } private: int seatnum; }; class motorcycle:public motorcar,public bicycle{ public: motorcycle(int i,int j,int k,int l):vehicle(i,j),bicycle(i,j,k),motorcar(i,j,l){ } }; int main() { bicycle A(2,3,4); motorcar B(1,0,5); cout<<"--------------"<<endl; motorcycle Z(1,2,3,4); return 0; }
第三题::
中间是把iFraction和iFraction中的convertF搞得有点混::
#include<iostream> using namespace std; class Fraction{ public: Fraction(int a=0,int b=1):zi(a),mu(b){ } Fraction operator+(const Fraction&F2) const; Fraction operator-(const Fraction &F2) const; Fraction operator*(const Fraction&F2) const; Fraction operator/(const Fraction &F2) const; int getzi(){ return zi; } int getmu(){ return mu; } void display() const; private: int zi; int mu; }; class iFraction:public Fraction{ public: int i; int j; iFraction(int i,int j):i(i),j(j),Fraction(i,j){} // void convertF() // { // if(i>j) // { // cout<<" "; /// cout << i/j<<endl; // cout << i%j; // cout<<"----"<<endl; // cout<<" "; /// cout << j<<endl; // } // if(i==j) // { // cout<<i/j; // } // if(i<j) // { // putout(); // } // } void convertF() { int k; k=i%j; cout<<k<<" "; i=i/j; Fraction A(i,j); A.display() ; } void putout() { cout<<i<<endl; cout<<"-"<<endl; cout<<j<<endl; cout<<"***********"<<endl; } }; class iiFraction:public Fraction{ public: int i,j,k; iiFraction(int k, int i,int j):k(k),Fraction(i,j) { if(k!=0) { cout<<k<<" "; cout<<" "<<i<<endl; cout<< " ---"<<endl; cout<<" "<<j<<endl; } if(k==0) { cout<<" "<<i<<endl; cout<<" ---"<<endl; cout<<" "<<j<<endl; } } }; Fraction Fraction ::operator+ (const Fraction &F2)const{ return Fraction (zi*F2.mu+mu*F2.zi,mu*F2.mu); } Fraction Fraction:: operator- (const Fraction &F2)const{ return Fraction (zi*F2.mu-mu*F2.zi,mu*F2.mu); } Fraction Fraction ::operator* (const Fraction &F2)const{ return Fraction (zi*F2.zi,mu*F2.mu); } Fraction Fraction::operator/ (const Fraction &F2)const{ return Fraction (zi*F2.mu,mu*F2.zi); } void Fraction::display()const { cout<<zi<<endl; cout<<" --- "<<endl; cout<<" "<<mu<<endl; } int main() { iiFraction A(0,2,3); iiFraction(1,2,6); Fraction F(2,4),F2(3,5),F3; // F3=F-F2; // F3.display(); F3=F*F2; // F3.display(); iFraction X(10,4); iFraction XX(F3.getzi(),F3.getmu()); XX.putout(); X.putout(); X.convertF(); return 0; }
另外,分数的输出格式不怎么好= =,不会搞。。