数的读法

读一个2,000,000,000以内的数,一个小菜鸡吭哧吭哧的做法,but我感觉是有问题的,因为后来是针对测试用例一步步修改的~谁知道TC全不全呢!

#include<iostream>
#include<string.h>
using namespace std;

string a[10] = { "yi","er","san","si","wu","liu","qi","ba","jiu", "shi"};
int flag = 0;

void read(int num) {
    int qian = num / 1000;
    int bai=(num/100)%10;
    int shi = (num / 10) % 10;
    int ge = num % 10;

    if (qian > 0) {
        cout<< a[qian - 1];
        printf(" qian ");
    }
    else if (qian == 0) {
        if (flag == 0) {
            flag = 1;
            printf("ling ");
        }    
    }

    if (bai > 0) {
        cout<<a[bai - 1];
        printf(" bai ");
    }
    else if (bai == 0) {
        if (flag == 0) {
            flag = 1;
            printf("ling ");
        }
    }

    if (shi > 0) {
        if (shi != 1) {
            cout<< a[shi - 1];
            printf(" shi ");
        }
        else if (shi == 1) {
            printf("shi ");
        }
    }
    else if (shi == 0) {
        if (flag == 0) {
            flag = 1;
            printf("ling ");
        }
    }
    if (ge > 0) {
            cout<<a[ge- 1];
            printf(" ");
    }
}

int main() {
    int num;
    scanf("%d", &num);

    int yi = num / 100000000;
    if ( yi> 0) {
        if (yi ==20) {
            printf("er shi");
        }
        else if (yi >= 10) {
            printf("shi ");
            if (yi > 10) {
                cout<< a[yi % 10 - 1];
            }
        }
        printf(" yi ");
    }

    int wan = (num / 10000) % 10000;
    if (wan > 0) {
        if (yi == 0)
            flag = 1;
        read(wan);
        printf("wan ");
    }
    else if (yi != 0 && wan == 0 && flag == 0) {
        printf("ling ");
    }

    int qian = num % 10000;
    if (qian > 0) {
        if (wan == 0 && yi == 0) {
                flag = 1;
        }
        else if (wan != 0) {
            if (qian < 1000)
                flag = 0;
        }
        read(qian);
        }
    return 0;
}

转载别人简洁的做法~

https://blog.csdn.net/qq_45281807/article/details/105221770

posted on 2020-09-22 13:23  Taurus20000519  阅读(221)  评论(0)    收藏  举报