PAT (Advanced Level) Practice 1082 Read Number in Chinese (25 分)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nightmare_ak/article/details/84502025

有点变态的模拟啊- =

#include<cstdio>
#include<cstring>
using namespace std;

const int N=20+5;

char ss[N];

char name[][10]={"",""," Shi"," Bai"," Qian"," Wan"," Shi"," Bai"," Qian"," Yi"};
char num[][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

int main()
{
    scanf("%s",ss);
    int len=strlen(ss);
    int i=0;
    while(i<len&&ss[i]=='0') i++;
    if(i==len) printf("ling");
    else
    {
        for(int j=0;i<len;i++)
        {
            if(ss[i]=='-') j++,printf("Fu");
            else if(ss[i]!='0')
            {
                if(j) printf(" ");
                printf("%s%s",num[ss[i]-'0'],name[len-i]);
                j++;
            }
            else
            {
                int k=i;
                while(k<len&&ss[k]=='0') k++;
                if(k!=len)
                {
                    if(j) printf(" ");
                    if(len-i>=5&&len-k<5) printf("Wan ");
                    printf("ling");
                    j++;
                }
                else
                {
                    if(len-i>=5&&len-k<5)
                    {
                        if(j) printf(" ");
                        printf("Wan");
                        j++;
                    }
                }
                i=k-1;
            }
        }
    }
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Nightmare_ak/article/details/84502025