A
#include<iostream>
#include<cstring>
using namespace std;
class rob
{
private:
char *name;
char type;
int level;
int hp;
int ce;
int df;
public:
rob (char *n, char t, int l)
{
name = new char [21];
strcpy(name,n);
type = t;
level = l;
}
~rob(){delete name;}
friend bool trans(rob *p, char t);
void print()
{
cout << name << "--" << type << "--" << level << "--" << hp << "--" << ce << "--" << df << endl;
}
};
bool trans(rob *p, char t)
{
if(p->type == t) return 0;
p->type = t;//修改机器人类型
if(t == 'N')
{
p->hp = 5 * p->level;
p->ce = 5 * p->level;
p->df = 5 * p->level;
}
if(t == 'A')
{
p->hp = 5 * p->level;
p->ce = 10 * p->level;
p->df = 5 * p->level;
}
if(t == 'D')
{
p->hp = 5 * p->level;
p->ce = 5 * p->level;
p->df = 10 * p->level;
}
if(t == 'H')
{
p->hp = 50 * p->level;
p->ce = 5 * p->level;
p->df = 5 *p->level;
}
return 1;
}
int main ()
{
int t;
cin >> t;
rob *p;
int sum = 0;
char name[21], type;
int level;
while(t--)
{
cin >> name >> type >> level;
rob r (name, type, level);
cin >> type;
p = &r;
sum += trans(p, type);//别放到了print的后面,因为它不仅仅是为了sum+,还变身了
p->print();
}
cout <<"The number of robot transform is "<< sum;
}
B
#include<iostream>
#include<cstring>
using namespace std;
class phone
{
private:
int num;
char type;
int state;
char *name;
public:
phone(){ };
~phone(){
cout << num << " destructed." << endl;
}
void set()
{
char nm[21];
cin >> num >> type >> state >> nm;
name = new char [21];
strcpy(name, nm);
cout << num << " constructed." << endl;
}
int getNum()
{
return num;
}
void print()
{
cout << "Phone=" << num << "--Type=" << type << "--State=";
if(state == 1) cout << "use";
if(state == 0) cout << "unuse";
cout << "--Owner=" << name << endl;
}
};
int main()
{
phone *p = new phone [3];
for(int i = 0; i < 3; i++)
{
p[i].set();
}
int t;
cin >> t;
while(t--)
{
int num,cnt=0;
cin >> num;
for(int i = 0; i < 3; i++)
{
if(p[i].getNum() == num)
{
p[i].print();
}else{
cnt++;
}
if(cnt==3)
{
cout << "wrong number." << endl;
}
}
}
delete []p;//不然就不会调用析构函数
}
c自己一遍过了
D
#include<iostream>
using namespace std;
class Tv
{
private:
static int tv;
static int dvd;
string mode;
int channel;
int vol;
int num;
public:
void setChannel(int c)
{
channel = c;
}
void setVol(int v)
{
vol = v;
}
void initial(int k)
{
mode = "TV";
tv++;
}
void setMode(int k)
{
if(k == 1 && mode != "TV")
{
mode = "TV";
tv++;
dvd--;
}
if(k == 2 && mode != "DVD")
{
mode = "DVD";
dvd++;
tv--;
}
}
void setNum(int n)
{
num = n;
}
void tuneVol(int v)
{
if(v >= 0)
{
if(v >= 100 - vol) vol = 100;
else vol += v;
}
if(v < 0)
{
if( v + vol <= 0) vol = 0;
else vol += v;
}
}
void print()
{
cout << "第" << num << "号电视机--" << mode << "模式--频道" << channel << "--音量" << vol << endl;
}
friend void ctrl (Tv &a, int k, int v, int x);
static int getTv()
{
return tv;
}
static int getDvd()
{
return dvd;
}
};
int Tv :: tv = 0;
int Tv :: dvd = 0;
void ctrl (Tv &a, int k, int v, int x)
{
a.setMode(k);
a.setChannel(x);
a.tuneVol(v);
a.print();
}
int main ()
{
int n;
cin >> n;
Tv *p = new Tv [n];
for(int i = 0; i < n; i++)
{
p[i].setNum(i);
p[i].setChannel(i);
p[i].setVol(50);
p[i].initial(1);
}
int t;
cin >> t;
while(t--)
{
int i, k, x, v;
cin >> i >> k >> x >> v;
ctrl (p[i], k, v, x);
}
int DVD = 0, TV = 0;
DVD = p->getDvd();
TV = p->getTv();
cout << "播放电视的电视机数量为" << TV << endl;
cout << "播放DVD的电视机数量为" << DVD << endl;
delete []p;
}