PTA念数字错在哪?

明明运行结果正确,却提示答案错误
#include<stdio.h>
int main()
{
int a,mask=1,b;
scanf("%d",&a);
if(a<0)
{
printf("fu ");
a=-a;
}
b=a;
while(b>=10)
{
mask*=10;
b/=10;
}
while(mask>0)
{
b=a/mask;
a%=mask;
mask/=10;
switch(b){
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;
}
}
printf(" \b");
return 0;

}

img

img

最后一个数字后没有空格,得特殊处理

供参考:

#include <stdio.h>
int main()
{
    char* num[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
    char c[100] = { 0 };
    int  i = 0;
    scanf("%s", c);
    for (i = 0; c[i] != '\0'; i++)
        printf(i == 0 && c[i] == '-' ? "fu" : i == 0 ? "%s" : " %s", num[c[i] - '0']);
    return 0;
}