这字符串处理比较难了
看题目戳这
这个思路是算法笔记上机训练里的
不然用我的方法两百行模拟会死人的
就是边读边输出的方法
注意空格的输出
#include<bits/stdc++.h>
using namespace std;
string num[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"},wei[]={"Shi","Bai","Qian","Wan","Yi"};
int main(){
string str;
cin>>str;
int len=str.size(),l=0,r=len-1;
if(str[0]=='-'){
l++;
printf("Fu");
}
while(l+4<=r){
r-=4;
}
while(l<len){
bool flag=0,isprint=0;
while(l<=r){
if(l>0&&str[l]=='0'){
flag=1;
}else {
if(flag){
printf(" ling");
flag=0;
}
if(l>0){
printf(" ");
}
printf("%s",num[str[l]-'0'].c_str());
isprint=1;
if(l!=r){
printf(" %s",wei[r-l-1].c_str());
}
}
l++;
}
if(isprint&&r!=len-1){
printf(" %s",wei[(len-1-r)/4+2].c_str());
}
r+=4;
}
return 0;
}