1082. Read Number in Chinese (25) PAT

来源:互联网 发布:php冒泡排序法 编辑:程序博客网 时间:2024/05/17 03:52

注意细节,比如大小写,零的处理,以及空格

#include<cstdio>#include<cstring>#include<iostream>#include<vector>#include<algorithm>#include<map>using namespace std;map<char,string>m;map<int,string>mm;int pp=0;string solve(string str){string tmp="";if(str.length()==1&&str[0]=='0'){return "ling";//测试点之一 }for(int i=0;i<str.length();i++){int ll=str.length()-i;if(str[i]=='0'){if((i<str.length()-1)&&str[i+1]!='0'){tmp+=" "+m['0'];continue;}else{continue;}}if(!pp){tmp+=m[str[i]];pp=1;}else{tmp+=" "+m[str[i]];}if(ll>1){tmp+=" "+mm[ll];}}return tmp;}int main(){m['0']="ling",m['1']="yi",m['2']="er",m['3']="san",m['4']="si",m['5']="wu",m['6']="liu",m['7']="qi",m['8']="ba",m['9']="jiu";mm[2]="Shi",mm[3]="Bai",mm[4]="Qian";string str;cin>>str;string ans="",str1="",str2="";int flag=0,i,j,k=0;if(str[0]=='-'){ans+="Fu";k=1;pp=1;}if((str.length()==9&&str[0]!='-')||(str.length()==10&&str[0]=='-')){if(str[0]=='-'){ans+=" "+m[str[1]]+" "+"Yi";}else{ans+=m[str[1]]+" "+"Yi";}if((str.length()==10&&str[0]=='-')){k=2;}pp=1;}for(i=str.length()-1,j=0;j<4&&i>=k;j++,i--);int temp=i;for(i++;i<str.length();i++){str1+=str[i];}for(j=k;j<=temp;j++){str2+=str[j];}ans+=solve(str2);//转换前四位(若存在) //cout<<str2<<endl;if(str2.length()>0){ans+=" Wan";}//cout<<str1<<endl;ans+=solve(str1);//转换后四位 cout<<ans<<endl;return 0;} 


0 0
原创粉丝点击