1082 Read Number in Chinese

#include<bits/stdc++.h>
using namespace std;
string a[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string b[5]={"Yi","Shi","Bai","Qian","Wan"};
void readfour(int aa){
	int temp=aa;
	int cnt=0;
	vector<int> ppp;
	while(aa/10!=0){
		ppp.push_back(aa%10);
		aa/=10;
	}
	ppp.push_back(aa);
	if(temp==0) return;
	if(temp>0){
		if(temp>0&&temp<10){
			cout<<a[temp];
		}else if(temp>=10&&temp<100){
			if(ppp[0]==0){
				cout<<a[ppp[1]]<<' '<<b[1];
			}else{
				cout<<a[ppp[1]]<<' '<<b[1]<<' '<<a[ppp[0]];
			}
		}else if(temp<1000&&temp>=100){
			if(ppp[0]==0&&ppp[1]==0){
				cout<<a[ppp[2]]<<' '<<b[2];
			}else if(ppp[0]==0&&ppp[1]!=0){
				cout<<a[ppp[2]]<<' '<<b[2]<<' '<<a[ppp[1]]<<' '<<b[1];
			}else if(ppp[0]!=0&&ppp[1]==0){
				cout<<a[ppp[2]]<<' '<<b[2]<<' '<<a[0]<<' '<<a[ppp[0]];
			}else{
				cout<<a[ppp[2]]<<' '<<b[2]<<' '<<a[ppp[1]]<<' '<<b[1]<<' '<<a[ppp[0]];
			}
		}else if(temp>=1000&&temp<10000){
			if((ppp[0]==0&&ppp[1]!=0&&ppp[2]!=0)||(ppp[0]==0&&ppp[1]==0&&ppp[2]!=0)||(ppp[0]==0&&ppp[1]==0&&ppp[2]==0)||(ppp[0]!=0&&ppp[1]!=0&&ppp[2]!=0)){
				for(int i=ppp.size()-1;i>=0;i--){
					if(ppp[i]==0){
						break;
					}
					if(ppp[i]!=0&&i==ppp.size()-1){
						cout<<a[ppp[i]]<<' '<<b[i];
					}else if(ppp[i]!=0&&i!=ppp.size()-1&&i!=0){
						cout<<' '<<a[ppp[i]]<<' '<<b[i];
					}
					if(i==0&&ppp[i]!=0){
						cout<<' '<<a[ppp[i]];
					}
				}
			}else{
				for(int i=ppp.size()-1;i>=0;i--){
					if(ppp[i]==0&&i!=0){
						cout<<' '<<a[0];
					}
					if(ppp[i]==0&&i==0){
						break;
					}
					if(ppp[i]!=0&&i==ppp.size()-1){
						cout<<a[ppp[i]]<<' '<<b[i];
					}else if(ppp[i]!=0&&i!=ppp.size()-1&&i!=0){
						cout<<' '<<a[ppp[i]]<<' '<<b[i];
					}
					if(i==0&&ppp[i]!=0){
						cout<<' '<<a[ppp[i]];
					}
				}
			}
		}
	}
}
int main()
{
	int n;
	cin>>n;
	if(n<0){
		cout<<"Fu ";
		n=0-n;
	}
	if(n==0){
		cout<<a[0];return 0;
	}
	vector<int> t;
	while(n/10000!=0){
		t.push_back(n%10000);
		n/=10000;
	}
	t.push_back(n);
	if(t.size()==1){
		readfour(t[0]);
	}else if(t.size()==2){
		readfour(t[1]);
		cout<<' '<<b[4]<<' ';
		if((t[0]<1000||t[0]<100||t[0]<10)&&t[0]>0) cout<<a[0]<<' ';
		readfour(t[0]);
	}else if(t.size()==3){
		readfour(t[2]);
		cout<<' '<<b[0]<<' ';
		if((t[1]<1000||t[1]<100||t[1]<10)&&t[1]>0) cout<<a[0]<<' ';
		readfour(t[1]);
		cout<<' '<<b[4]<<' ';
		if((t[0]<1000||t[0]<100||t[0]<10)&&t[0]>0) cout<<a[0]<<' ';
		readfour(t[0]);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/csg3140100993/article/details/81774048