C中的整数中的特定数字计数

时间:2015-02-17 14:09:41

标签: c arrays

例如:如果用户输入是11234517并且想要在此输入中看到1的数量,则输出将是" 1的数字是3.我希望您理解我的内容的意思。

我只能计算整数中的位数。

#include <stdio.h>
int main()
{
    int n, count = 0;

    printf("Enter an integer number:");
    scanf("%d",&n);
    while (n != 0)
    {
        n/=10;
        count++;
    }
    printf("Digits in your number: %d",count);
    return 0;
}

也许数组是解决方案。任何帮助,将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:5)

您不需要数组。尝试这样的事情:

int countDigits(int number, int digitToCount)
{
  // Store how many times given number occured
  int counter = 0;

  while(number != 0)
  {
   int tempDigit = number % 10;
   if(tempDigit == digitToCount)
     counter++;
   number = number/10;
  }

 return counter;
}

答案 1 :(得分:4)

因此,您已经发现可以使用1234123转换为number / 10(即删除最低有效数字)。

如果我们想要获得最低有效数字,我们可以使用number % 10。对于1234,其值为4

了解这一点,我们可以修改您的代码以考虑到这一点:

int main() {
    int n, count = 0;

    printf("Enter an integer number:");
    scanf("%d",&n);

    while (n != 0) {
        if (n % 10 == 1)
            count++;
        n /= 10;
    }

    printf("Number of 1s in your number: %d", count);
    return 0;
}

答案 2 :(得分:1)

您可能希望使用convert your int to a string,如下所示:

char str[100];
sprintf(str, "%d", n);

然后,您可以在str上进行迭代,以便找到您的数字的出现次数。