1.狼人类
C++ 实现
定义以下三个类;
狼类(Wolf):
成员变量姓名:stringName,成员变量爪子锋利度:intShape,
成员函数:voidPrintState(),按照姓名、爪子锋利度格式输出两个成员变量的值。
人类(Human):
成员变量姓名:stringName,成员变量智力:intIntell,
成员函数:void PrintState0)按照姓名、智力格式输出两个成员变量的值。
狼人类(Werewof),它继承狼类和人类,
成员函数:voidSetName(stringname),函数用来设置两个基类的成员变量姓名。
成员函数:void SetState(int shape,intintell),函数用 shape、intell两个参数分别设置狼类的爪子锋利度和人类的智力。
成员函数:void PrintAllState(),函数按照狼类,人类的顺序调用两个基类的PrintState 函数,输出他们的成员变量值。
#include <string>
#include <iostream>
using namespace std;
#include <string>
class Wolf
{
public:
void setName(string n)
{
Name=n;
}
void setShape(int s)
{
Shape=s;
}
string getName() const
{
return Name;
}
int getShape() const
{
return Shape;
}
virtual void PrintState();
private:
string Name;
int Shape;
};
class Human
{
public:
void setName(string n)
{
Name=n;
}
void setIntell(int i)
{
Intell=i;
}
string getName() const
{
return Name;
}
int getIntell() const
{
return Intell;
}
void PrintState();
private:
string Name;
int Intell;
};
class Werewolf:public Wolf ,public Human
{
public:
void SetName(string name);
void SetState(int shape,int intell);
void PrintAllState();
private:
};
void Wolf::PrintState()
{
cout << "姓名:" << getName() << ",爪子锋利度为:" << getShape() << endl;
}
void Human::PrintState()
{
cout << "姓名:" << getName() << ",智力为:" << getIntell() << endl;
}
void Werewolf::SetName(string name)
{
Wolf::setName(name);
Human::setName(name);
}
void Werewolf::SetState(int shape,int intell)
{
Wolf::setShape(shape);
Human::setIntell(intell);
}
void Werewolf::PrintAllState()
{
Wolf::PrintState();
Human::PrintState();
}
int main()
{
int i,j;
string name;
cin >> i >> j >> name;
Werewolf ww;
ww.SetName(name);
ww.SetState(i,j);
ww.PrintAllState();
}
2.
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class GeometricObject
{
public:
GeometricObject();
GeometricObject(string color, bool filled);
string getColor();
void setColor(string color);
bool isFilled();
void setFilled(bool filled);
string toString();
private:
string color;
bool filled;
};
GeometricObject::GeometricObject()
{
}
GeometricObject::GeometricObject(string color, bool filled)
{
setColor(color);
setFilled(filled);
}
string GeometricObject::getColor()
{
return color;
}
void GeometricObject::setColor(string color)
{
this->color=color;
}
bool GeometricObject::isFilled()
{
if(filled==1) return true;
else return false;
}
void GeometricObject::setFilled(bool filled)
{
this->filled=filled;
}
//string GeometricObject::toString();
class Triangle:public GeometricObject
{
public:
Triangle():side1(1.0),side2(1.0),side3(1.0)
{
}
Triangle(double s1,double s2,double s3):side1(s1),side2(s2),side3(s3)
{
}
~Triangle()
{
}
void setSide1(double s1)
{
side1=s1;
}
void setSide2(double s2)
{
side2=s2;
}
void setSide3(double s3)
{
side3=s3;
}
double getSide1() const
{
return side1;
}
double getSide2() const
{
return side2;
}
double getSide3() const
{
return side3;
}
double getArea() const
{
double p=getPerimeter()/2;
return sqrt(p*(p-side1)*(p-side2)*(p-side3));
}
double getPerimeter() const
{
return side1+side2+side3;
}
private:
double side1;
double side2;
double side3;
};
int main()
{
//cout << "Enter three sides: ";
double side1, side2, side3;
cin >> side1 >> side2 >> side3;
Triangle triangle(side1, side2, side3);
//cout << "Enter the color: ";
string color;
cin >> color;
//cout << "Enter 1/0 for filled (1: true, 0: false): ";
bool filled;
cin >> filled;
triangle.setColor(color);
triangle.setFilled(filled);
cout << "Area is " << fixed<<setprecision(2)<<triangle.getArea() << endl;
cout << "Perimeter is "<< fixed<<setprecision(2) << triangle.getPerimeter() << endl;
cout << "Color is " << triangle.getColor() << endl;
cout << "Filled is " <<
(triangle.isFilled() ? "true" : "false") << endl;
return 0;
}
3.父类子类(简单的返回其大小)
#include <iostream>
using namespace std;
class List
{
protected:
int size;
public:
//List();
//~List();
void setSize(int s)
{
size=s;
}
int getSize() const
{
return size;
}
};
class ArrayList:public List
{
public:
//ArrayList();
};
class LinkedList:public List
{
public:
//LinkedList();
};
int main()
{
List a;
ArrayList b;
LinkedList c;
int s;
cin>>s;
a.setSize(s);
cin>>s;
b.setSize(s);
cin>>s;
c.setSize(s);
cout<<a.getSize()<<b.getSize()<<c.getSize()<<endl;
return 0;
}
4.
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
void setName(string n);
void setAddress(string a);
void setPhoneNumber(string p);
void setEmail(string e);
void setPersonInfo(string n,string a,string p,string e);
string getName();
string getAddress();
string getPhoneNumber();
string getEmail();
virtual string toString();
private:
string name;
string address;
string phoneNumber;
string email;
};
void Person::setName(string n)
{
name=n;
}
void Person::setAddress(string a)
{
address=a;
}
void Person::setPhoneNumber(string p)
{
phoneNumber=p;
}
void Person::setEmail(string e)
{
email=e;
}
void Person::setPersonInfo(string n,string a,string p,string e)
{
name=n;
address=a;
phoneNumber=p;
email=e;
}
string Person::getName()
{
return name;
}
string Person::getAddress()
{
return address;
}
string Person::getPhoneNumber()
{
return phoneNumber;
}
string Person::getEmail()
{
return email;
}
string Person::toString()
{
return "name: " +getName() + "\n" +
"address: " + getAddress() + "\n" +
"phoneNumber: " + getPhoneNumber() + "\n" +
"email: " + getEmail();
}
class Student:public Person
{
public:
Student();
Student(string s);
~Student();
void setStatus(string s);
string getStatus() const;
string toString();
private:
string status ;
};
Student::Student()
{
}
Student::Student(string s)
{
setStatus(s);
}
Student::~Student()
{
}
void Student::setStatus(string s)
{
status=s;
}
string Student::getStatus() const
{
return status;
}
string Student::toString()
{
return "Student:\n" + Person::toString() + "\nstatus:" + getStatus();
}
class Employee:public Person
{
public:
Employee();
Employee(int s);
~Employee();
void setSalary(int s);
int getSalary() const;
string toString();
private:
int salary;
};
Employee::Employee()
{
}
Employee::Employee(int s)
{
setSalary(s);
}
Employee::~Employee()
{
}
void Employee::setSalary(int s)
{
salary=s;
}
int Employee::getSalary() const
{
return salary;
}
string Employee::toString()
{
return "Employee:\n" + Person::toString() + "\nsalary: " + to_string(salary);
}
class Faculty:public Employee
{
public:
Faculty();
Faculty(int s,int r);
~Faculty();
void setSalary(int s);
void setRank(int r);
int getSalary() const;
int getRank() const;
string toString();
private:
int salary;
int rank;
};
Faculty::Faculty()
{
}
Faculty::Faculty(int s,int r)
{
setSalary(s);
setRank(r);
}
Faculty::~Faculty()
{
}
void Faculty::setSalary(int s)
{
salary=s;
}
void Faculty::setRank(int r)
{
rank=r;
}
int Faculty::getSalary() const
{
return salary;
}
int Faculty::getRank() const
{
return rank;
}
string Faculty::toString()
{
return "Faculty:\n" + Person::toString() + "\nsalary: " + to_string(getSalary()) + "\nrank: " + to_string(getRank());
}
int main()
{
string name;
string address;
string phoneNumber;
string email;
string status;
int salary;
int rank;
cin>>name>>address>>phoneNumber>>email;
cin>>status;
Person* s = new Student(status);
s->setPersonInfo(name,address,phoneNumber,email);
cin>>name>>address>>phoneNumber>>email;
cin>>salary;
Person* e = new Employee(salary);
e->setPersonInfo(name,address,phoneNumber,email);
cin>>name>>address>>phoneNumber>>email;
cin>>salary>>rank;
Person* f = new Faculty(salary, rank);
f->setPersonInfo(name,address,phoneNumber,email);
cout << s->toString() << endl;
cout <<"---"<<endl;
cout << e->toString() << endl;
cout <<"---"<<endl;
cout << f->toString() << endl;
return 0;
}