期末模拟题题解汇总
期末模拟题题解
练习1
T1
考察了虚函数、派生类
#include<bits/stdc++.h>
using namespace std;
//基类
class Member{
protected:
int id;
string name;
int score;
public:
Member(int id,string name,int score)
{
this->id=id;
this->name=name;
this->score=score;
}
virtual void Add(int money)
{
score+=money;
}
virtual int Exchange(int exchangeScore)
{
int money=exchangeScore/100;
score-=money*100;
return money;
}
virtual void Print()
{
cout<<"普通会员"<<id<<"--"<<name<<"--"<<score<<endl;
}
// virtual ~Member()
// {
//
// }
};
//派生类
class VIP:public Member
{
private:
int addr,exr;
public:
VIP(int id,string name,int score,int addr,int exr)
:
Member(id,name,score)
{
this->addr=addr,this->exr=exr;
}
void Add(int money) override
{
score+=money*addr;
}
int Exchange(int exchangeScore)override
{
int money=exchangeScore/exr;
score-=money*exr;
return money;
}
void Print()override
{
cout<<"贵宾会员"<<id<<"--"<<name<<"--"<<score<<endl;
}
};
int main()
{
Member *pm;
int id;
string name;
int score;
cin>>id>>name>>score;
Member mm{id,name,score};
int money,exchange;
cin>>money>>exchange;
pm=&mm;
pm->Add(money);
pm->Exchange(exchange);
pm->Print();
//VIP
cin>>id>>name>>score;
int addr,exr;
cin>>addr>>exr;
VIP vv{id,name,score,addr,exr};
cin>>money>>exchange;
pm=&vv;
pm->Add(money);
pm->Exchange(exchange);
pm->Print();
return 0;
}
T2
#include<bits/stdc++.h>
using namespace std;
class Metal{
private:
int hardness,weight,volume;
public:
Metal(int h=0,int w=0,int v=0)
:
hardness(h),
weight(w),
volume(v)
{
}
//合并
friend Metal operator+(const Metal& a,const Metal& b)
{
return Metal(
a.hardness+b.hardness,
a.weight+b.weight,
a.volume+b.volume);
}
//巨化
friend Metal operator*(const Metal& a,int n)
{
return Metal(a.hardness,a.weight,a.volume*n);
}
//硬化
Metal& operator++()
{
hardness++,weight*=1.1,volume*=1.1;
return *this;
}
//软化
Metal& operator--()
{
hardness--;
weight*=0.9;
volume*=0.9;
return *this;
}
void Print()
{
cout<<"硬度"<<hardness<<"--重量"<<weight<<"--体积"<<volume<<endl;
}
};
int main()
{
int h,w,v;
cin>>h>>w>>v;
Metal m1(h,w,v);
cin>>h>>w>>v;
Metal m2(h,w,v);
Metal result=m1+m2;
result.Print();
int n;
cin>>n;
result=m1*n;
result.Print();
++m1;
m1.Print();
--m2;
m2.Print();
return 0;
}
T3
#include<bits/stdc++.h>
using namespace std;
class Appliance{
protected:
int id,power;
public:
Appliance(int id,int power)
:
id(id),
power(power){
}
virtual void Print()
{
cout<<"编号"<<id<<"--功率"<<power<<"W"<<endl;
}
};
class Fan:virtual public Appliance{
protected:
int direction,strength;
public:
Fan(int id,int power,int direction,int strength)
:
Appliance(id,power),
direction(direction),
strength(strength){
}
void DirectionControl(int d)
{
direction=d;
}
void PowerControl(int p)
{
strength=p;
}
void Print() override
{
Appliance::Print();
if(direction==0) cout<<"定向吹风";
else cout<<"旋转吹风";
cout<<"--风力"<<strength<<"级"<<endl;
}
};
class Humidifier
:
virtual public Appliance
{
protected:
double water;
double maxWater;
public:
Humidifier(int id,int power,double water,double maxWater)
:
Appliance(id,power),
water(water),
maxWater(maxWater){
}
int Warning()
{
if(water>=maxWater*0.5)
{
return 1;
}else if(water>=maxWater*0.1)
{
return 2;
}else{
return 3;
}
}
void Print()override
{
Appliance::Print();
int result=Warning();
if(result==1) cout<<"水量正常"<<endl;
else if(result==2) cout<<"水量偏低"<<endl;
else cout<<"水量不足"<<endl;
}
};
class HumidfyingFan
:
public Fan,
public Humidifier{
private:
int level;
public:
HumidfyingFan(int id,int power,int direction,int strength,double water,double maxWater,int level)
:
Appliance(id,power),
Fan(id,power,direction,strength),
Humidifier(id,power,water,maxWater),
level(level){
}
void Adjust(int l)
{
level=l;
if(level==0) return;
if(level==1)
{
DirectionControl(0);
PowerControl(1);
}else if(level==2)
{
DirectionControl(1);
PowerControl(2);
}else if(level==3)
{
DirectionControl(1);
PowerControl(3);
}
}
void Print()override
{
cout<<"加湿风扇--档位"<<level<<endl;
cout<<"编号"<<id<<"--功率"<<power<<"W"<<endl;
if(direction==0)
cout<<"定向吹风";
else
cout<<"旋转吹风";
cout<<"--风力"<<strength<<"级"<<endl;
int result=Warning();
if(result==1)
cout<<"水量正常"<<endl;
else if(result==2)
cout<<"水量偏低"<<endl;
else
cout<<"水量不足"<<endl;
}
};
int main()
{
int n;
cin>>n;
while(n--)
{
int id,power,direction,strength;
double water,maxWater;
int level;
cin>>id>>power>>direction>>strength>>water>>maxWater>>level;
HumidfyingFan fan(id,power,direction,strength,water,maxWater,level);
int change;
cin>>change;
fan.Adjust(change);
fan.Print();
}
return 0;
}
Test3 T3
#include<bits/stdc++.h>
using namespace std;
class Audio {
private:
string title;
int length;
public:
Audio(string title,int length):title(title),length(length) {
cout<<"Audio constructor"<<endl;
}
Audio():title(""),length(0) {
cout<<"Audio constructor"<<endl;
}
virtual void set(string t,int l) {
title=t;
length=l;
}
virtual void print() {
cout<<title<<" "<<length<<" ";
}
int getLength() {
return length;
}
virtual ~Audio() {
cout<<"Audio destructor"<<endl;
}
};
class Producer {
private:
string name;
public:
Producer(string name):name(name) {
cout<<"Producer constructor"<<endl;
}
Producer() {
cout<<"Producer constructor"<<endl;
}
void set(string n) {
name=n;
}
void Print() {
cout<<name<<" ";
}
~Producer() {
cout<<"Producer destructor"<<endl;
}
};
class Song:public Audio {
private:
string singer;
Producer producer;
public:
//注意这里的producername
Song(string title,int length,string singer,string producerName)
:Audio(title,length),singer(singer),producer(producerName) {
cout<<"Song constructor"<<endl;
}
//producer也要记得
Song():Audio(),producer() {
cout<<"Song constructor"<<endl;
}
void set(string singer,string title,int length,string producerName) override {
this->singer=singer;
Audio::set(title,length);
producer.set(producerName);
}
void print() override {
cout<<singer<<" ";
Audio::print();
producer.Print();
cout<<endl;
}
~Song() {
cout<<"Song destructor"<<endl;
}
};
int Select(Song s[],int n) {
int index=0;
for(int i=1;i<n;i++) {
if(s[i].getLength()>s[index].getLength())
index=i;
}
return index;
}
int main() {
int t;
cin>>t;
Song s[100];
for(int i=0;i<t;i++) {
string singer,title,producer;
int length;
cin>>singer>>title>>length>>producer;
s[i].set(singer,title,length,producer);
}
int id=Select(s,t);
s[id].print();
return 0;
}

浙公网安备 33010602011771号