# 去掉开头数字_阿拉伯数字转汉字
最近看到一个笔试题,阿拉伯数字和汉字数字的互相转化,网上比较多的是python和java的实现,这里对C++的实现做了整理和改动。
要实现的功能是将正整数转成汉字数字,忽略小数部分(小数部分就是一对一的映射,也比较容易实现)。例如这几个测试用例:
18->十八
180->一百八十
20930->两万零九百三十
129809->十二万九千八百零九
200182190->二亿零一十八万二千一百九十
观察发现与一一对应的不同之处在于,我们用汉字称呼时要加上单位和省略多处零,并且每万位会循环从千开始称呼,例如:
12301230 =>一千二百三十万 一千二百三十
而不是被叫做 一千万二百万三十万 一千二百三十
实现以上功能的完整C++如下(详解见注释)
#include#includeusing namespace std;
string AA[] = { "零" ,"一","二","三","四","五","六","七","八","九","十" };string BB[] = { "","十","百","千","万","十万","百万","千万","亿" };
string NumberToChinese1(int num){ string res = ""; string numstr = to_string(num); /* to_string函数转成字符串,可自动去掉 00123前面的00 */ int k = numstr.length();
for (int i = 0; i { int tmp = numstr[i] - '0';// 得到每位的数字的大小 int bIndex = k - i - 1; // 得到从个位算起的位数个数
// cout</* 先处理该位数是0的情况,如果发现一位数是0,如果是在个位,或者它后面一位也是0,就不添加汉字零 比如10020,读作一万零二十,而不是 一万零零二十零 */if(0==tmp) { // cout<// cout<// cout</* 每万位的汉字计数规则会重复一下,例如12301230 一千二百三十万 一千二百三十,每万位的最低位不加零,但加上一个万级单位 */if (bIndex >= 4 && 0 == bIndex % 4) res = res + BB[bIndex];/* 中间重复的0或者是0个位就跳过加零 */else if (('0' == numstr[i+1] && i-1 ) || i == numstr.length() - 1 )continue;else/* 如果不是以上情况,0对应汉字位置加个零字符 AA[0] */ res = res + AA[tmp];// cout< } else { /* 对于该位数非0,正常添加对应汉字数字 */ res = res + AA[tmp];// cout</* 对于最开头会被称作十几的数字,如果除万后余两位,并且1开头,在从左数第一位的时候删掉十位的汉字一,常读作十几而不是一十几 */if ( k%4 == 2 && numstr[0] == '1' && i==0) { res.erase(0); /* 删掉第0个字符 */ }if (0 == bIndex % 4) /* 对于非零的位置,也要看是否是每万位,是的话要加上"万","亿" */ res = res + BB[bIndex];else { res = res + BB[bIndex % 4]; /* 对每万位以内的数字,每万位以内正常添加“十”,“千”,“百”的单位,即位数取4的余数对应的单位 */ }// cout< } }return res;}int main(){/* int类型在C语言中占4个字bai节,即32个二进制位,-2^31~2^31-1=最大值2147483647 如需扩展的话 可用long long是双精度整数,占用8个字节,范围-1.7*10负308次方~1.7*10的308次方 */int m; while (cin >> m) /* 输入一个 int 型范围内的正整数 m */ {if (0 == m) {cout <"零" <endl; }else {string ChineseStr = ""; ChineseStr = NumberToChinese1(m);cout <endl; } } system("pause");return 0;}
测试结果如下
# 去掉开头数字_阿拉伯数字转汉字相关推荐
- 迅飞语音数字匹配阿拉伯数字或汉字
1. 说明 最近项目需求中集成了迅飞语音听写功能,遇到一个问题:比如说:"一百个商品",返回的文字为大写汉字,而不是"100个商品",项目中需要的是阿拉伯数字, ...
- pdf 模版 汉字和数字_写好汉字和数字,这是最标准的格式!(强烈推荐收藏)...
原标题:写好汉字和数字,这是最标准的格式!(强烈推荐收藏) 都说字如其人,写得一手好字,将会让我们终身受用.为了写好字,孩子就必须从小练起.对于练字这项基础功,家长可不能忽视. 今天中教君就给大家讲讲 ...
- jq 数字转中文数字_阿拉伯数字 转换 中文大写
阿拉伯数字 转换 中文大写 class ToChineseNumber { private $money = ""; private $cnynums = array(" ...
- 阿拉伯数字转换为汉字大写数字
阿拉伯数字转换为汉字大写数字: 首先需要建立两个视图: create view V_HZNumber as SELECT 0 F1,'零' F2,'个' F3 UNION SELECT ...
- python数字转中文_阿拉伯数字转换为中文数字的python实现
#!/usr/bin/python # -*- coding: utf-8 -*- ''' 脚本功能:阿拉伯数字与中文数字转换 输入参数:阿拉伯数字,不带符号 初次编写日期:2018-07-24 说明 ...
- python123数字转换_Python将汉字数字转换成阿拉伯数字的方法
用Python将汉字数字转换成阿拉伯数字的方法.汉字数字就是我们的大写数字:零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾,这种只有在会计人员才会常用的数字. Python把用汉字表示的数字转换为阿拉伯数 ...
- python 汉字数字转阿拉伯数字
主要用于大写数字转阿拉伯数字 CN_NUM = {'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九' ...
- 猜灯谜_全排列板子题(A 村的元宵节灯会上有一迷题: 请猜谜 × 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。 请你用计算机按小明的思路算一下,然后)
题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 × 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字. 请你用计算机按小明的思路算一下,然后提交"请猜 ...
- PostgreSQL 中文(汉字)数字转阿拉伯数字
PostgreSQL 中文(简体.繁体)数字转阿拉伯数字 函数代码 --中文汉字转阿拉伯数字 CREATE OR REPLACE FUNCTION udf_hanzi2digits(input_chi ...
最新文章
- 移动应用开发者应该关注的 Google I/O 两项更新
- 如何用LogQL在几秒内查询TB级的日志
- Intel Realsense D435 composite_frame类 frame类 video_frame类 depth_frame类的关系
- Android之Base64
- P5004-专心OI - 跳房子【dp,矩阵乘法】
- HTML+CSS+JS实现 ❤️ 宇宙星球旋转动画特效❤️
- 李宏毅机器学习——结构化学习(一)
- 拓端tecdat|R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
- 论文阅读笔记|Deep Image Homography Estimation
- 1250_FreeRTOS_QEMU_M3_blinky例程梳理分析
- 如何使用计算机远程关闭手机软件,如何用手机远程控制电脑关机
- hdu2243之AC自动机+矩阵乘法
- 美团外卖开放平台对接经验总结(一)
- 苹果有arkit,android,ARKit来袭:苹果ar支持哪些设备,苹果手机怎么使用ar?
- 深入理解wifi direct
- r语言alasso的系数怎么看_R语言用msgps包做adaptive lasso,系数怎么提取啊?
- mac brew 测速 软件_Mac已到手?从零开始,八步打造一个高效舒适的开发环境
- vanilla_包装Vanilla JavaScript软件包以在React中使用
- java判断输入回车符_Java编程:获取用户是否输入回车符
- GEE(python)使用GPM降水数据进行趋势分析,MK检验等
热门文章
- 二进制安装k8s-部署scheduler
- 工作记录:举步维艰的在线 word 之旅 - tinymce
- Adobe的音频编辑软件Adobe Audition (Au)2023版本下载与安装教程
- java面向对象设计_Java面向对象设计 构造函数设计
- Citespace教程笔记
- 华为手机鸿蒙系统桌面便签怎么设置?
- 码率自适应技术 (Adaptive Bitrate Streaming,ABR)
- AD导出3D模型的各种方法——AD转SW(贴图形式)
- 【Linux】循序渐进学运维-服务篇-rsync配置文件
- 【ATS】苹果传输数据ATS认证究竟是什么?