【经典算法】:银行金额大写转换

这篇博客介绍了如何将银行票据上的数字转换为中文金额,如输入31655427显示为‘叁仟壹佰陆拾伍万伍仟肆佰二拾柒’。通过4位数的输出函数c_out()实现,处理特殊数字情况,并讨论了程序的优点和局限性,如位数限制和零的处理。
摘要由CSDN通过智能技术生成

说明

//你很可能看不懂我写的什么,但是代码可以直接用,不用谢我

这篇文章的起因是我想写一个编译原理的工具,后来我顺便想到了字符对应,于是我脑洞大开,就想到了这个银行大写金额转换的工具。

思路跟我的上篇博客那个罗马数字的转换也是一回事

噢,对了,为了防止来到本博客的小伙伴还不知道我讲的什么,我决定讲下这个程序的功能。
实现了 把银行票据上的数字转换为中文金额

比如: 输入31655427 就会显示 叁仟壹佰陆拾伍万伍仟肆佰二拾柒

思路(看看就行,可以自己实现,好懂)

思路如下:

1)不管金额多少位,都是4位后变成万,8位后变成亿,然后按照这个规律不断的进行循环
2)写一个四位数的输出函数c_out(); c_out实现了给出四位数就能把四位数翻译成 中文输出
3)逻辑上的控制,先把金额的各位分离,然后进行逻辑上的控制进行“万”,“亿”等字符的匹配输出

技巧及注意事项:
1)分离金额,假设该数是n,用num数组去接各位

int count=0;
whiel(n){
    num[++count] = n%10;
    n/=10;
}

这样就能达到分离的目的了

2)关于四位数翻译函数
写的时候要注意几点
1000 会输出 壹仟 1001 会输出 壹仟零壹
这种特例要特殊考虑

代码(直接用吧,写的复杂,一下讲不明白)

#include <iostream>
using namespace std;
int num[100];
void trans(int temp){
    if(temp==1) cout<<"壹";
    if(temp==2) cout<<"贰";
    if(temp==3) cout<<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值