F.比武大赛(如何表示字符串为空)

string name;

若想表示字符串为空:

1:name=="";

2:name.length()<=0;

3:name.empty();        若为空,则返回1;

F.比武大赛
Time Limit: 1000 MSMemory Limit: 32768 K
Total Submit: 95 (69 users)Total Accepted: 76 (69 users)Special Judge: No
Description
利用面向对象程序设计的方法,实现给定类的设计,并解决如下问题。
   英雄三人分胜负。谁赢谁输要看他们的智商IQ、内力修炼IF、所持兵器WP三方面点数之和,设定点数之和各不相同。
   英雄由类Hero表示,武器由类Weapon表示。

Input
1组测试数据。测试数据有3行输入。
   第1行输入只靠IQ的英雄(IF=0,WP=0)数据,分别是名字(string型)、智商IQ(int型)。
   第2行输入仅靠IQ&IF的英雄(WP=0)数据,分别是名字(string型)、智商IQ(int型)、内力修炼IF(int型),数据之间由空格分隔。
   第3行输入靠IQ&IF&WP的英雄数据,分别是名字(string型)、智商IQ(int型)、内力修炼IF(int型)、所持兵器名字(string型)及攻击力WP(int型),数据之间由空格分隔。

Output
输出数据占1行,是最终获胜英雄的名字、点数及武器名,空格分隔。

Sample Input
Liu 1000 
Guan 200 300
Zhang 400 200 Spear 300
Sample Output
Liu 1000 UnArmed
Hint
注意:在给定类的基础上,完善类的设计。给定主函数不能改变。
class Weapon{
  private:
      string name;//武器名字
      int power;//武器攻击力WP
  public:
      ...
};
class Hero{
  private:
      string name;//英雄名字
      int IQ;//智商IQ
      int IF;//内力修炼IF
      Weapon w;//所持武器
  public:
      ...
};


int main()
{
    string n1,n2;
    int iq,iif,wp;
    int t(0);
    cin>>n1>>iq;
    Hero ZhuGL(n1,iq);
    cin>>n1>>iq>>iif;
    Hero ZhangSF(n1,iq,iif);
    cin>>n1>>iq>>iif>>n2>>wp;
    Hero GuoJ(n1,iq,iif,n2,wp),th("",0,0,"",0);
    if(ZhuGL.getTotal()>ZhangSF.getTotal())
       {t=ZhuGL.getTotal();th=ZhuGL;}
    else
       {t=ZhangSF.getTotal();th=ZhangSF;}
    if(t<GuoJ.getTotal())
       {t=GuoJ.getTotal();th=GuoJ;}
    cout<<th.getName()<<" "<<th.getTotal()<<" "<<th.getWeapon().getName()<<endl;
    return 0;


}

#include<iostream>
#include<string>
using namespace std;


class Weapon {
private:
    string name;//武器名字
    int power;//武器攻击力WP
public:
    void set(string n, int p)
    {
        name = n, power = p;
    }
    int getH()
    {
        return power;
    }
    string getName()
    {
        if (name=="")
        {
            return "UnArmed";
        }
        return name;
    }
};
class Hero {
private:
    string name;//英雄名字
    int IQ;//智商IQ
    int IF;//内力修炼IF
    Weapon w;//所持武器
public:
    Hero(string n, int i) :name(n), IQ(i), IF(0) { w.set("", 0); }
    Hero(string n, int i, int iiiif) :name(n), IQ(i), IF(iiiif) { w.set("", 0); }
    Hero(string n, int i, int iiiif, string w_n, int w_p) :name(n), IQ(i), IF(iiiif) { w.set(w_n, w_p); }
    int getTotal()
    {
        int a = IQ + IF + w.getH();
        return a;
    }
    string getName()
    {
        return name;
    }
    Weapon getWeapon()
    {
        return w;
    }
};


int main()
{
    string n1, n2;
    int iq, iif, wp;
    int t(0);
    cin >> n1 >> iq;
    Hero ZhuGL(n1, iq);
    cin >> n1 >> iq >> iif;
    Hero ZhangSF(n1, iq, iif);
    cin >> n1 >> iq >> iif >> n2 >> wp;
    Hero GuoJ(n1, iq, iif, n2, wp), th("", 0, 0, "", 0);
    if (ZhuGL.getTotal() > ZhangSF.getTotal())
    {
        t = ZhuGL.getTotal(); th = ZhuGL;
    }
    else
    {
        t = ZhangSF.getTotal(); th = ZhangSF;
    }
    if (t < GuoJ.getTotal())
    {
        t = GuoJ.getTotal(); th = GuoJ;
    }
    cout << th.getName() << " " << th.getTotal() << " " << th.getWeapon().getName() << endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值