PTA-6-3 算算你的人民币 (20分)

定义一个RMB类 Money,包含元、角、分三个数据成员,友元函数重载运算符‘+’(加) 和 ‘-’(减),实现货币的加减运算

函数接口定义:

在这里描述函数接口。例如:
Money operator+(Money a, Money b);
Money operator-(Money a, Money b);

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
#include <iostream> 
using namespace std;

class Money 
{
private:
    int yuan, jiao, fen;
    bool flag;            //标志位,0表示钱数为正,1表示钱数为负 -> 默认结果的钱数为正 
public:
    Money(); 
    Money(int fg, int y=0, int j=0, int f=0): yuan(y), jiao(j), fen(f), flag(fg){}
    friend Money operator+(Money a, Money b);    
    friend Money operator-(Money a, Money b);
    void display();

};

Money::Money()
{
    flag = 0;
    //cout << "请输入元、角 分:" <<endl;
    cin >> yuan >> jiao >> fen;
}

void Money::display()
{
    if(flag==1) cout << '-'; 
    cout << yuan << "元" << jiao << "角" << fen << "分" << endl;
}


/* 请在这里填写答案 */

int main() 
{
    Money m1, m2, m3(0), m4(0); //m3用来记录和,m4用来记录差 

    // +
    m3=m1+m2;
    cout<<"和:";
    m3.display(); 

    // -
    m4=m1-m2;
    cout<<"差:";
    m4.display();

    return 0;
}

输入样例:

在这里给出一组输入。例如:

2 3 4
3 7 3

输出样例:

在这里给出相应的输出。例如:

和:6元0角7分 
差:-1元3角9分

 填空的代码为:

Money operator+(Money a, Money b)
{
    a.fen=a.fen+b.fen;
    if(a.fen>=10) {a.fen=a.fen%10;a.jiao++;}
    a.jiao+=b.jiao;
    if(a.jiao>=10) {a.jiao=a.jiao%10;a.yuan++;}
    a.yuan+=b.yuan;
    return a;
}
Money operator-(Money a, Money b)
{
    int A,B;
    A=a.yuan*100+a.jiao*10+a.fen;
    B=b.yuan*100+b.jiao*10+b.fen;
    if(A>B){
        a.fen=a.fen-b.fen;
        a.jiao-=b.jiao;
        a.yuan-=b.yuan;
        return a;
    }
    else{
        a.flag=1;
        a.yuan=(B-A)/100;
        a.jiao=(B-A-100*a.yuan)/10;
        a.fen=B-A-100*a.yuan-10*a.jiao;
        return a;
    }
}

猜你喜欢

转载自blog.csdn.net/loglian/article/details/106289812