1082. Read Number in Chinese (25)

本文介绍了一个C++程序,该程序可以将输入的数字转换成对应的汉字金额表示,并且能够处理带有负号的情况。通过使用数组来映射数字到汉字,程序能够适配不同级别的单位,如万和亿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<queue>
using namespace std;

int main()
{

 const  char *str[9]={"","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};
const  char *num[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
     char s[10];
     vector<const char*> v;
     scanf("%s",s);
     int length=strlen(s);
     if(s[0]=='-')
     {
        v.push_back("Fu");
     for(int i=0;i<length;i++)
        s[i]=s[i+1];
        length--;
     }
     else if(s[0]=='0'&&length==1)
     {
      printf("ling\n");
         return 0;
     }

 int flag=0;
 int cnt=0;
     for(int i=0;i<length;i++)
     {
            if(s[i]!='0')
            {   if(cnt>0&&(length-i-1!=4||s[i]!=0 ))
                    v.push_back("ling");
                v.push_back(num[s[i]-'0']);
                cnt=0;
            }

            else if(s[i]=='0')
            {


            cnt++;
            }
            if(cnt>0&&length-i-1==4&&cnt<4&&s[i]=='0')
            v.push_back(str[length-i-1]);
            else if(i!=length-1)
            {
                if(s[i]!='0')
                v.push_back(str[length-i-1]);

            }

     }
     for(int i=0;i<v.size();i++)
     if(i==0)
        printf("%s",v[i]);
   else
    printf(" %s",v[i]);
   printf("\n");

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值