using System;publicclassNumberTranslation{publicstaticstringNumber2Words(int n){// numbers between 0 and 999999string result ="";return n/1000!=0?(Number2Word(n/1000)+" thousand"+(n%1000!=0?" "+Number2Words(n%1000):"")):
n!=0?Number2Word(n):"zero";}privatestaticstringNumber2Word(int temp){string[] nWrdSp ={"","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};string[] nWrdDc ={"","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};string result ="";
result += temp/100>0? nWrdSp[temp/100]+" hundred ":"";
result += temp%100>0?(temp%100<20?
nWrdSp[temp%100]+" ": nWrdDc[(temp%100)/10]+(temp%10!=0?"-"+nWrdSp[temp%10]:"")):"";return result.Trim();}}
publicclassNumberTranslation{publicstaticstringNumber2Words(int n){returnnumber2Words(n).Length==0?"zero":number2Words(n);}publicstaticstringnumber2Words(int n){string[] m ={"","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thir","four","fif","six","seven","eigh","nine","twen","for"};string word =(n >999)?" thousand ":"";if(n ==0)return m[n];int x = n%1000, z = x%10;if(x ==0)return(number2Words(n/1000)+ word).Trim();if(x >99){ word += m[x/100]+" hundred "; x %=100;}if(x ==0)return(number2Words(n/1000)+ word).Trim();if(x <13)returnnumber2Words(n/1000)+ word + m[x];if(x <20)returnnumber2Words(n/1000)+ word + m[x]+"teen";if(x >19&&30> x) word += m[20]+"ty-"+ m[z];if(x >29&&40> x) word += m[13]+"ty-"+ m[z];if(x >39&&50> x) word += m[21]+"ty-"+ m[z];if(x >49) word += m[10+x/10]+"ty-"+ m[z];
word = n >999?number2Words(n/1000)+ word : word;return word[word.Length-1]=='-'? word.Substring(0,word.Length-1): word;}}
答案5:
publicclassNumberTranslation{staticstring[] numberNames ={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};staticstring[] tenNames ={"zero","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};publicstaticstringNumber2Words(int n){var output = n >0?"":"zero";if(n >=1000){
output +=Number2Words(n /1000)+" thousand ";
n %=1000;}if(n >=100){
output +=Number2Words(n /100)+" hundred ";
n %=100;}if(n >0&& n <20){
output += numberNames[n];}elseif(n >=20&& n <100){
output += tenNames[n /10];
n %=10;
output += n >0?"-"+ numberNames[n]:" ";}return output.Trim();}}
using System;using System.Text;publicclassNumberTranslation{publicstaticstringNumber2Words(int n){if(n ==0)return"zero";var sb =newStringBuilder();bool flag =false;if(n ==0)return sb.ToString().TrimEnd();if(n %100>9&& n %100<20){
sb.Insert(0,getDecade(ref n));
flag =true;}else{
sb.Insert(0,getSingles(ref n,ref flag));bool hadsingle = flag;string dec =getDecades(ref n,ref flag);if(flag && hadsingle)
sb.Insert(0,"-");
sb.Insert(0, dec);}if(n ==0)return sb.ToString().TrimEnd();var hund =getSingles(ref n,ref flag);if(flag)
sb.Insert(0, hund +" hundred ");if(n ==0)return sb.ToString().TrimEnd();
sb.Insert(0," thousand ");if(n %100>9&& n %100<20){
sb.Insert(0,getDecade(ref n));
flag =true;}else{
sb.Insert(0,getSingles(ref n,ref flag));bool hadsingle = flag;string dec =getDecades(ref n,ref flag);if(flag && hadsingle)
sb.Insert(0,"-");
sb.Insert(0, dec);}if(n ==0)return sb.ToString().TrimEnd();
hund =getSingles(ref n,ref flag);if(flag)
sb.Insert(0, hund +" hundred ");return sb.ToString().TrimEnd();}privatestaticstringgetSingles(refint n,refbool flag){int d = n %10;
n /=10;
flag =true;switch(d){case1:return"one";case2:return"two";case3:return"three";case4:return"four";case5:return"five";case6:return"six";case7:return"seven";case8:return"eight";case9:return"nine";}
flag =false;return String.Empty;}privatestaticstringgetDecades(refint n,refbool flag){int d = n %10;
n /=10;
flag =true;switch(d){case2:return"twenty";case3:return"thirty";case4:return"forty";case5:return"fifty";case6:return"sixty";case7:return"seventy";case8:return"eighty";case9:return"ninety";}
flag =false;return String.Empty;}privatestaticstringgetDecade(refint n){int d = n %100;
n /=100;switch(d){case10:return"ten";case11:return"eleven";case12:return"twelve";case13:return"thirteen";case14:return"fourteen";case15:return"fiveteen";case16:return"sixteen";case17:return"seventeen";case18:return"eighteen";case19:return"nineteen";}return String.Empty;}}
答案8:
using System;using System.Text;using System.Collections.Generic;publicclassNumberTranslation{publicstaticstringNumber2Words(int number){StringBuilder res =newStringBuilder();
Dictionary<int,string> dict =newDictionary<int,string>(){{0,"zero"},{1,"one"},{2,"two"},{3,"three"},{4,"four"},{5,"five"},{6,"six"},{7,"seven"},{8,"eight"},{9,"nine"},{10,"ten"},{11,"eleven"},{12,"twelve"},{13,"thirteen"},{14,"fourteen"},{15,"fifteen"},{16,"sixteen"},{17,"seventeen"},{18,"eighteen"},{19,"nineteen"},{20,"twenty"},{30,"thirty"},{40,"forty"},{50,"fifty"},{60,"sixty"},{70,"seventy"},{80,"eighty"},{90,"ninety"},{100,"hundred"},{1000,"thousand"}};int tmp =0;
Action<int> part100 =(int num)=>{
tmp = num %10;if(tmp !=0)
res.AppendFormat("{0}-{1}", dict[num - tmp], dict[tmp]);else
res.Append(dict[num]);};if(number ==0)return"zero";if(number <1000000&& number >100000){
tmp =(int)number /1000;
number -= tmp *1000;
res.AppendFormat("{0} {1} ", dict[(int)tmp/100], dict[100]);
tmp -=(int)tmp /100*100;part100(tmp);
res.AppendFormat(" {0} ", dict[1000]);}if(number <100000&& number >10000){
tmp =(int)number /1000;
number -= tmp *1000;part100(tmp);
res.AppendFormat(" {0} ", dict[1000]);}if(number <10000&& number >=1000){
tmp =(int)number /1000;
res.AppendFormat("{0} {1} ", dict[tmp], dict[1000]);
number -= tmp *1000;}if(number <1000&& number >=100){
tmp =(int)number /100;
res.AppendFormat("{0} {1} ", dict[tmp], dict[100]);
number -= tmp *100;}if(number <100&& number >20){part100(number);}if(number <=20&& number !=0){
res.Append(dict[number]);}return res.ToString().TrimEnd(' ');}}
答案9:
using System;publicclassNumberTranslation{publicstaticstringNumber2Words(int n){if(n ==0)return"zero";string words ="";if((n /1000000)>0){
words +=Number2Words(n /1000000)+" million ";
n %=1000000;}if((n /1000)>0){
words +=Number2Words(n /1000)+" thousand ";
n %=1000;}if((n /100)>0){
words +=Number2Words(n /100)+" hundred ";
n %=100;}if(n >0){string[] units =newstring[]{"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};string[] tens =newstring[]{"zero","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};if(n <20)
words += units[n];else{
words += tens[n /10];if((n %10)>0)
words +="-"+ units[n %10];}}return words.Trim();}}
写出数字【难度:3级】:答案1:using System;public class NumberTranslation{ public static string Number2Words(int n) { // numbers between 0 and 999999 string result = ""; return n/1000!=0 ? ...