题解 | #学英语#

学英语

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

定义一个函数,处理每三位数字的英文翻译,然后调用这个函数加上相应的单位输出即可。

#include <iostream>
using namespace std;

string transform(int number);

int main() {
    long n;
    cin >> n;
    int number = n % 1000;
    string temp;
    temp += transform(number);
    n /= 1000;
    if (n > 0) {
        number = n % 1000;
        if (temp != "") {
            temp = transform(number) + " thousand " + temp;
        } else if (transform(number) != "") {
            temp += transform(number) + " thousand";
        }
    }
    n /= 1000;
    if (n > 0) {
        if (temp != "") {
            temp = transform(n) + " million " + temp;
        } else if (transform(n) != "") {
            temp += transform(n) + " million";
        }
    }
    cout << temp;
    return 0;
}

string transform(int number) {
    string ans;
    int decade = number % 100;
    string temp;
    if (decade >= 10 && decade <= 19) {
        switch(decade) {
            case 10:
            ans += "ten";
            break;
            case 11:
            ans += "eleven";
            break;
            case 12:
            ans += "twelve";
            break;
            case 13:
            ans += "thirteen";
            break;
            case 14:
            ans += "fourteen";
            break;
            case 15:
            ans += "fifteen";
            break;
            case 16:
            ans += "sixteen";
            break;
            case 17:
            ans += "seventeen";
            break;
            case 18:
            ans += "eighteen";
            break;
            case 19:
            ans += "nineteen";
            break;
        }
    } else {
        int unit = decade % 10;
        switch(unit) {
            case 1:
            ans += "one";
            break;
            case 2:
            ans += "two";
            break;
            case 3:
            ans += "three";
            break;
            case 4:
            ans += "four";
            break;
            case 5:
            ans += "five";
            break;
            case 6:
            ans += "six";
            break;
            case 7:
            ans += "seven";
            break;
            case 8:
            ans += "eight";
            break;
            case 9:
            ans += "nine";
            break;
        }
        decade = decade / 10;
        switch(decade) {
            case 2:
            temp = "twenty";
            break;
            case 3:
            temp = "thirty";
            break;
            case 4:
            temp = "forty";
            break;
            case 5:
            temp = "fifty";
            break;
            case 6:
            temp = "sixty";
            break;
            case 7:
            temp = "seventy";
            break;
            case 8:
            temp = "eighty";
            break;
            case 9:
            temp = "ninety";
            break;
        }
        if (ans != "" && temp != "") {
            ans = temp + ' ' + ans;
        } else if (temp != "") {
            ans += temp;
        }
    }
    int hundred = number / 100;
    temp.clear();
    switch(hundred) {
        case 1:
        temp = "one hundred";
        break;
        case 2:
        temp = "two hundred";
        break;
        case 3:
        temp = "three hundred";
        break;
        case 4:
        temp = "four hundred";
        break;
        case 5:
        temp = "five hundred";
        break;
        case 6:
        temp = "six hundred";
        break;
        case 7:
        temp = "seven hundred";
        break;
        case 8:
        temp = "eight hundred";
        break;
        case 9:
        temp = "nine hundred";
        break;
    }
    if (ans != "" && temp != "") {
        ans = temp + " and " + ans;
    } else if (temp != "") {
        ans += temp;
    }
    return ans;
}
// 64 位输出请用 printf("%lld")

较难(算法题解) 文章被收录于专栏

较难难度题目

全部评论

相关推荐

不懂!!!:感觉你的项目描述太简单了,建议使用star描述法优化提炼一下,就是使用什么技术或方案解决了什么问题,有什么效果或成果,例如:对axios进行了二次封装,实现了请求的统一管理、错误的集中处理以及接口调用的简化,显著提高了开发效率和代码维护性,使用canvas技术实现了路线绘制功能,通过定义路径绘制函数和动态更新机制,满足了简化的导航可视化需求,提升了用户体验。像什么是使用其他组件库,基本功能描述就最好不要写到项目成果里面去了,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务