卿本佳人19 2023-02-16 13:30 采纳率: 91.3%
浏览 22
已结题

给你一个数怎么用这个数读出这个代码的英文?

例如一个自然数n,0< =n< =2^31-1。

输出描述
输出这个数的英文,最后不要有多余的空格。
用例输入 1 
1111111111
用例输出 1 
one billion one hundred and eleven million one hundred and eleven thousand one hundred and eleven

  • 写回答

4条回答 默认 最新

  • CodeBytes 2023-02-16 13:43
    关注

    该回答引用ChatGPT
    可以使用递归的方法来将给定的自然数转换成英文。具体的转换过程可以根据数值的范围和数位来分类讨论,下面是一种实现方式:

    #include <iostream>
    #include <string>
    using namespace std;
    
    // 将0~19的数字转换成英文
    string ones[] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
                     "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    // 将20, 30, 40, ..., 90的数字转换成英文
    string tens[] = {"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
    // 将数字的数位转换成英文
    string scale[] = {"", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion"};
    
    // 将3位数以内的数字转换成英文
    string convert(int num) {
        if (num == 0) {
            return "";
        } else if (num < 20) {
            return ones[num];
        } else if (num < 100) {
            return tens[num / 10] + " " + ones[num % 10];
        } else {
            return ones[num / 100] + " hundred " + convert(num % 100);
        }
    }
    
    // 将整数转换成英文
    string toEnglish(int num) {
        if (num == 0) {
            return "zero";
        }
        string result = "";
        int i = 0;
        while (num > 0) {
            int threeDigits = num % 1000;
            if (threeDigits > 0) {
                result = convert(threeDigits) + " " + scale[i] + " " + result;
            }
            num /= 1000;
            i++;
        }
        return result;
    }
    
    int main() {
        int n;
        cin >> n;
        cout << toEnglish(n) << endl;
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月16日

悬赏问题

  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面