Problem C: 动物要吃饭
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1356 Solved: 1226
[Submit][Status][Web Board]
Description
定义Animal类,只有一个纯虚函数eat。
定义Dog、Cat、Sheep、Chicken四个类,它们都是Animal的子类。
每个类重载eat方法,每个方法输出的内容见样例。
Input
一系列0~3之内的整数。
Output
每个输入对应一行输出,0、1、2、3分别代表Dog、Cat、Sheep、Chicken。
Sample Input
01232310
Sample Output
Dog eats bone.Cat eats fish.Sheep eats grass.Chicken eats worm.Sheep eats grass.Chicken eats worm.Cat eats fish.Dog eats bone.
HINT
Append Code
append.cc,
[Submit][Status][Web Board]
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <iostream> #include <iostream> #include <iomanip> #include <stdio.h> #include <cstring> #include <cmath> #include <list> #include <vector> using namespace std; class Animal { public : virtual void eat() const = 0; }; class Dog: public Animal { public : void eat() const {cout<< "Dog eats bone." <<endl;} }; class Cat: public Animal { public : void eat() const {cout<< "Cat eats fish." <<endl;} }; class Sheep: public Animal { public : void eat() const {cout<< "Sheep eats grass." <<endl;} }; class Chicken: public Animal { public : void eat() const {cout<< "Chicken eats worm." <<endl;} }; int main() { int c; vector<Animal*> animals; vector<Animal*>::iterator itr; while (cin>>c) { switch (c) { case 0 : animals.push_back( new Dog()); break ; case 1: animals.push_back( new Cat()); break ; case 2: animals.push_back( new Sheep()); break ; case 3: animals.push_back( new Chicken()); } } for (itr = animals.begin(); itr != animals.end(); itr++) (*itr)->eat(); return 0; } |