习题5-5 使用函数统计指定数字的个数 求帮助

img

img


#include <stdio.h>

int CountDigit( int number, int digit );
    
int main()
{
    int number, digit;

    scanf("%d %d", &number, &digit);
    printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));
    
    return 0;
}

/* 你的代码将被嵌在这里 */
int CountDigit( int number, int digit )
{
    int count=0;
    int arr[10];
    int d=10;
    int i=0;
    //12342
    while(number>0)
    {
        for(i;i<10;i++)
        {
            arr[i]=number%10;
            number/=10;
        }
        for(i=0;i<10;i++)
        {
            if(digit==arr[i])
            {
                count++;
            }
            else
            {
                ;
            }
        }
    }
    while(number<0)
    {
        number=(-1)*number;
        for(i;i<10;i++)
        {
            arr[i]=number%10;
            number/=10;
        }
        for(i=0;i<10;i++)
        {
            if(digit==arr[i])
            {
                count++;
            }
            else
            {
                continue;
            }
        }
    }
    while(number==0)
    {
    return 0;
    }
    return count;
}

为什么我通过不了没有digit出现的测试点?

修改如下,供参考:

#include <stdio.h>
int CountDigit(int number, int digit);
int main()
{
    int number, digit;

    scanf("%d %d", &number, &digit);
    printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));

    return 0;
}

/* 你的代码将被嵌在这里 */
int CountDigit(int number, int digit)
{
    int count = 0;
    int arr[10];
    int d = 10;
    int i = 0;
    //12342
    if (number < 0)
        number = -number;
    if (number == 0 && digit == 0)
        count++;
    while (number) {
        if (number % 10 == digit)
            count++;
        number /= 10;
    }
#if 0
    while (number > 0)
    {
        for (i; i < 10; i++)
        {
            arr[i] = number % 10;
            number /= 10;
        }
        for (i = 0; i < 10; i++)
        {
            if (digit == arr[i])
            {
                count++;
            }
            else
            {
                ;
            }
        }
    }
    while (number < 0)
    {
        number = (-1) * number;
        for (i; i < 10; i++)
        {
            arr[i] = number % 10;
            number /= 10;
        }
        for (i = 0; i < 10; i++)
        {
            if (digit == arr[i])
            {
                count++;
            }
            else
            {
                continue;
            }
        }
    }
    while (number == 0)
    {
        return 0;
    }
#endif
    return count;
}