西加加:6-3 算算你的人民币

    技术2025-04-11  11

    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) { Money M(0,0,0); M.fen += a.fen + b.fen; if(M.fen>=10) { M.jiao++; M.fen = M.fen%10; } M.jiao += a.jiao + b.jiao; if(M.jiao>=10) { M.yuan++; M.jiao = M.jiao%10; } M.yuan += a.yuan + b.yuan; return M; } Money operator-(Money a, Money b) { Money M(0,0,0); int A = a.yuan*100 + a.jiao*10 + a.fen; int B = b.yuan*100 + b.jiao*10 + b.fen; int s = 0; if (A>B) { s += A - B; M.flag = 0; } else { s += B - A; M.flag = 1; } M.fen = M.fen + s%10; s = (s - s%10)/10; M.jiao = M.jiao + s%10; s = (s - s%10)/10; M.yuan = M.yuan + s; return M; }

     

    Processed: 0.008, SQL: 9