说明

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

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

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

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

比如: 输入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<<"叁";if(temp==4) cout<<"肆";if(temp==5) cout<<"伍";if(temp==6) cout<<"陆";if(temp==7) cout<<"柒";if(temp==8) cout<<"捌";if(temp==9) cout<<"玖";if(temp==0) cout<<"拾";
}
void c_out(int a,int b,int c,int d){if(a!=0 && b ==0 &&c==0 &&d ==0){trans(a);cout<<"仟";}else  if(a!=0 && b==0 && c==0 && d!=0){trans(a);cout<<"千";cout<<"零";trans(d);}else if(a!=0 && b!=0 &&c==0 &&d==0){trans(a);cout<<"仟";trans(b);cout<<"佰";}else if(a==0 && b!=0){trans(b);cout<<"佰";if(c==0)trans(c);else{trans(c);cout<<"拾";}if(d==0){}else{trans(d);}}else if(a==0 && b==0 && c!=0) { trans(c);cout<<"拾";if(d==0){}else{trans(d);}}else if(a==0 && b==0 && c==0) trans(d);else{trans(a);cout<<"仟";if(b==0)trans(b);else{trans(b);cout<<"佰";}if(c==0)trans(c);else{trans(c);cout<<"拾";}if(d==0){}else{trans(d);}}
}
void separate(int n){int d = n%10;int c = n/10%10;int b = n/100%10;int a = n/1000;c_out(a,b,c,d);
}
int main()
{int n,count=0;cin>>n;while(n){num[++count] = n%10;n/=10;}int left  = count%4;if(left!=0){for(int i=count+1;i<=count+4-left;i++){num[i] = 0;}i = count+4-left;c_out(num[i],num[i-1],num[i-2],num[i-3]);for(i=count-left;i>0;i-=4){if(i%8==0) cout<<"亿";if(i%8==4) cout<<"万";c_out(num[i],num[i-1],num[i-2],num[i-3]);}}if(left==0){int i = count;c_out(num[i],num[i-1],num[i-2],num[i-3]);for(i=count-left-4;i>0;i-=4){if(i%8==0) cout<<"亿";if(i%8==4) cout<<"万";c_out(num[i],num[i-1],num[i-2],num[i-3]);}}
}

运行截图

此程序的优点与问题

优点:
1)能实现%99的票据内容转换,日常应用没有问题
2)简单方便

问题:
1)我用的是Int型存储银行金额,所以位数不能超过int型的位数
2)有些金额中间空一大串0没有输出最正统的中文格式,但是还是对的,比如 10000 0001 会输出 壹亿零万壹

综上所述,此程序还是很好的,放心使用

【经典算法】:银行金额大写转换相关推荐

  1. java银行金额大写转换_Java版 数字金额大写转换

    package com.utils; public class Change { public static void main(String agrs[]) { //整数 System.out.pr ...

  2. Python实现银行金额大写汉字转换【简单易懂,代码可以直接运行】

    Python实现银行金额大写汉字转换[简单易懂] 业务需求: •银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字. •目前只需完成1~5位整数转换即可. 关键技术分 ...

  3. Python实现银行金额大写汉字转换【简单易懂】!!

    Python实现银行金额大写汉字转换[简单易懂] 业务需求: •银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字. •目前只需完成1~5位整数转换即可. 关键技术分 ...

  4. Python银行金额大写汉字转换

    Python银行金额大写汉字转换 业务需求: 银行电子支票业务在金额部分需要使用大写的汉字,因此需要将用户录入的数字信息转变为汉字. • 目前只需完成1~5位整数转换即可. 示例: 输入金额:> ...

  5. 算法的深层次知识是数学,这些常用的互联网经典算法应用案例,你知道几个?

    前言 在文章初始,我们来思考一个很有意思的问题:一滴水从很高很高的空中自由落体下来,会不会砸伤人? 能够砸伤人则需要水滴具有的动能,即公式(1/2)mv^2,而水滴的质量是一定的,需要达到很高的速度时 ...

  6. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  7. 上手机器学习,从搞懂这十大经典算法开始

    上手机器学习,从搞懂这十大经典算法开始 翻译 | AI科技大本营(rgznai100) 参与 | 林椿眄 编辑 | 波波,Donna 在机器学习领域,"没有免费的午餐"是一个不变的 ...

  8. java经典50题_JAVA经典算法50题(3)【面试+工作】

    原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...

  9. 数据挖掘十大经典算法之——C4.5 算法

    数据挖掘十大经典算法系列,点击链接直接跳转: 数据挖掘简介及十大经典算法(大纲索引) 1. 数据挖掘十大经典算法之--C4.5 算法 2. 数据挖掘十大经典算法之--K-Means 算法 3. 数据挖 ...

最新文章

  1. Android GraphicBuffer
  2. C#序列化与反序列化以及深拷贝浅拷贝方法
  3. 这不关我的事,别烦我!
  4. 如何使用SQL Server Microsoft Mobile Publisher创建移动仪表盘?
  5. 面试题--------6、String常用的方法
  6. 纽微特纪事:傅某为何要内斗吾?各位应该注意什么?
  7. 51单片机8位流水灯左移实现(比较简短)
  8. Java导出Excel数据错乱
  9. 中国互联网寒冬的根本原因是什么?
  10. 华为手机如何安装Goole play教程及安装包
  11. Vue3.x的安装和初始化
  12. js获取系统当前时间,实现钟表功能
  13. html桌面壁纸教程,Photoshop设计简易版的电脑桌面壁纸教程
  14. 各大IT公司校园招聘程序猿笔试、面试题集锦
  15. 设计模式 -- 状态模式
  16. 【Python】编写函数计算圆的面积
  17. status(状态);
  18. ArcGIS Pro3.0.2保姆级安装教程(附安装包)
  19. 2019-2020年网络攻击事件及防范网络攻击小技巧
  20. word2013删除下载的模板

热门文章

  1. 巴比特 | 元宇宙每日必读:用户流失,滞销频现,平台在合规和利润面前该如何平衡?...
  2. 学生成绩排名预测(DC)
  3. Android之设备加密
  4. [SRM603] WinterAndSnowmen
  5. 合伙企业对外债务如何承担
  6. 计算机视觉笔记及资料整理(含图像分割、目标检测小方向学习)
  7. 怎么读取照片上的文字?清描:一键提取,批量识别
  8. 异常恶毒的十二星座性格分析(转)
  9. 基于FPGA的CYUSB3014双向通信实验
  10. 3D游戏角色模型的简单制作流程