动物园:
某个动物园内,有老虎、狗、鸭子和猪等动物,动物园的管理员为每个动物都起了一个名字,并且每个动物都有年龄、体重等信息。每到喂食的时候,不同的动物都会叫唤(speak)。
每种动物的叫唤声均不同,老虎的叫唤声是“AOOO”,狗的叫唤声是“WangWang”,鸭子的叫唤声是“GAGA”,猪的叫唤声是“HENGHENG”。
定义一个Animal的基类,Animal类有函数Speak(),并派生老虎、狗、鸭子和猪类,其能发出不同的叫唤声(用文本信息输出叫声)。
编写程序,输入动物名称、名字、年龄,让动物园内的各种动物叫唤。
输入
测试案例的个数
第一种动物的名称 名字 年龄
第二种动物的名称 名字 年龄
输出
输出相应动物的信息
如果不存在该种动物,输出There is no 动物名称 in our Zoo.
#include<iostream>
using namespace std;
class Animal{
protected:
char *name;
int age;
public:
Animal(char *n,int a);//构造函数
virtual void Speak();//成员函数,声明Speak方法
virtual ~Animal();//析构函数
};
Animal::Animal(char *n,int a){ //Animal构造函数定义初始值
name=new char[strlen(n)+1];
strcpy(name,n);
age=a;
}
void Animal::Speak(){}
Animal::~Animal(){//清除已有的name值
if (name!=NULL)
delete name;
}
class Tiger:public Animal{//老虎,公有继承Animal
public:
Tiger(char *n,int a);//老虎的构造函数
virtual void Speak();//老虎叫这个行为
};
Tiger::Tiger(char *n,int a):Animal(n,a){}//构造函数传入Animal的值
void Tiger::Speak(){//老虎叫了
cout<< "Hello,I am " <<name<< ",AOOO." <<endl;
}
class Dog:public Animal{
public:
Dog(char *n,int a);//狗的构造
virtual void Speak();//狗叫行为
};
Dog::Dog(char *n,int a):Animal(n,a){}//一样继承Animal的值
void Dog::Speak(){//狗叫了
cout<< "Hello,I am " <<name<< ",WangWang." <<endl;
}
class Duck:public Animal{
public:
Duck(char *n,int a);//鸭子的构造
virtual void Speak();//鸭子叫行为
};
Duck::Duck(char *n,int a):Animal(n,a){}//一样继承Animal的值
void Duck::Speak(){//鸭子叫了
cout<< "Hello,I am " <<name<< ",GAGA." <<endl;
}
class Pig:public Animal{
public:
Pig(char *n,int a);//猪的构造
virtual void Speak();//猪叫行为
};
Pig::Pig(char *n,int a):Animal(n,a){}//一样继承Animal的值
void Pig::Speak(){//猪叫了
cout<< "Hello,I am " <<name<< ",HENGHENG." <<endl;
}
int main(){
char animal[20],name[20];
int age,t,i;
Animal *a1;
cin>>t;
while(t--){
i=0;
cin>>animal>>name>>age;
if(!strcmp(animal,"Tiger")){
i=1;
Tiger t1(name,age);
a1=&t1;
a1->Speak();
}
if(!strcmp(animal,"Dog")){
i=1;
Dog d1(name,age);
a1=&d1;
a1->Speak();
}
if(!strcmp(animal,"Duck")){
i=1;
Duck d1(name,age);
a1=&d1;
a1->Speak();
}
if(!strcmp(animal,"Pig")){
i=1;
Pig p1(name,age);
a1=&p1;
a1->Speak();
}
if(i==0){
cout<<"There is no "<<animal<<" in our Zoo."<<endl;
}
}
return 0;
}
↑↑↑↑↑↑↑↑↑↑参考于:https://blog.csdn.net/hhhertzzz/article/details/106091853
教师工资:
输入1个数,判断教师职称,1代表教授,2代表副教授,3代表讲师;然后输入一组数据,分别是教师的姓名、性别、工号以及课时数,输出本月工资。其中工资计算方式如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元;副教授的固定工资为3000元,每个课时补贴30元;讲师的固定工资为2000元,每个课时补贴20元。输出教师的工资,若是不在这三个职称之内,输出Error.
#include<iostream>
using namespace std;
class Title{
protected:
string name;
string gender;
string jobid;
double hours;
public:
Title(string _name,string _gender,string _jobid,double _hours):name(_name),gender(_gender),jobid(_jobid),hours(_hours){};
virtual void printsalary(){}
};
class Professor:public Title{
public:
Professor(string a,string b,string c,double d):Title(a,b,c,d){};
virtual void printsalary(){
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<gender<<endl;
cout<<"工号:"<<jobid<<endl;
cout<<"课时数:"<<hours<<endl;
cout<<"本月工资:"<<5000+50*hours<<endl;
}
};
class Ass_Professor:public Title{
public:
Ass_Professor(string a,string b,string c,double d):Title(a,b,c,d){};
virtual void printsalary(){
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<gender<<endl;
cout<<"工号:"<<jobid<<endl;
cout<<"课时数:"<<hours<<endl;
cout<<"本月工资:"<<3000+30*hours<<endl;
}
};
class Lecturer:public Title{
public:
Lecturer(string a,string b,string c,double d):Title(a,b,c,d){};
virtual void printsalary(){
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<gender<<endl;
cout<<"工号:"<<jobid<<endl;
cout<<"课时数:"<<hours<<endl;
cout<<"本月工资:"<<2000+20*hours<<endl;
}
};
int main(){
int a;
string b,c,d;
double e;
Title *p;
cin>>a>>b>>c>>d>>e;
if (a==1)
{
Professor pro(b,c,d,e);
p=&pro;
p->printsalary();
}
else if (a==2)
{
Ass_Professor ap(b,c,d,e);
p=≈
p->printsalary();
}
else if (a==3)
{
Lecturer le(b,c,d,e);
p=≤
p->printsalary();
}
else
{
cout<<"Error.";
}
}