题解 | #学英语#

学英语

https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc

#include <iostream>
using namespace std;
void three(string s);
void learn(string s);
int main() {
    int a;
    cin>>a;
    string s=to_string(a);
    learn(s);
    return 0;
}

void learn(string s){
    int number;
    if(s.length()%3==0){
        number=s.length()/3-1;
    }
    else{number=s.length()/3;}
    if(number==0){
        three(s);
    }
    if(number>0){
        int x=s.length()-number*3;

        if(number==1){
            three(s.substr(0,x));
            cout<<"thousand ";
        }
        if(number==2){
            three(s.substr(0,x));
            cout<<"million ";
        }
        if(number==3){
            three(s.substr(0,x));
            cout<<"billion ";
        }
        learn(s.substr(x));
    }
}
void three(string s){
    int value=stoi(s);
    if(value<=9){
        switch(value){
            case 1:cout<<"one ";break;
            case 2:cout<<"two ";break;
            case 3:cout<<"three ";break;
            case 4:cout<<"four ";break;
            case 5:cout<<"five ";break;
            case 6:cout<<"six ";break;
            case 7:cout<<"seven ";break;
            case 8:cout<<"eight ";break;
            case 9:cout<<"nine ";break;
            default: break;
        }
    }
    if (value>=10&&value<=19){
        switch(value){
            case 10:cout<<"ten ";break;
            case 11:cout<<"eleven ";break;
            case 12:cout<<"twelve ";break;
            case 13:cout<<"thirteen ";break;
            case 14:cout<<"fourteen ";break;
            case 15:cout<<"fifteen ";break;
            case 16:cout<<"sixteen ";break;
            case 17:cout<<"seventeen ";break;
            case 18:cout<<"eighteen ";break;
            case 19:cout<<"nineteen ";break;
            default: break;
        }
    }
    if (value>=20&&value<=99){
        switch(s[0]){
            case '2':cout<<"twenty ";break;
            case '3':cout<<"thirty ";break;
            case '4':cout<<"forty ";break;
            case '5':cout<<"fifty ";break;
            case '6':cout<<"sixty ";break;
            case '7':cout<<"seventy ";break;
            case '8':cout<<"eighty ";break;
            case '9':cout<<"ninety ";break;
            default:break;
        }
        s=s.substr(1);
        three(s);
    }
    if(value==100){cout<<"one hundred ";}
    if(value>100){
        switch(s[0]){
            case '1':cout<<"one hundred and ";break;
            case '2':cout<<"two hundred and ";break;
            case '3':cout<<"three hundred and ";break;
            case '4':cout<<"four hundred and ";break;
            case '5':cout<<"five hundred and ";break;
            case '6':cout<<"six hundred and ";break;
            case '7':cout<<"seven hundred and ";break;
            case '8':cout<<"eight hundred and ";break;
            case '9':cout<<"nine hundred and ";break;
            default:break;
        }
        three(s.substr(1));
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

02-10 12:23
已编辑
新余学院 C++
采集想要offer:专业技能那里要一条一条的列出来吧,感觉你项目很厉害了,但是如果你不写技术栈面试官对你项目不太懂的话都没办法问你八股😂C++都是基架岗,都是一群9✌🏻在卷,我觉得你要是有时间学个go把MySQL和redis写上去找个开发岗吧
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务