第一道题目的话,我是把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;
}
另外,分数的输出格式不怎么好= =,不会搞。。

浙公网安备 33010602011771号