这个是C语言念数字,我不用数组,就是count那里出了问题,应该怎样处理0的问题啊

img


#include
int main()
{
int n=0;
int a=0;
int re=0;
int m=0;
int count=0;
int count2=0;
int i=0;
scanf("%d",&n);
if(n==0)
{
printf("ling");
}
if(n<0)
{
printf("fu ");
n=-n;
}
int num=0;
num=n;
while(n!=0)
{
a=n%10;
n=n/10;
re=re*10+a;
count2++;
if(a==0&&num%10==0)
count++;

}
while(re!=0)
{
        m=re%10;
        re=re/10;
        switch(m)
        {
            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");
            case 9:
                printf("jiu");
                break;
        }
    i++;
    if(i0)
    {
        printf(" ");
    }
}
for(int s=1;s<=count;s++)
{
        printf(" ling");
}
return 0;

}

对照

img


img

修改如下,见注释处,供参考:

#include<stdio.h>
int main()
{
    int n = 0;
    int a[12] = { 0 };  //修改
    int re = 0;
    int m = 0;
    int count = 0;
    int count2 = 0;
    int i = 0;
    scanf("%d", &n);
    if (n == 0)
    {
        printf("ling");
    }
    if (n < 0)
    {
        printf("fu ");
        n = -n;
    }
    int num = 0;
    num = n;
    while (n != 0)
    {
        a[i] = n % 10; //修改
        n = n / 10;
        i++;
    //    re = re * 10 + a;
    //    count2++;
    //    if (a == 0 && num % 10 == 0)
    //        count++;
    }
    while (i != 0)   //while (re != 0)  //修改
    {
        //m = re % 10;   //修改
        //re = re / 10;  //修改
        switch (a[--i])  //修改
        {
        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");
        case 9:
            printf("jiu");
            break;
        }
        //i++;
        if (i)//if (i < count2 && count == 0)
        {
            printf(" ");
        }
    }
    //for (int s = 1; s <= count; s++)
    //{
    //    printf(" ling");
    //}
    return 0;
}