题目描述
定义一个人民币类,包括元、角、分三个非负整数属性,操作包括初始化和输出初始化用构造函数实现,接收一个浮点数参数(精度为小数点后两位),并转化为元、角、分,例如输入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;
}
没什么好说的,格式记住就行了