#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char n[101]={'0'};
int i=0;
scanf("%c",&n[0]);
while(n[i]!='\n'){
scanf("%c",&n[++i]);
}
int sum=0;
for(int j=0;j<strlen(n)-1;j++){
sum=sum+(int)(n[j]-'0');
}
int m[4]={0};
i=0;
while(sum){
m[i++]=sum%10;
sum/=10;
}
for(int j=i-1;j>=0;j--){
switch(m[j]){
case 0:printf("ling");
break;
case 1:printf("yi");
break;
case 2:printf("er");
break;
case 3:printf("san");
break;
case 4:printf("si");
break;
case 5:printf("wu");
break;
case 6:printf("liu");
break;
case 7:printf("qi");
break;
case 8:printf("ba");
break;
case 9:printf("jiu");
break;
}
if(j){
printf(" ");
}
}
return 0;
}
第8,10行换成cin会出错,但是scanf就不会。查了一下好像是因为cin不能读入回车符,而scanf能读入回车符。所以要在输入完字符串用回车符作为判断时,应该用scanf来读入字符串。https://blog.csdn.net/wxy824701942/article/details/5907318