题解 | #学英语#

学英语

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

package main

import (
    "fmt"
    "strings"
)

var nums1 = []string {
    "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", 
    "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
    "eighteen", "nineteen",
}

var nums2 = []string {
    "0", "0", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety",
}

var word []string

// 100 以内转英文
func hundred2word(n int) {
    if n == 0 {
        return
    }

    if n < 20 {
        word = append(word, nums1[n])
        return
    }

    word = append(word, nums2[n/10])
    if n % 10 != 0 {
        word = append(word, nums1[n%10])
    }
}

// 1000 以内转英文
func thousand2word(n int) {
    if n >= 100 {
        word = append(word, nums1[n/100])
        word = append(word, "hundred")
        if n % 100 != 0 {
            word = append(word, "and")
        }
    }
    hundred2word(n % 100)
}

func readWord(n int) {
    a := n % 1000
    b := (n / 1000) % 1000
    c := (n / 1000 / 1000) % 1000
    d := n / 1000 / 1000 / 1000

    if d > 0 {
        thousand2word(d)
        word = append(word, "billion")
    }
    if c > 0 {
        thousand2word(c)
        word = append(word, "million")
    }
    if b > 0 {
        thousand2word(b)
        word = append(word, "thousand")
    }
    if a > 0 {
        thousand2word(a)
    }

    fmt.Println(strings.Join(word, " "))
}

func main() {
    var n int
    fmt.Scan(&n)
    readWord(n)
}
// 本题输入一个整数,所以采用:fmt.Scan(&n)

全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务