• 动物园(虚函数与多态)


    目录

    题目描述

    AC代码


    题目描述

    某个动物园内,有老虎、狗、鸭子和猪等动物,动物园的管理员为每个动物都起了一个名字,并且每个动物都有年龄、体重等信息。每到喂食的时候,不同的动物都会叫唤(speak)。每种动物的叫唤声均不同,老虎的叫唤声是“AOOO”,狗的叫唤声是“WangWang”,鸭子的叫唤声是“GAGA”,猪的叫唤声是“HENGHENG”。

    定义一个Animal的基类,Animal类有函数Speak(),并派生老虎(Tiger)、狗(Dog)、鸭子(Duck)和猪(Pig)类,其能发出不同的叫唤声(用文本信息输出叫声)。

    编写程序,输入动物名称、名字、年龄,让动物园内的各种动物叫唤。

    要求:只使用一个基类指针,指向生成的对象并调用方法。

    输入

    测试案例的个数

    第一种动物的名称  名字  年龄

    第二种动物的名称  名字 年龄

    ......

    输出

    输出相应动物的信息

    如果不存在该种动物,输出There is no 动物名称 in our Zoo.  ,具体输出参考样例输出

    输入样例1

    4
    Tiger Jumpjump 10
    Pig Piglet 4
    Rabbit labi 3
    Duck tanglaoya 8

    输出样例1

    Hello,I am Jumpjump,AOOO.
    Hello,I am Piglet,HENGHENG.
    There is no Rabbit in our Zoo.
    Hello,I am tanglaoya,GAGA.

    AC代码

    1. #include<bits/stdc++.h>
    2. using namespace std;
    3. class Animal{
    4. protected:
    5. string name;
    6. int year;
    7. public:
    8. void datain(){cin>>name>>year;}
    9. virtual void Speak()=0;
    10. };
    11. class Tiger:public Animal{
    12. public:
    13. virtual void Speak(){cout<<"Hello,I am "<<name<<",AOOO."<<endl;}
    14. };
    15. class Dog:public Animal{
    16. public:
    17. virtual void Speak(){cout<<"Hello,I am "<<name<<",WangWang."<<endl;}
    18. };
    19. class Duck:public Animal{
    20. public:
    21. virtual void Speak(){cout<<"Hello,I am "<<name<<",GAGA."<<endl;}
    22. };
    23. class Pig:public Animal{
    24. public:
    25. virtual void Speak(){cout<<"Hello,I am "<<name<<",HENGHENG."<<endl;}
    26. };
    27. int main() {
    28. int t;
    29. cin >> t;
    30. string Kind;
    31. Animal * animal;
    32. while (t--) {
    33. cin>>Kind;
    34. if(Kind=="Tiger"){animal=new Tiger;}
    35. else if(Kind=="Dog"){animal=new Dog;}
    36. else if(Kind=="Duck"){animal=new Duck;}
    37. else if(Kind=="Pig"){animal=new Pig;}
    38. else{
    39. cout<<"There is no "<<Kind<<" in our Zoo."<<endl;
    40. cin.ignore(1314,'\n');
    41. continue;
    42. }
    43. animal->datain();
    44. animal->Speak();
    45. }
    46. }
  • 相关阅读:
    【Go】格式化字符串指令大全 && Redis常用命令
    高频笔试题(蔚来)
    一文彻底搞懂什么是SSH中间人攻击(Man-in-the-middle attack)
    Linux ls-al命令实现,tree命令实现,不带缓存的文件IO(open,read,write)
    排序算法-冒泡、选择、堆、插入、归并、快速、希尔
    (c语言)调试——习题
    智能网卡(SmartNIC):增强网络性能
    el-upload添加请求头
    LeetCode102.二叉树的层序遍历
    Linux驱动开发(十四)---USB驱动开发学习(键盘+鼠标)
  • 原文地址:https://blog.csdn.net/weixin_62264287/article/details/126816007