结果好像没问题,但是却说答案错误,这是怎么回事呀?

图片说明

#include<stdio.h>
int read(int t);
int main(){
    int i,k,n,a[15];
    scanf("%d",&i);
    if(i<0){
        printf("fu ");
        i=-i;
    }
    if(i==0)read(0);
    for(k=0;i>0;k++){
    a[k]=i%10;
    i=i/10;}
    for(n=k-1;n>0;n--){
        read(a[n]);
        printf(" ");
    }
    read(a[0]);
}

int read(int t){
    switch(t){
        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;
        case 0:printf("ling");break;
    }
}

图片说明

图片说明

估计是00,-0这些你没有考虑,你都测试下。

你试试,代码如下

#include<stdio.h>
int read(char t);
int main()
{
    char c;
    int i=0;
    while(scanf("%c",&c)==1&&c!='\n')
    {
        if(i)
            printf(" ");
        else
            i=1;
        read(c);
    }
}

int read(char t)
{
    switch(t)
    {
        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;
        case '0':printf("ling");break;
        case '-':printf("fu");break;
    }
}