问题:编写控制台程序,用户输入阿拉伯数字的金额,系统自动转换成中文大写金额的形式输出。
例如:输入458796;
转换为:肆拾伍万捌仟柒佰玖拾陆。
问题分析:既然是数字大小写转换,那么我们这样考虑问题:先最高考虑到千万级别。那么我们把这个数抽象成由个、十、百、千、万这么几个位组成。其中个、十、百、千都是一个数一位,而万就有可能是几个万,几十个万,几百几千个万。那么我们不妨把这个数拆成两部分,一部分是“万”,一部分是千百十个。那么对于过万的数,我们就可以先用处理千以下的方法先处理“万”的部分,然后再处理千以下的部分。
本实验代码如下:
处理千位数的函数:

void qianwei_zhuanhuan(int x)      //千位上有数的转换
{int n;n = x / 1000;switch (n){case 1:cout << "壹仟"; break;case 2:cout << "贰仟"; break;case 3:cout << "叁仟"; break;case 4:cout << "肆仟"; break;case 5:cout << "伍仟"; break;case 6:cout << "陆仟"; break;case 7:cout << "柒仟"; break;case 8:cout << "捌仟"; break;case 9:cout << "玖千"; break;}
}

处理百位的函数:

void baiwei_zhuanhuan(int x)       //百位上有数的转换
{int n;n = x / 100;switch (n){case 1:cout << "壹佰"; break;case 2:cout << "贰佰"; break;case 3:cout << "叁佰"; break;case 4:cout << "肆佰"; break;case 5:cout << "伍佰"; break;case 6:cout << "陆佰"; break;case 7:cout << "柒佰"; break;case 8:cout << "捌佰"; break;case 9:cout << "玖佰"; break;default:break;}
}

处理十位数的函数:

void shiwei_zhuanhuan(int x)       //十位上有数的转换
{int n;n = x / 10;switch (n){case 1:cout << "壹拾"; break;case 2:cout << "贰拾"; break;case 3:cout << "叁拾"; break;case 4:cout << "肆拾"; break;case 5:cout << "伍拾"; break;case 6:cout << "陆拾"; break;case 7:cout << "柒拾"; break;case 8:cout << "捌拾"; break;case 9:cout << "玖拾"; break;default:break;}
}

处理个位数的函数:

void gewei_zhuanhuan(int x)       //个位数转换
{int n;n = x / 1;switch (n){case 1:cout << "壹"; break;case 2:cout << "贰"; break;case 3:cout << "叁"; break;case 4:cout << "肆"; break;case 5:cout << "伍"; break;case 6:cout << "陆"; break;case 7:cout << "柒"; break;case 8:cout << "捌"; break;case 9:cout << "玖"; break;}
}

主函数相关操作如下:

int main()
{int x, x1, x2;cout << "请输入金额(不过亿):";cin >> x;cout << "您的金额为:" << endl;if (x >= 10000)    //以下是对“万”以上的处理{x1 = x / 10000;  //看看有多少个“万”if (x1 >= 1000)   //超过一千万的情况{qianwei_zhuanhuan(x1);int c;c = x1 % 1000;if (c >= 100){baiwei_zhuanhuan(c);int c1 = c % 100;if (c1 > 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}}else{if (c >= 10 && c < 100){cout << "零";shiwei_zhuanhuan(c);int c2 = c % 10;gewei_zhuanhuan(c2);}if (c >= 1 && c < 10){cout << "零";gewei_zhuanhuan(c);}}}else   //没超过一千万的情况{if (x1 > 100){baiwei_zhuanhuan(x1);int c = x1 % 100;if (c >= 10 && c < 100){shiwei_zhuanhuan(c);int c1 = c % 10;gewei_zhuanhuan(c1);}else{gewei_zhuanhuan(c);}}else{if (x1 >= 10 && x1 < 100){shiwei_zhuanhuan(x1);int c = x1 % 10;gewei_zhuanhuan(c);}if (x1 >= 1 && x1 < 10)gewei_zhuanhuan(x1);}}cout << "万";   //“万”以上处理完毕,输出“万”字x2 = x % 10000; //接下来处理千百十个位if (x2 >= 1000){qianwei_zhuanhuan(x2);int c;c = x2 % 1000;if (c >= 100){baiwei_zhuanhuan(c);int c1 = c % 100;if (c1 > 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}}else{if (c >= 10 && c < 100){cout << "零";shiwei_zhuanhuan(c);int c2 = c % 10;gewei_zhuanhuan(c2);}if (c >= 1 && c < 10){cout << "零";gewei_zhuanhuan(c);}}}else{if (x2 >= 100){cout << "零";baiwei_zhuanhuan(x2);int c1 = x2 % 100;if (c1 >= 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}else{cout << "零";gewei_zhuanhuan(c1);}}else{if (x2 >= 10 && x2 < 100){cout << "零";shiwei_zhuanhuan(x2);int c2 = x2 % 10;gewei_zhuanhuan(c2);}if (x2 >= 1 && x2 < 10){cout << "零";gewei_zhuanhuan(x2);}}}}else   //没过万的情况{if (x >= 1000){qianwei_zhuanhuan(x);int c;c = x % 1000;if (c >= 100){baiwei_zhuanhuan(c);int c1 = c % 100;if (c1 > 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}}else{if (c >= 10 && c < 100){cout << "零";shiwei_zhuanhuan(c);int c2 = c % 10;gewei_zhuanhuan(c2);}if (c >= 1 && c < 10){cout << "零";gewei_zhuanhuan(c);}}}else{if (x >= 100){baiwei_zhuanhuan(x);int c1 = x % 100;if (c1 > 10){shiwei_zhuanhuan(c1);int c2 = c1 % 10;gewei_zhuanhuan(c2);}}else{if (x >= 10 && x < 100){shiwei_zhuanhuan(x);int c2 = x % 10;gewei_zhuanhuan(c2);}if (x >= 1 && x < 10){gewei_zhuanhuan(x);}}}}
}

以上代码只能处理不过亿的数字,如果数字过大超过亿,按照前面的分析方式拓展延伸,万变不离其宗。
具体实现过程及代码的改进请访问:http://www.zengkaiquan.com/index.php/2019/11/29/c实验%ef%bc%9a阿拉伯数字转换为中文大写/

将阿拉伯数字转换成中文大写金额的形式相关推荐

  1. C#实现的【阿拉伯数字转换成中文大写金额】

    //作者:fanz2000 //Email:fanz2000@sohu.com /// /// 转换数字金额主函数(包括小数) /// /// 数字字符串 /// 转换成中文大写后的字符串或者出错信息 ...

  2. java练习:金额转换,阿拉伯数字转换成中文传统形式

    需求:金额转换,阿拉伯数字转换成中文传统形式   ,例如 101000001010   转为     壹仟零壹拾亿零壹仟零壹拾圆整 最终版: import java.util.Scanner; pub ...

  3. 【C语言】小写数字金额转换成中文大写金额

    1. 更新说明 添加与 "零圆整" 等价的预先判断 (0 / 0. / 0.0 / 0.00 / . / .0 / .00) 修复了因使用函数 strdup 导致的内存泄漏 除去输 ...

  4. c#金额转换成中文大写金额

    c#金额转换成中文大写金额 原文:c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary>/// 金额转换成中文大写金额/// &l ...

  5. js将阿拉伯数字转换成中文的大写数字

    js将阿拉伯数字转换成中文的大写数字 export const numberToChinese = (num) => {var AA = new Array("零", &qu ...

  6. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  7. 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字

    一.序言:   工具封装第四弹,阿拉伯数字 ===> 转换成 ===> 中文大写数字,喜欢就赶紧收藏+点赞+关注吧 !!! ---- Nick.Peng 二.实现代码如下: #!/usr/ ...

  8. 将一组阿拉伯数字转换成中文大写数字

    题目大概:  将一组阿拉伯数字转换成中文大写数字  52306 ==> 伍万贰千叁百零陆 我实现了将文件中的一组数字(每行为一个数)  形如: Java代码   25364 466932300 ...

  9. 金额转换成中文大写金额

    留个纪念.这个类主要用于将数字金额转换成中文大写金额,提供了三个方法: toDX(double val) toDX(String val) toDX(int val) 使用方法 AmtInWords. ...

最新文章

  1. creo JAVA_Creo 4.0二次开发工具框架搭建
  2. iOS端实现React Native差异化增量更新
  3. python画曲线图例-Python数据可视化之Matplotlib(折线图)
  4. 【Git】Git 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )
  5. LeetCode算法题8:递归和回溯1
  6. hibernate教程--抓取策略详解
  7. 简述Hadoop和Spark的异同
  8. C宏定义中的##,#,#@用法介绍
  9. mysql 磁盘利用率100_磁盘空间使用率100%的故障处理
  10. Angularjs总结(五)指令运用及常用控件的赋值操作
  11. 前端学习(3145):react-hello-react之getStateFromProps
  12. 【转】2.3SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)
  13. 【Kettle】crt中运行spoon.sh报错
  14. java语言乘号_java的编码样式、运算符运算对象
  15. 【车间调度】基于matlab差分进化算法求解作业车间调度问题【含Matlab源码 1743期】
  16. ecshop 添加会员头像功能
  17. 怎么获取api key?
  18. mysql:查询排名
  19. 最长递增子序列问题(你真的会了吗)
  20. 网约车中场战事:曹操出行融资数十亿,谁在觊觎龙头位置?

热门文章

  1. Scala中 class和case class的区别
  2. Delphi 版的IIF函数
  3. 小白兔写话_小白兔看图写话
  4. limits.conf 配置不生效问题排查
  5. C/C++编程学习 - 第9周 ③ 整理药名
  6. AVA Actions Dataset 详解
  7. 【ACO三维路径规划】蚁群算法无人机三维路径规划【含Matlab源码 1278期】
  8. 前端知识点整理(待续)
  9. 4.测试基础(软件测试阶段的划分)
  10. android程序字体大小,Android如何动态调整应用字体大小详解