• c++ 实现将数字转换为中文数字输出


    实现如下函数:

    void printInChinese(int num);

    这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法。

    例如:

    17 -> 一十七

    120 -> 一百二十

    201 -> 二百零一

    1074 -> 一千零七十四

    65536 -> 六万五千五百三十六

    1010101 -> 一百零一万零一百零一

    提示:请注意‘零’的处理

    扩展:如果需要处理通用简化习惯,你将怎么处理,例如:

    17 -> 十七

    120 -> 一百二

    #include <iostream>
    #include <string>
    using namespace std;
    string unite[5]={"","","","",""}; //单位
    string num[10]={"","","","","","","","","",""}; //一个汉字占两个字节,另外再加一个''字符.
    string func(int a)
    {
        int flag=0,tmp;
        string strtmp;
        string result;
        int atemp=a;     //设定a的临时存储值,防止每次进入循环都进行末尾零的判断
        while(a!=0)
        {
        
            while(atemp%10==0)
            {
                flag++;
                atemp/=10;
                a/=10;
            }
        
            tmp=a%10;
            if(tmp!=0)
            strtmp=num[tmp]+unite[flag];
            else if(tmp==0)
            strtmp="";
            result=strtmp+result;
            a/=10;
            flag++;
        }
        return result;
    }
    string convert(int a)
    {
        string result,temp;
        if(a<100000)
        result=func(a);
        else
        {
        temp=func(a/10000);
        result=temp+ ""+ func(a-a/10000*10000);
        }
        return result;
    }
    void main()
    { 
        int num;
        string numstring;
        cout<<"please input the num: ";
        cin>>num;
        numstring=convert(num);
        cout<<"the convert result is: "<<numstring<<endl;
    }

    更多参考:http://hi.baidu.com/luojunlz/item/a86ddcf52723dbd743c36a39

  • 相关阅读:
    课后作业07--二分法查找算法代码
    检索03 -- 二分法查找
    课堂随笔05--冒泡排序
    课后作业 06 -- 小数后几位精确判断并输出
    课后作业 05 -- 输出一段带字母与数字的随机数
    课后作业 04 --DateTime应用,判断多久后生日之类
    检索02--随机数种子的一些概念和理解
    课堂随笔04--关于string类的一些基本操作
    P1174 互素
    P1001 第K极值
  • 原文地址:https://www.cnblogs.com/youxin/p/3282733.html
Copyright © 2020-2023  润新知