PTA 宠物的生长 / 期刊收费 / 师生信息管理 C++ 多态 编程题
7-3 宠物的生长 (10分)
现在要开发一个系统,对宠物的生长状态进行管理。
给出下面的一个基类框架
class Pet { protected: string name;//姓名 int length;//身长 int weight;//体重 int current;//当前日期 public: virtual void display(int day)=0;//输出目标日期的身长和体重 } 12345678910
以Pet为基类,构建出Cat和Dog两个类:
Cat一天身长加1,体重加2。
Dog一天身长加2,体重加1。
生成上述类并编写主函数,要求主函数中有一个基类Pet指针数组,数组元素不超过10个。
Pet *pt[10];
主函数根据输入的信息,相应建立Cat类对象或Dog类对象,并给出目标日期宠物的身长和体重。
输入格式:每个测试用例占一行,每行给出宠物的基本信息,第一个为当前宠物的类型:1为Cat,2为Dog。接下来为它的名字,随后的两个数字为身长和体重,最后为测身长和体重的日期(不大于10的正整数)。最后一行为目标日期(大于10的正整数)。
要求输出目标日期宠物姓名、身长和体重
提示:应用虚函数实现多态
输入样例
1 Marry 22 12 5 2 Jack 10 9 9 1 Jim 11 8 6 11 1234
输出样例
Marry 28 24 Jack 14 11 Jim 16 18 123
AC代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; class Pet { protected: string name;//姓名 int length;//身长 int weight;//体重 int current;//当前日期 public: virtual void display(int day)=0;//输出目标日期的身长和体重 virtual ~Pet() {}; Pet(string na,int l,int w,int c) { name =na; length =l; weight=w; current=c; } }; class Cat:public Pet { public: Cat(string na,int l,int w,int c):Pet(na,l,w,c){} virtual void display(int day) { day=day-current; cout<<name<<" "<<length+day<<" "<<weight+day*2<<endl; } }; class Dog:public Pet { public: Dog(string na,int l,int w,int c):Pet(na,l,w,c){} virtual void display(int day) { day=day-current; cout<<name<<" "<<length+day*2<<" "<<weight+day*1<<endl; } }; int main() { Pet *pd[10]; string str; int t,num,i=0,l,w,c; double kg; cin>>t; while(t<10){ cin>>str>>l>>w>>c; if(t==1){ pd[i]=new Cat(str,l,w,c); }else if(t==2){ pd[i]=new Dog(str,l,w,c); } i++; cin>>t; } for(int j=0;j<i;j++){ pd[j]->display(t); } delete *pd; return 0; }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737-4 期刊收费 (10分)
邮局提供两种期刊的订阅:杂志和报纸。 给出下面基类的框架:
class Periodical { protected: string title; //名称 public: virtual void display()=0;//打印收费 } 123456
以Periodical为基类,构建Magazine和Newspaper类。
生成上述类并编写主函数,要求主函数中有一个基类Periodical指针数组,数组元素不超过10个。
Periodical *pp[10];
主函数根据输入的信息,相应建立Magazine, Newspaper类对象,对于Magazine给出订阅期数和每期价格,对于Newspaper给出订阅周数,每周出版次数和每份价格。
输入格式:每个测试用例占一行,第一项为类型,1为Magazine,2为Newspaper,第二项是名称,第三项是单价,Magazine的第四项是期数,Newspaper的第四项是订阅周数,第五项是每周出版次数。
输出时,依次打印各期刊的名称和收费(小数点后保留一位)。
输入样例:
1 AAA 12.8 6 1 BB 15 3 2 CCCC 2.1 16 3 2 DD 0.7 55 7 1 EEE 18 3 0 123456
输出样例:
AAA 76.8 BB 45.0 CCCC 100.8 DD 269.5 EEE 54.0 12345
AC代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; class Periodical { protected: string title; //名称 double price; public: virtual void display()=0;//打印收费 virtual ~Periodical() {}; Periodical(string t,double p) { title=t; price=p; } }; class Magazine:public Periodical { double qs; public: Magazine(string t,double p,double q):Periodical(t,p) { qs=q; } virtual void display() { cout<<title<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<price*qs<<endl; } }; class Newspaper:public Periodical { double zs,cs; public: Newspaper(string t,double p,double q,double c):Periodical(t,p) { zs=q; cs=c; } virtual void display() { cout<<title<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<price*zs*cs<<endl; } }; int main() { Periodical *pd[10]; string s; int t,num,i=0; double kg,p,q,c; cin>>t; while(t){ cin>>s>>p; if(t==1){ cin>>q; pd[i]=new Magazine(s,p,q); }else if(t==2){ cin>>q>>c; pd[i]=new Newspaper(s,p,q,c); } pd[i]->display(); i++; cin>>t; } delete *pd; return 0; }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747-5 师生信息管理 (10分)
给出下面的一个基类框架
class Person { protected: int NO;//编号 public: virtual void display()=0;//输出相关信息 } 12345678
以Person为基类,构建出Student、Teacher两个类。
生成上述类并编写主函数,要求主函数中有一个基类Person指针数组,数组元素不超过10个。
Person *pp[10];
主函数根据输入的信息,相应建立Student, Teacher类对象,对于Student给出期末5门课的成绩(为整数,缺考的科目填-1), 对于Teacher则给出近3年,每年发表的论文数量。
输入格式:每个测试用例占一行,第一项为人员类型,1为Student,2为Teacher.接下来为编号(0-9999),接下来Student是5门课程成绩,Teacher是3年的论文数。最后一行为0,表示输入的结束。
要求输出编号,以及Student缺考的科目数和已考科目的平均分(保留1位小数,已考科目数为0时,不输出平均分),Teacher的3年论文总数。
提示:应用虚函数实现多态
输入样例
1 19 -1 -1 -1 -1 -1 1 125 78 66 -1 95 88 2 68 3 0 7 2 52 0 0 0 1 6999 32 95 100 88 74 0 123456
输出样例
19 5 125 1 81.8 68 10 52 0 6999 0 77.8 12345
AC代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; class Person { protected: int NO;//编号 public: virtual void display()=0;//输出相关信息 Person(int n){NO=n;} virtual ~Person(){}; }; class Student:public Person { double pj; int num=0; public: Student(int n,int n1,int n2,int n3,int n4,int n5):Person(n) { if(n1==-1) num++; else pj+=n1; if(n2==-1) num++; else pj+=n2; if(n3==-1) num++; else pj+=n3; if(n4==-1) num++; else pj+=n4; if(n5==-1) num++; else pj+=n5; pj=pj/(5-num); } virtual void display() { cout<<NO<<" "<<num; if(num!=5){ cout<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<pj; } cout<<endl; } }; class Teacher:public Person { int num; public: Teacher(int n,int n1,int n2,int n3):Person(n) { num=n1+n2+n3; } virtual void display() { cout<<NO<<" "<<num<<endl; } }; int main() { Person *pd[10]; string s; int t,n,i=0,n1,n2,n3,n4,n5; cin>>t; while(t){ cin>>n; if(t==1){ cin>>n1>>n2>>n3>>n4>>n5; pd[i]=new Student(n,n1,n2,n3,n4,n5); }else if(t==2){ cin>>n1>>n2>>n3; pd[i]=new Teacher(n,n1,n2,n3); } pd[i]->display(); i++; cin>>t; } delete *pd; return 0; }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081相关知识
java特性封装、抽象、继承、多态理论
C++动物运动会源代码资源
PTA 宠物的生长(多态) (10 分)
第十一届蓝桥杯青少组C++竞赛规则及样题.pdf.pdf
JAVA宠物信息管理系统开发教程【MVC+JCF+IO流】
a=b++,c++和a=(b++,c++)的区别
宠物行业用的是什么编程语言
宠物的生长(多态)
添加主人类,通过多态实现给宠物喂食。
多态应用
网址: PTA 宠物的生长 / 期刊收费 / 师生信息管理 C++ 多态 编程题 https://www.mcbbbk.com/newsview642452.html
上一篇: 需求分析报告—宠物管理系统123 |
下一篇: 猫咪咖啡店纽约开张 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352