⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 num_chg.cpp

📁 将输入的阿拉伯数字识别修改成 中文大写输出。支持小数点
💻 CPP
字号:
#include <iostream>
#include <string>
#include <stdlib.h>
#include <math.h>
using namespace std;

string ConvertnumberCaps(long double numberfloat)
{	
	long double numberSum = fabs(numberfloat);
	long int temp_i = (long int)numberSum;  /**//* 整数部分 */
    float temp_f = numberSum - temp_i; /**//* 小数部分 */
    int digit = 0, i, j, k, num_i;
    string number("");
    char num[20], *p;
    char name[][3] = {"点","拾","佰","仟","万","亿"};
    char numchar[][3] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
      if(numberfloat<0.00)  /**//* 判断是否是负数 */
		{
			number+="负";
		}
	ltoa(temp_i, num, 10);  /**//* 整数部分转换成字符串后在处理 */
    p = num;
    digit = strlen(num);            /**//* 整数部分位数 */
    /**//*--------处理整数部分 start--------*/
    for(i = 1; i <= digit; i ++)
    {
        k = (digit - i) % 4;
        if(isdigit(*p))     /**//* 判断是否为十进制数 */
        {
            num_i = *p & 0xF; /**//* 把字符转换成数字,比如 '0'-> 0,'1' -> 1*/
            /**//*--------转换数字开始---------*/
            if(num_i)
            {
                number = number+ numchar[num_i];
            }
            else
            {
                if(k && (*(p + 1) &0xF))
                    number += "零";
            }
            /**//*--------转换数字结束-------*/
            /**//*---------添加计数单位开始----*/
            if(k)
            {
                if(num_i)
                number = number + name[k];
            }
            else
            {
                j = digit - i;
                if(j)
                    number = number + name[j/4 + 3];
                
            }
            /**//*--------添加计数单位结束--------*/
            p++;
        }
        else
        {
            number = "遇到非数字退出!";
            return number;
        }
    }
	          if(temp_f>0.01)
				  number+="点";   /**//* 若还有小数部分,加“点” */
    /**//*--------处理整数部分 End --------*/
    /**//*--------处理小数部分 start--------*/
    if(temp_f > 0.001)
    {
        if(1) number = number + numchar[(int)(temp_f*10)];
        if((int)(temp_f*100)%10) number = number + numchar[(int)(temp_f*100)%10];
    }
    /**//*--------处理小数部分 End--------*/

    return number;
}
int main()
{
    long double x = 33.20;
    cout << "输入数字:";
    cin >> x;
    cout << "翻译后数字为:";
    string number = ConvertnumberCaps(x);
    cout << number <<endl;
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -