C++ D. 货币加减(运算符重载)

文章描述了一个使用C++编程实现的CMoney类,该类包含了元、角、分三个数据成员,通过友元函数重载实现了货币的加法和减法操作。程序接收用户输入的货币值和操作指令,如加法(add)、减法(minus)或结束(stop),并输出最终的货币金额。提供的参考代码包括了输入输出流的重载以及货币对象的构造和操作方法。
摘要由CSDN通过智能技术生成


一、题目描述

定义CMoney类,包含元、角、分三个数据成员,友元函数重载‘+’、‘-’,实现货币的加减运算(假设a-b中a的金额始终大于等于b的金额),

重载输入及输出,实现货币的输入,输出。

读入最初的货币值,对其不断进行加、减操作,输出结果。

可根据需要,为CMoney类添加构造函数或其它成员函数。


二、输入与输出

1.输入

测试次数

每组测试数据格式如下:

第一行,初始货币:元 角 分

第二行开始,每行一个操作:add 元 角 分(加)、minus 元 角 分(减)、stop(结束)

2
0 0 0
add 48 9 0
minus 0 5 3
add 18 6 8
add 12 1 2
stop
10 2 5
add 5 8 0
add 32 1 2
minus 10 5 9
minus 37 5 8
stop

2.输出

对每组测试数据,输出操作终止后的货币金额,具体输出格式见样例。

7917000

三、参考代码

#include<iostream>
using namespace std;
class mon
{
	int yuan, jiao, fen;
public:
	mon() { yuan = 0; jiao = 0; fen = 0; }
	mon(int y,int j,int f):yuan(y),jiao(j),fen(f){}
	friend ostream& operator <<(ostream& cout, mon& p)
	{
		cout << p.yuan << "元" << p.jiao << "角" << p.fen << "分" << endl;
		return cout;
	}
	friend istream& operator >>(istream& cin, mon& p)
	{
		cin >> p.yuan >> p.jiao >> p.fen;
		return cin;
	}
	friend mon operator+ (mon& p1, mon& p2)
	{
		
		int p1fen = p1.fen + 10 * p1.jiao + 100 * p1.yuan;
		int p2fen = p2.fen + 10 * p2.jiao + 100 * p2.yuan;
		int sum = p1fen + p2fen;
		int f = sum % 10;
		int j = sum / 10 % 10;
		int y = sum / 100;
		mon temp(y, j, f);
		return temp;
	}
	friend mon operator- (mon& p1, mon& p2)
	{

		int p1fen = p1.fen + 10 * p1.jiao + 100 * p1.yuan;
		int p2fen = p2.fen + 10 * p2.jiao + 100 * p2.yuan;
		int sum = p1fen - p2fen;
		int f = sum % 10;
		int j = sum / 10 % 10;
		int y = sum / 100;
		mon temp(y, j, f);
		return temp;
	}
};
int main()
{
	int sum;
	int y, j, f;
	string caozuo;
	cin >> sum;
	
	
	while (sum--) {
		mon c1;
		cin >> c1;
		cin >> caozuo;
		mon c2;
		while (caozuo != "stop")
		{
			if (caozuo == "add")
			{
				cin >> c2;
				c1 = c1 + c2;
			}
			if (caozuo == "minus")
			{
				cin >> c2;
				c1 = c1 - c2;
			}
			cin >> caozuo;
		}
		cout << c1;
		
	}
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z1Jxxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值