前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序填空 人民币运算(输入输出重载)

程序填空 人民币运算(输入输出重载)

作者头像
叶茂林
发布2023-07-30 10:11:12
1480
发布2023-07-30 10:11:12
举报
文章被收录于专栏:叶子的开发者社区

题目描述

定义一个人民币类,包括元、角、分三个非负整数属性

请根据以下类声明与主函数,完成以下类实现填空

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

输入

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

每个实例包含两行输入:

第1行输入一个浮点数,表示以元为单位的人民币金额,例如输入1.23,对应人民币对象为1元2角3分

第2行输入三个整数,表示以元、角、分为参数的人民币金额,例如输入4 5 6,对应人民币对象为4元5角6分

输出

每个实例输出两行:

第1行输出两个人民币金额比较的结果,具体看样例

第2行输出两个人民币金额相加的结果,具体看样例

输入样例1

2 1.23 4 5 6 7.8 6 5 4

输出样例1

1元2角3分 <= 4元5角6分 1元2角3分 + 4元5角6分 = 5元7角9分 7元8角0分 > 6元5角4分 7元8角0分 + 6元5角4分 = 14元3角4分

思路分析

首先来解决一个平常的问题,就是类声明中没有写默认构造函数,只有带参数的构造函数,而主函数中直接定义了没有带参数的类对象,所以需要把默认构造函数和带参数构造函数写成一个缺省的带参数构造函数。

此外就需要记得进位的问题。

AC代码

代码语言:javascript
复制
RMB::RMB(double money=0)
{
	money += 0.005;
	money *= 100;
	yuan = (int)money / 100;
	jiao = (int)money % 100 / 10;
	fen = (int)money % 10;
}
RMB::RMB(int y,int j,int f):yuan(y),jiao(j),fen(f){}
istream& operator >>(istream& in, RMB& rmb)
{
	in >> rmb.yuan >> rmb.jiao >> rmb.fen;
	return in;
}
ostream& operator <<(ostream& out, RMB& rmb)
{
	out << rmb.yuan << "元" << rmb.jiao << "角" << rmb.fen << "分";
	return out;
}
bool RMB:: operator > (RMB& rmb)
{
	if (yuan > rmb.yuan)
		return 1;
	if (yuan < rmb.yuan)
		return 0;
	if (jiao > rmb.jiao)
		return 1;
	if (jiao < rmb.jiao)
		return 0;
	if (fen > rmb.fen)
		return 1;
	return 0;
}
RMB operator +(RMB& a, RMB& b)
{
	RMB c(a.yuan + b.yuan, a.jiao + b.jiao, a.fen + b.fen);
	if (c.fen > 9)
	{
		c.jiao++;
		c.fen = c.fen % 10;
	}
	if (c.jiao > 9)
	{
		c.yuan++;
		c.jiao = c.jiao % 10;
	}
	return c;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档