偶尔突发奇想,写了一个将阿拉伯数字转换为中文数字近似值的程序:
#include #include #include #include #include #include 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;i0) 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 大约等于 一百二十四十兆兆兆 兆