一个将阿拉伯数字转换为中文数字近似读法的程序
2012-12-02 20:56
344 查看
偶尔突发奇想,写了一个将阿拉伯数字转换为中文数字近似值的程序:
D:\Work\SRC\c_src>cnn 124467899868068698758654675785597868968976756485967
124467899868068698758654675785597868968976756485967 大约等于 一百二十四十兆兆兆
兆
#include <stdlib.h> #include <stdio.h> #include <limits.h> #include <string.h> #include <stdbool.h> #include <windows.h> const char *ChineseNum[] = {"零","一","二","三","四",\ "五","六","七","八","九","十"}; const char *ChineseUnit[] = \ {"千","百","十","万","亿","兆"}; bool GetPreFix(const char *src,char *back) { if(!src || !back) return false; int count = strlen(src)-1,prefixcount = count%4,lastpos=0; for(int i=0;i<prefixcount;++i) { if(!(lastpos==0 && (int)src[i]-0x30==0)) strcat(back,ChineseNum[(int)src[i]-0x30]); if((int)src[i]-0x30!=0) strcat(back,ChineseUnit[3-prefixcount+i]); lastpos = (int)src[i]-0x30; } if((int)src[prefixcount]-0x30!=0) strcat(back,ChineseNum[(int)src[prefixcount]-0x30]); return true; } bool GetPostFix(const char *src,char *back) { if(!src || !back) return false; int count = strlen(src)-1,wcount = count/4; int zcount = wcount / 3,zlastcount=wcount % 3; switch(wcount) { case 0: break; case 1:case 2:case 3: strcpy(back,ChineseUnit[wcount+2]); break; default: strcpy(back,ChineseUnit[zlastcount+2]); while(zcount-->0) strcat(back,ChineseUnit[5]); break; } return true; } void ShowChineseNearNum(const char *src) { if(!src) { printf("[%s]err : src == NULL\n",__func__); return; } char backpre[] = {[128]=0}; char backpost[] = {[128]=0}; GetPreFix(src,backpre); GetPostFix(src,backpost); printf("%s 大约等于 %s%s\n",src,backpre,backpost); } int main(int argc,char *argv[]) { if(argc != 2) { printf("usage : %s number\n",argv[0]);exit(1); } ShowChineseNearNum(argv[1]); return 0; }
D:\Work\SRC\c_src>cnn 124467899868068698758654675785597868968976756485967
124467899868068698758654675785597868968976756485967 大约等于 一百二十四十兆兆兆
兆
相关文章推荐
- 一个将阿拉伯数字转换为中文数字近似读法的程序
- 一个将阿拉伯数字转换为中文数字近似读法的程序
- 一个将阿拉伯数字转换成中文大写的算法[C#]
- 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
- java 实验七 之 阿拉伯整数转换为中文大写数字(注意读法)
- 一个中文数字转换阿拉伯数字的脚本
- 一个中文数字转换阿拉伯数字的脚本
- 一个将阿拉伯数字转换成中文大写的最简单算法
- 一个将阿拉伯数字转换成中文大写的好算法(C#)
- 一个将阿拉伯数字转换成中文大写的好算法【原创】(C#)
- 阿拉伯数字转换成中文读法
- 阿拉伯数字小写金额转换成中文大写金额C程序说明
- 一个将阿拉伯数字转换成中文大写地好算法
- 把一个阿拉伯数字转换成中文数字的算法
- 一个比较简单的,只做了正数,一万位以内的,阿拉伯数字转换成大写数字的程序
- 编了一个简单的把阿拉伯数字转化成中文表示的程序,很粗糙,欢迎大家优化!!!
- 把阿拉伯数字转换为中文读法
- 一个将阿拉伯数字转换成中文大写的最简单算法
- python中将阿拉伯数字转换成中文的实现代码