60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
func numberToWords(n int) string {
 | 
						|
	if n < 0 || n >= 1000 {
 | 
						|
		return "ERR"
 | 
						|
	}
 | 
						|
 | 
						|
	ones := []string{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
 | 
						|
	teens := []string{"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
 | 
						|
		"sixteen", "seventeen", "eighteen", "nineteen"}
 | 
						|
	tens := []string{"", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}
 | 
						|
 | 
						|
	words := []string{}
 | 
						|
 | 
						|
	// 百位
 | 
						|
	if n >= 100 {
 | 
						|
		words = append(words, ones[n/100]+" hundred")
 | 
						|
		n %= 100
 | 
						|
		if n != 0 {
 | 
						|
			words = append(words, "and")
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// 十位和个位
 | 
						|
	if n >= 20 {
 | 
						|
		if n%10 != 0 {
 | 
						|
			words = append(words, tens[n/10]+"-"+ones[n%10])
 | 
						|
		} else {
 | 
						|
			words = append(words, tens[n/10])
 | 
						|
		}
 | 
						|
	} else if n >= 10 {
 | 
						|
		words = append(words, teens[n-10])
 | 
						|
	} else if n > 0 {
 | 
						|
		words = append(words, ones[n])
 | 
						|
	} else if len(words) == 0 { // n == 0
 | 
						|
		words = append(words, "zero")
 | 
						|
	}
 | 
						|
 | 
						|
	return joinWords(words)
 | 
						|
}
 | 
						|
 | 
						|
func joinWords(words []string) string {
 | 
						|
	res := ""
 | 
						|
	for i, w := range words {
 | 
						|
		if i > 0 {
 | 
						|
			res += " "
 | 
						|
		}
 | 
						|
		res += w
 | 
						|
	}
 | 
						|
	return res
 | 
						|
}
 | 
						|
 | 
						|
func main() {
 | 
						|
	var n int
 | 
						|
	fmt.Scan(&n)
 | 
						|
	fmt.Println(numberToWords(n))
 | 
						|
}
 |