/* 789 - seven hundred and eighty nine */ /*思路:这人题思路很简单但是用c++程序实现起来比较繁琐,看了答案才知道 可以把 switch(){case}可以改成数组。哎。效率就是不行呀~! 如 char *a[]={"","one","two".........}*/ #include <iostream> #include <string> using namespace std; char *Num_to_en(int num) { switch(num) { case 1:return "one"; break; case 2:return "tow"; break; case 3:return "three"; break; case 4:return "four"; break; case 5:return "five"; break; case 6:return "six"; break; case 7: return "seven"; break; case 8:return "eight"; break; case 9:return "nine"; break; default: cout<<"error"<<endl; break; } } char *ShiWei(int num) { if(num<=20) { switch(num) { case 10:return "ten"; break; case 11:return "elven"; break; case 12:return "twelve"; break; case 13:return "thirteen"; break; case 14:return "fourteen"; break; case 15:return "fifteen"; break; case 16: return "sixteen"; break; case 17:return "seventeen"; break; case 18:return "eighteen"; break; case 19:return "nineteen"; break; case 20:return "twenty"; break; } } else { int s=num/10; int g=num%10; switch(s) { case 2:return "twenty"; break; case 3:return "thirty"; break; case 4:return "forty"; break; case 5:return "fifty"; break; case 6:return "sixty"; break; case 7:return "seventy"; break; case 8:return "eighty"; break; case 9:return "ninety"; break; case 0:return " "; } } } int main() { cout<<"请输入一个三位整数"<<endl; int a1; cin>>a1; int bw=a1/100; int sw=a1%100; int sw1=a1%100/10; int gw=a1%10; if (sw1==0&&gw!=0) cout<<Num_to_en(bw)<<" hundred and "<<Num_to_en(gw)<<endl; else if(sw==0&&gw==0) cout<<Num_to_en(bw)<<" hundred"<<endl; else if(sw<21)cout<<Num_to_en(bw)<<" hundred and "<<ShiWei(sw)<<endl; else cout<<Num_to_en(bw)<<" hundred and "<<ShiWei(sw)<<" "<<Num_to_en(gw)<<endl; return 0; } 有时候自己性子太急,光顾着写代码了,没考虑方法和效率,哎, 这一点以后要注意呀!!