题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
#include <iostream> using namespace std; void three(string s); void learn(string s); int main() { int a; cin>>a; string s=to_string(a); learn(s); return 0; } void learn(string s){ int number; if(s.length()%3==0){ number=s.length()/3-1; } else{number=s.length()/3;} if(number==0){ three(s); } if(number>0){ int x=s.length()-number*3; if(number==1){ three(s.substr(0,x)); cout<<"thousand "; } if(number==2){ three(s.substr(0,x)); cout<<"million "; } if(number==3){ three(s.substr(0,x)); cout<<"billion "; } learn(s.substr(x)); } } void three(string s){ int value=stoi(s); if(value<=9){ switch(value){ case 1:cout<<"one ";break; case 2:cout<<"two ";break; case 3:cout<<"three ";break; case 4:cout<<"four ";break; case 5:cout<<"five ";break; case 6:cout<<"six ";break; case 7:cout<<"seven ";break; case 8:cout<<"eight ";break; case 9:cout<<"nine ";break; default: break; } } if (value>=10&&value<=19){ switch(value){ case 10:cout<<"ten ";break; case 11:cout<<"eleven ";break; case 12:cout<<"twelve ";break; case 13:cout<<"thirteen ";break; case 14:cout<<"fourteen ";break; case 15:cout<<"fifteen ";break; case 16:cout<<"sixteen ";break; case 17:cout<<"seventeen ";break; case 18:cout<<"eighteen ";break; case 19:cout<<"nineteen ";break; default: break; } } if (value>=20&&value<=99){ switch(s[0]){ case '2':cout<<"twenty ";break; case '3':cout<<"thirty ";break; case '4':cout<<"forty ";break; case '5':cout<<"fifty ";break; case '6':cout<<"sixty ";break; case '7':cout<<"seventy ";break; case '8':cout<<"eighty ";break; case '9':cout<<"ninety ";break; default:break; } s=s.substr(1); three(s); } if(value==100){cout<<"one hundred ";} if(value>100){ switch(s[0]){ case '1':cout<<"one hundred and ";break; case '2':cout<<"two hundred and ";break; case '3':cout<<"three hundred and ";break; case '4':cout<<"four hundred and ";break; case '5':cout<<"five hundred and ";break; case '6':cout<<"six hundred and ";break; case '7':cout<<"seven hundred and ";break; case '8':cout<<"eight hundred and ";break; case '9':cout<<"nine hundred and ";break; default:break; } three(s.substr(1)); } } // 64 位输出请用 printf("%lld")