您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
面向对象上机考试题(1)——关于宠物进笼
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000

Anne的宠物小屋有12个笼子,每个笼子可以放不同的动物,但只能放1只或0只,包括
猫Cat,狗Dog,蛇Snake.
1,实现一个简单的管理系统,可增加、删除笼子中的宠物,查询每个笼子中存放的
宠物类型,(包括笼子为空的情况),统计笼中宠物的种类和数量.
2,定义描述宠物小屋的类shelves,其中有12笼子用于存放各种宠物.
3,定义虚拟基类Animal,包括纯虚函数ShowMe,显示每个宠物的情况,包括类型、颜色、
体重和喜爱的食物。
4,定义派生类Cat,Dog,Snake,具体实现上述纯虚函数。
5,重载输入‘>>'*作符,使得可能通过cin直接读入宠物颜色、体重和喜爱的
食物。
6,编写main函数,测试上述要求和各种功能。
*/

#include "Stdafx.h"
#include "iostream.h"
#include "string.h"
enum {NONE=0, CAT=1, DOG=2, SNAKE=3};

class Animal
{
protected:
char color[20];
char food[20];
double weight;
public:
virtual void ShowMe()=0;
};

class Cat:public Animal
{
public:
friend istream& operator>>(istream &is, Cat &cat);
void ShowMe()
{
cout<<"猫的颜色、喜欢的食物、体重分别为:";
cout<}
};

istream & operator>>(istream &is, Cat &cat)
{
cout<<" 请输入猫的颜色: ";
is>>cat.color;
cout<<" 喜爱的食物:";
is>>cat.food;
cout<<" 体重:";
is>>cat.weight;
return is;
}


class Dog:public Animal
{
public:
friend istream& operator>>(istream &is, Dog &Dog);
void ShowMe()
{
cout<<"狗的颜色、喜欢的食物、体重分别为:";
cout<}
};

istream& operator>>(istream &is, Dog &dog)
{
cout<<" 请输入狗的颜色: ";
is>>dog.color;
cout<<" 喜爱的食物:";
is>>dog.food;
cout<<" 体重:";
is>>dog.weight;
return is;
}

class Snake:public Animal
{
public:
friend istream& operator>>(istream &is, Snake &snake);
void ShowMe()
{
cout<<"蛇的颜色、喜爱的食物、体重分别为:";
cout<}
};

istream& operator>>(istream &is, Snake &snake)
{
cout<<" 请输入蛇的颜色: ";
is>>snake.color;
cout<<" 喜爱的食物: ";
is>>snake.food;
cout<<" 体重: ";
is>>snake.weight;
return is;
}

class Shelves
{
int cage[12];
int sum[3];
Cat cats[12];
Dog dogs[12];
Snake snakes[12];
// int flag[12];
// int sum_c, sum_d, sum_s;
public:
Shelves ()
{
for (int i=0; i<12; i++)
cage[i]=NONE;
for (i=0; i<4; i++)
sum[i]=0;
}

int push_cat(Cat &cat, int n)
{
cats[n] = cat;
if (cage[n]!=NONE) return 0;
else {
sum[0]++;
return cage[n]=CAT;
}
}

int push_dog(Dog &dog, int n)
{
dogs[n]=dog;
if (cage[n]!=NONE) return 0;
else{
sum[1]++;
return cage[n]=DOG;
}
}
int push_snake(Snake &snake, int n)
{
snakes[n]=snake;
if (cage[n]!=NONE) return 0;
else {
sum[2]++;
return cage[n]=SNAKE;
}
}

void del(int n)
{
if (cage[n]==CAT) sum[0]--;
if (cage[n]==DOG) sum[1]--;
if (cage[n]==SNAKE) sum[2]--;
if (cage[n]==NONE)
cout<<"笼子里没有动物"<else
{
cage[n]=NONE;
cout<<"已删除笼子里的动物"<}
cout<}

void seek(int n)
{
if (cage[n]==NONE) cout<<"第"<if (cage[n]==CAT)
{
cout<<"第"<cats[n].ShowMe();
}
if (cage[n]==DOG)
{
cout<<"第"<dogs[n].ShowMe();
}
if (cage[n]==SNAKE)
{
cout<<"第"<snakes[n].ShowMe();
}
cout<}

void count()
{
cout<<"笼子里的猫总共有:"<cout<<"笼子里的狗总共有:"<cout<<"笼子里的蛇总共有:"<cout<}
};

void main()
{
char c;
Cat cat;
Dog dog;
Snake snake;
Shelves shelves;
int i=1,j;

cout<<"这是关于往笼子里放动物的问题: "<cout<cout<<" 1: 往笼子里放猫;"<cout<<" 2: 往笼子里放狗;"<cout<<" 3: 往笼子里放蛇;"<cout<<" 4: 查询笼子里的动物;"<cout<<" 5: 删除笼子里的动物;"<cout<<" 6:统计笼子里的动物种类及数量;"<cout<<" 7: 退出程序;"<cout<<"------------------------------------------"<while(i)
{
cout<<"请选择您的*作:";
cin>>i;
switch(i)
{
case 1:
cout<<" 往哪只笼子里面放: ";
cin>>j;
cin>>cat;
while (shelves.push_cat(cat, j)==0)
{
cout<<" 笼子里已有动物,请换一个笼子: ";
cin>>j;
}
break;
case 2:
cout<<" 往哪只笼子里面放: ";
cin>>j;
cin>>dog;
while (shelves.push_dog(dog, j)==0)
{
cout<<" 笼子里已有动物,请换一个笼子: ";
cin>>j;
}
break;
case 3:
cout<<" 往哪只笼子里面放: ";
cin>>j;
cin>>snake;
while (shelves.push_snake(snake, j)==0)
{
cout<<" 笼子里已有动物,请换一个笼子: ";
cin>>j;
}
break;
case 4:
cout<<" 查询哪只笼子: ";
cin>>j;
shelves.seek(j);
break;
case 5:
cout<<" 删除哪只笼子里的动物: ";
cin>>j;
shelves.del(j); break;
case 6:
shelves.count(); break;
default: i=0; break;
}
cout<}
}

下一篇:北大“高级语言程序设计”上机考试题(9月11日)

1。编一c程序,他能读入一串浮点数(以-9999。0为结束标记,-9999。0不算在内,这串浮点数个数不大于10000)计算并输出这些数绝对值的平均值以及着些数绝对值大于,小于该平均值的数的个数。

2。编一c程序,他能读入一个正整数n(<20),然后输出如下图形,图形中的数字10,11,12,13,14,15,16,17,18,19 依次用A,B,C,D,E,F,G,H,I,J,表示。

1

2 2 2

AA............AAAA

查看详情]

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:面向对象上机考试题(2)——关于堆栈
下一篇:北大“高级语言程序设计”上机考试题(9月11日)
 相关新闻
·软件水平考试网络工程师英语复习练习题6套·软件水平考试网络工程师英语复习练习题8套
·软件水平考试网络工程师英语复习练习题10套·软件水平考试网络工程师英语复习练习题9套
·网络工程师训练资料——60道典型选择题及答案·网络工程师经典模拟试卷
·网络工程师-填空练习题·计算机软件水平考试网络程序员考试练习题
·计算机软件水平考试网络设计师模拟试题·网络工程师试题及详细解析——局域网篇
·网络工程师基础训练题·网络工程师综合练习一
·助理电子商务师考试试题(理论)·C语言上机考试试题(2002年5月11日)
·全国软件水平程序员考试部分例题·北大“高级语言程序设计”上机考试题(9月11日)
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
·2008年中级会计职称《经济法》试题及答案
·2008年注册会计师考前模拟试题参考答案之
·2008年注册会计师考前模拟试题之《会计》
·2008年注册会计师考前模拟试题之《税法》
·2008年高校招生全国统考理数试题(四川延
·2008年全国高考物理科试题参考答案(上海
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例