7-23 币值转换 (20 分)

本篇介绍如何将一个不超过9位的人民币数值转换为大写中文格式,使用特定字符代表数字与单位,通过C++代码实现,并考虑中文习惯中的零的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7-23 币值转换 (20 分)

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:
输入在一行中给出一个不超过9位的非负整数。

输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:
813227345
输出样例1:
iYbQdBcScWhQdBeSf
输入样例2:
6900
输出样例2:
gQjB

AC代码

#include <iostream>
using namespace std;
int main() {
	int Mon;
	cin >> Mon;   //不超过9位的数字 因而用int可以处理
	if (!Mon) { cout << "a" << endl; return 0; }
	int Power = 100000000, flag = 0, cnt = 9;	//cnt记录位数
	while (Mon / Power == 0) {
		Mon = Mon % Power;
		Power /= 10;
		cnt--;
	}			//此循环结束得到Mon / Power大于0的结果
	int Mark = 1;
	while (Mon) {
		char Judge = 'a' + Mon / Power;
		if (Judge == 'a' && Mark == 1) {
			Mark = 0;	//用来防止中间连续输出多个0
			if (cnt == 5) cout << 'W';
			cout << Judge;
		}
		if (Mon / Power) {
			cout << Judge;
			Mark = 1;	//解除中间连续多个0
			if (cnt == 9) cout << 'Y';
			else if (cnt == 5) cout << 'W';	  //万及以下时情况的处理
			else if (cnt == 4) cout << 'Q';
			else if (cnt == 3) cout << 'B';
			else if (cnt == 2) cout << 'S';
			else if (cnt == 6) cout << 'S';   //十万及以上时情况的处理
			else if (cnt == 7) cout << 'B';
			else if (cnt == 8) cout << 'Q';
		}
		Mon = Mon % Power;	//舍弃处理完毕的最高位
		Power /= 10;	//减少量级
		cnt--;	//减少位数
	}
	if (cnt > 4 && cnt < 8) cout << 'W';	//在十万及以上时已经后续位数全部为零
	return 0;								//cnt在自减后跳出 在这里自动补万
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值