折磨死你啊!!!!
思路一,所有4位数全部预读出,但是好像没有那么大的字符数组
思路二,每4位读一次
这段代码没有考虑8000,800,这种数字的读法
#include <cstdio>
#include <string.h>
char num[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char quan[][5]={"","Shi","Bai", "Qian","Wan","Shi","Bai", "Qian","Yi","Shi","Bai"};
int main(){
//freopen("in.txt","r",stdin);
char c[12];
while(scanf("%s",c)!=EOF){
int len=strlen(c);
if(c[0]=='-'){
printf("Fu ");
for(int i=0;i<len;i++){
c[i]=c[i+1];
}
len--;
}
int zu=0,cnt[3]={0,0,0};
for(int i=0;i<len;i++){
int cur=len-i-1;
int nn=c[i]-'0';
//每4位数中,只有第一个非零
zu=cur/4;
if(nn!=0){
int tlen=cur-zu*4+1;
}
//零在个位数不打印,每4位数中只打第一个零
if(nn==0){
cnt[zu]++;
}
if(i==0){
printf("%s %s",num[nn],quan[cur]);
}else{
if(nn==0){
if(cnt[zu]==1 ){
if(cur%4!=0){
printf(" %s",num[nn]);
}else{
printf(" %s",quan[cur]);
}
}
}else{
if(i+1==len){
printf(" %s%s",num[nn],quan[cur]);
}else{
printf(" %s %s",num[nn],quan[cur]);
}
}
}
}
printf("\n");
}
return 0;
}