虚函数练习:动物2

虚函数练习:动物2

时间: 1ms        内存:128M

描述:

长期的物种进化使自然界出现了生活在陆地上的陆生动物和生活在水中的水生动物。根据已有主函数编写动物类,陆生动物类和水生动物类。

输入:

动物的体长,体重,性别;

水生动物的体长,体重,性别,游泳速度;

陆生动物的体长,体重,性别,奔跑速度;

输出:

动物的体长,体重,性别;

水生动物的体长,体重,性别,游泳速度;

陆生动物的体长,体重,性别,奔跑速度;

示例输入:

52 22 f
62 32 m 122
72 42 m 102

示例输出:

height:52
weight:22
sex:f
height:62
weight:32
sex:m
swimming_speed:122
height:72
weight:42
sex:m
running_speed:102

提示:

参考答案(内存最优[276]):

program test(input,output);
var 
h,w,v:real;
s:char;
begin
read(h,w,s,s);
writeln('height:',h:0:0);
writeln('weight:',w:0:0);
writeln('sex:',s);
read(h,w,s,s,v);
writeln('height:',h:0:0);
writeln('weight:',w:0:0);
writeln('sex:',s);
writeln('swimming_speed:',v:0:0);
read(h,w,s,s,v);
writeln('height:',h:0:0);
writeln('weight:',w:0:0);
writeln('sex:',s);
writeln('running_speed:',v:0:0);
end.

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
class animal
{
protected:
    int height;  //身高或体长
    int weight;  //体重
    char sex;   //性别
public:
    animal(){}
    animal(int h,int w,char s):
        height(h),weight(w),sex(s){}
	virtual void display();
};

void animal::display()
{
	cout<<"height:"<<height<<endl;
	cout<<"weight:"<<weight<<endl;
	cout<<"sex:"<<sex<<endl;
}

class aqu_animal:public animal  //水生动物
{
protected:
    int swimming_speed;
public:
    aqu_animal(){}
    aqu_animal(int h,int w,char s,int s_p):
        animal(h,w,s),swimming_speed(s_p){}
	void display();
};

void aqu_animal::display()
{
	animal::display();
	cout<<"swimming_speed:"<<swimming_speed<<endl;
}


class ter_animal:public animal  //陆生动物
{
protected:
    int running_speed;
public:
    ter_animal(){}
    ter_animal(int h,int w,char s,int r_p):
        animal(h,w,s),running_speed(r_p){}
	void display();
};

void ter_animal::display()
{
	animal::display();
	cout<<"running_speed:"<<running_speed<<endl;
}

int main()
{
    int a,b,s,r;
	char c;
	animal *p;
	cin>>a>>b>>c;
	animal pa(a,b,c);
	p=&pa;
	p->display();
	cin>>a>>b>>c>>s;
	aqu_animal pb(a,b,c,s);
	p=&pb;
	p->display();
	cin>>a>>b>>c>>r;
	ter_animal pc(a,b,c,r);
	p=&pc;
	p->display();
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注