这道题真的太难了,尤其是0的处理,最后参考的算法笔记的code写的。
关于0的处理以及个、万、亿的处理真的想不到,还是太菜了o(╥﹏╥)o
using namespace std;
#include<bits/stdc++.h>
int main(){
char a[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char b[5][5]={"Shi","Bai","Qian","Wan","Yi"};
char n[11];
scanf("%s",n);
int len,left,right;
len=strlen(n);
left=0,right=len-1;
if(n[0] == '-'){
printf("Fu");
left++;
}
while(left<=right) right-=4;//4
while(left<len){
bool flag=false;
bool isprint=false;
while(left<=right){
if(n[left] == '0' && left>0) flag=true;
else{
if(flag == true){
printf(" ling");
flag=false;
}
if(left>0) printf(" ");
printf("%s",a[n[left]-'0']);
isprint=true;
if(left != right) printf(" %s",b[right-left-1]);
}
left++;
}
if(isprint==true && right!=len-1) printf(" %s",b[(len-1-right)/4+2]);
right+=4;
}
return 0;
}