| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4026 人关注过本帖
标题:求助!如何将阿拉伯数字转化为汉字。
只看楼主 加入收藏
bibi570
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-5-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求助!如何将阿拉伯数字转化为汉字。
如123456 就是十二万三千四百五十六
搜索更多相关主题的帖子: 阿拉伯 汉字 如何 
2016-05-21 15:43
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:20 
大致思路就是将阿拉伯数字对一千万整除,得到千万位数字,再与汉字匹配。然后对一千万取余,取余之后对一百万整除,得到百万位数字,再与汉字匹配……降到万位时加上“万”字。万位以下处理方式也差不多。
2016-05-21 20:58
xiexiejohn
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-21
收藏
得分:0 
//这个可以

//程序把数字转成汉字金额数字

#include <iostream>
#include <string>
using namespace std;
void hz(string);
inline string getnum(string);
inline string getys(int);



int main(void)
{
    string str1="";
    do
    {
        if(str1!="") cout<<"当前输入数字为"<<str1.length()<<endl;
        cout<<"请输入最多13位数字,输入-1结束:";
        cin>>str1;
    }while(str1.length()>13 && str1!="-1");
    if(str1 != "-1") hz(str1);
   
    return 0;
}

string getnum(string c)                //得到数字对应汉字
{   
    string hz1="0零1一2二3三4四5五6六7七8八9九";
    return hz1.substr(hz1.find(c,0)+1,2);
}

string getys(int i)                    //得到数字位数
{
    string hz2="零元十百千万十百千亿十百千万兆";
    return hz2.substr(i+i,2);
}


void hz(string zw)
{
    int i;
    int k=zw.length()-1;        //-1是为了和下面配合zw.substr函数
    string c;                    //保存zw某位数字
   
   
    string viewhz="";
    bool zero=false;            //0标志
    bool wa=false;                //万标志
    bool yi=false;                //亿标志

    for(i=1;i<=zw.length();++i,--k)
    {
        c=zw.substr(k,1);        //从倒数开始截取右边一位数
        if(c=="0")
        {
            if(zero==false)        //为f表示是第一次必须加零,t表示是连续0比如100002中4个0中某个
            {
                zero=true;
                viewhz="零"+viewhz;
            }
        }
        else                    //不是0是其它数字
        {
            zero=false;            //0标志清空
            switch(i)            //判断位数
            {
            case 5:                //万位
                wa=true;break;    //表示(万位不是0的数字)

            case 6:                //十万
            case 7:                //百万
            case 8:                //千万
                if(wa==false)        //如果万位是0(wa如果为T表示万位是数字,否则为0)
                {
                    viewhz="万"+viewhz;
                    wa=true;
                }
                break;
            case 9:
                yi=true;break;            //亿标志
            case 10:                    //十亿
            case 11:                    //百亿
            case 12:                    //千亿
            case 13:                    //万亿
                if(yi==false)        //yi这个标志没被用过
                {
                    viewhz="亿"+viewhz;
                    yi=true;
                }
                break;
            }
            viewhz=getnum(c)+getys(i)+viewhz;    //得到数字对应大写金额+所在的位数
        }
        
    }   
    cout<<viewhz<<endl;
}
2016-05-24 00:07
xiexiejohn
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-4-21
收藏
得分:0 
vb翻译来的
2016-05-24 00:08
快速回复:求助!如何将阿拉伯数字转化为汉字。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014476 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved