C++人民币输出(输出运算符重载)

题目描述
定义一个人民币类,包括元、角、分三个非负整数属性,操作包括初始化和输出

初始化用构造函数实现,接收一个浮点数参数(精度为小数点后两位),并转化为元、角、分,例如输入1.23元,经过构造函数转为1元、2角、3分

输出函数对元角分进行输出,具体格式看示例

由于OJ编译器对double强制类型转换成int的处理精度有偏差,建议加0.5处理(例如数据1.38,由于误差,在内存中的存储值为1.379999)

可以用全局函数重载法(课本介绍的),或者友元方法,两种方法来尝试实现

输入
第一行输入t表示有t个实例

第二行起,输入t个正浮点数,带两位小数,每个数值表示以元为单位的人民币金额

输出
每行输出把浮点数的人民币金额,转化为元角分的整数格式,具体看输出

样例输入
2
2.45
1.38
样例输出
yuan=2 jiao=4 fen=5
yuan=1 jiao=3 fen=8

#include<iostream>
#include <cstring>
using namespace std;
class Money {
	private:
		int yuan;
		int jiao;
		int fen;
	public:
		Money(double m) {
			yuan=(int)m;
			jiao=((int)(m*10))%10;			//浮点数乘10,再强制转换成整型,除10取余
			fen=((int)(m*100))%10;
		}
		friend ostream & operator<<( ostream & os,const Money & m);
};
ostream &operator<<(ostream & os,const Money & m) {
	os<<"yuan="<<m.yuan<<" jiao="<<m.jiao<<" fen="<<m.fen<<endl;
	return os;
}
int main() {
	int t;
	double m;
	cin>>t;
	while(t--) {
		cin>>m;
		Money a(m);
		cout<<a;
	}
}

输出运算符重载

ostream &operator<<(ostream & os,const Money & m) {
	os<<"yuan="<<m.yuan<<" jiao="<<m.jiao<<" fen="<<m.fen<<endl;
	return os;
}

没什么好说的,格式记住就行了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值