题解 | #学英语#
学英语
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")
较难(算法题解) 文章被收录于专栏
较难难度题目