当while(n>0)改为while(n>=0)为什么就不对了?还有为什么要单独考虑个位数的时候?

img

img

#include

int Count_Digit ( const int N, const int D );

int main()
{
int N, D;

scanf("%d %d", &N, &D);
printf("%d\n", Count_Digit(N, D));
return 0;

}

/* 你的代码将被嵌在这里 */
int Count_Digit ( const int N, const int D )
{
int sum=0,n=N;
if(n<0)
n=-n;
if(n==D)
return 1;
while(n>0)
{
if(n%10==D)
sum++;
n=n/10;
}
return sum;
}

n等于0的时候 0除以10还是0 while死循环了,
单独考虑个位数是因为,当输入0 0的时候,单独考虑个位数可以输出正确的值

n = 0 不死循环了

死循环了啊,n一直等于零

n = n/10;
如果你考虑n = 0,那死循环了