看到大家在讨论阿拉伯数字-》汉字数字的转换,拿出我以前写的C版本,当时写输入法的时候顺便写的,完成数字输入到汉字输出的转变

思路:倒着转换(由低位到高位),顺便去“零”,然后倒过来

//注意是Unicode版本的,根据阿拉伯数字构造汉字数字读法,去年用C写输入法的时候顺便写的
void Num2HZNum(int index, LPTSTR str, LPCTSTR strNum)
{
  TCHAR line[MAX_PHRASE_LEN] = _T("");
  TCHAR chNums[2][10][2] =
    {
      {
        _T("零"),   _T("一"), _T("二"), _T("三"), _T("四")
        , _T("五"), _T("六"), _T("七"), _T("八"), _T("九")
      },
      {
        _T("零"), _T("壹"), _T("贰"), _T("叁"), _T("肆")
        , _T("伍"), _T("陆"), _T("柒"), _T("捌"), _T("玖")
      }
    };

TCHAR hz[2][MAX_NUM2ZH_LEN][2] =
    {
      {
        _T(""),   _T("十"), _T("百"), _T("千"),
        _T("万"), _T("十"), _T("百"), _T("千"),
        _T("亿"), _T("十"), _T("百"), _T("千"),
        _T("万"), _T("十")
      },
      {
        _T(""),   _T("拾"), _T("佰"), _T("仟"),
        _T("万"), _T("拾"), _T("佰"), _T("仟"),
        _T("亿"), _T("拾"), _T("佰"), _T("仟"),
        _T("万"), _T("拾")
      }
    };

int i;
  int pos = 0;
  TCHAR temp[MAX_PHRASE_LEN];
  for (i=_tcslen(strNum)-1; i>=0; i--)
  {
    temp[_tcslen(strNum)-1-i] = strNum[i];
  }

*line = _T('\0');
  for (i=0; i<(int)_tcslen(strNum); i++)
  {
    if (temp[i] != _T('0') || hz[index][i][0] == _T('万') || hz[index][i][0] == _T('亿'))
      _tcscat(line, hz[index][i]);

if (temp[i] == _T('0')
      && (i == 0
        || temp[i-1] == _T('0')
        || line[_tcslen(line) - 1] == _T('万')
        || line[_tcslen(line) - 1] == _T('亿')
        )
      )
      continue;

_tcscat(line, chNums[index][temp[i] - _T('0')]);
  }

for (i=0; i<(int)_tcslen(line); i++)
  {
    str[i] = line[_tcslen(line) - 1 -i];
  }
  str[i] = _T('\0');
}

其他讨论参见:

http://www.cnblogs.com/farrio/archive/2005/03/30/128582.html?Pending=true#Post
http://www.cnblogs.com/laser_lu/archive/2005/03/30/128464.html
http://www.cnblogs.com/zane/archive/2005/03/30/128509.html?Pending=true#Post

转载于:https://www.cnblogs.com/realfun/archive/2005/03/30/128777.html

看到大家在讨论阿拉伯数字-》汉字数字的转换,拿出我去年写的C版本相关推荐

  1. JAVA 中文汉字转换阿拉伯数字(最终版,已修复了亿及亿以下的汉数字的转换,超过后的数字,暂时不支持)

    嘎嘎嘎,大写的尴尬,非常感谢Eliauk_cc-May反馈的bug,代码重新修改啦,鉴于之前过于复杂的逻辑,本次进行了简化 //判断是否为中文数字字符public static List<Str ...

  2. 批量将文件中汉字数字替换为阿拉伯数字

    批量将文件中汉字数字替换为阿拉伯数字 我们有时候遇到很多是中文名文件名, 比如 第一章.第二十九章等文件,排序的时候无法按照顺序排列 而将其一一替换为阿拉伯数字很麻烦, 我花了一晚上弄出的代码如下保存 ...

  3. python123数字转换_Python将汉字数字转换成阿拉伯数字的方法

    用Python将汉字数字转换成阿拉伯数字的方法.汉字数字就是我们的大写数字:零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾,这种只有在会计人员才会常用的数字. Python把用汉字表示的数字转换为阿拉伯数 ...

  4. python 汉字数字转阿拉伯数字

    主要用于大写数字转阿拉伯数字 CN_NUM = {'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九' ...

  5. 《读九章算术学Python》如何用Python编程实现阿拉伯数字转换成汉字数字?

    第6章 数量转换 Python编程基础 字典 字符串操作 if-elif-else语句 递归 前面的输入和输出都是阿拉伯数字,这一章我们来看一下如何实现阿拉伯数字和汉字数字之间的相互转换. 6.1 阿 ...

  6. Python将汉字数字转换成阿拉伯数字的方法

    Python将汉字数字转换成阿拉伯数字的方法 - 玩蛇网 http://www.iplaypy.com/code/base/b2600.html 用Python语言来为不同数字之间做转换之前就有介绍过 ...

  7. js完美转换阿拉伯数字为数字大写

    js将阿拉伯数组转换为中文数字 文章摘自:  js完美转换阿拉伯数字为数字大写(原创) 直接上代码: //阿拉伯数字转换为简写汉字 function Arabia_To_SimplifiedChine ...

  8. 中文数字文字转换成阿拉伯数字

    在参考率网络上的部分代码后,写了一个简单的转换方法,原本是想用在抓取电子书中的标题使用的,比如,"第一千三百零二章"转换成1302 1 /// <summary> 2 ...

  9. 把一个用阿拉伯数字表示的正整数转换成汉字大写表示

    一个面试题,考查面试者的逻辑思维能力,考虑的问题很多,把一个用阿拉伯数字表示的正整数转换成汉字大写表示 这里代码没有考虑非法输入,但如果是面试.最好跟面试官交流清楚,展现你考虑问题全面,写出的代码鲁棒 ...

  10. C#中汉字数字、汉字拼音的转换

    1.汉字数字相互转换 public static string ChineseTONumber(string chineseStr) { string numStr = "012345678 ...

最新文章

  1. 如何用RNN生成莎士比亚风格的句子?(文末赠书)
  2. Socket编程(C语言实现)—— Nginx支持Socket转发
  3. MySQL服务器修改主机名后问题解决
  4. 为什么所有的React应用开头都有一行meta charset=utf-8语句?
  5. 美国返还中国文物,阿里谣言粉碎机获奖,教育部规范研究生培养,腾讯严打微信跑分活动,推动降低港澳漫游费,这就是今天的大新闻。...
  6. 搜狗输入法电脑版_搜狗输入法Mac版更新:找不到哪里下载?看这里
  7. prestashop后台如何删除订单
  8. 【web组件库系列】纯CSS实现典型网页数据分页器
  9. 参与到开源项目中乐趣
  10. luogu2014 选课
  11. 手机验证码免费10条\java、C#、html....
  12. for循环中包含跨服务查询优化
  13. 中国厨房垃圾处理器(厨余粉碎机)行业深度调研与投资前景分析报告2022-2028年版
  14. 数字电路 逻辑函数的化简之 公式化简法
  15. HTML + CSS 实现购物商城小米(提供源码下载)
  16. 4.3、Android Studio突破64K方法限制
  17. 微软黑科技如何加速游戏开发,读这篇就够了
  18. 厦门情侣必去浪漫的餐厅
  19. python侯先生爬楼梯问题_python的算法
  20. 程序猿和测试媛——组合在一起的原因

热门文章

  1. 计算机组成原理完整学习笔记(四):输入输出系统
  2. php语言 电商网站,如何做多国家,多语言电商网站的设计
  3. SSRF 服务器端请求伪造
  4. linux socket 程序被ctrl+c或者异常终止,提示:bind error:Address already in use,解决办法...
  5. 查询字符串中子字符串所有出现位置
  6. kafka 的经典教程
  7. Python垃圾回收机制:gc模块
  8. C语言数据类型大小分析(基于VC2005编译器)
  9. 知乎cookies的介绍_SameSite小识
  10. MyCat分片规则之枚举分片