c语言 统计数字次数

#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 i=0,z=0,numbera=number;
 if(number!=0)
 {
  z=number%10;
  number=number/10;
  if(digit==z||-digit==z)
  i++;
 }
 else if(numbera==digit||numbera==-digit)
 i++;
 return i;
 } 

为啥为负数的时候得不到正确答案

修改如下,供参考:

#include <stdio.h>
int CountDigit( int number, int digit );
int main()                //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 i=0,z=0;            //,numbera=number;
 while(number)          //if(number!=0)
 {
  z=number%10;
  number=number/10;
  if(digit==z)          //if(digit==z||-digit==z)
  i++;
 }
                       //else if(numbera==digit||numbera==-digit)
                       //i++;
 return i;
 }

增加对0和负数的处理,修改如下,供参考:

#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 i=0,z=0;
 if(number==0 && digit==0)return i=1;//对0的处理
 else if(number ==0)      return i;
 if(number<0) number = -number;      //负数的处理
 while(number)
  {
     z=number%10;
     number=number/10;
     if(digit==z)i++;
  }
 return i;
}

 

int CountDigit( int number, int digit )
{
 int i,z,numbera=number;
 if(number!=0)
 for(i=0,z=0;number!=0;)
 {
  z=number%10;
  number=number/10;
  if(digit==z||-digit==z)
  i++;
 }
 else if(numbera==digit||numbera==-digit)
 i++;
 return i;
 }