计算C中的整数数

时间:2015-11-19 13:34:19

标签: c count integer

所以我想创建一个代码来查找数字中的数字数量。所以这可能听起来很奇怪,但它的工作原理是这样的。

Input
12893012

Output
1 2 2 1 0 0 0 0 1 1

因此输出意味着在12893012中,有一个0,两个1,两个2,一个3,没有4,没有5,没有6,没有7,一个8和一个9。

#include <stdio.h>
int main()
 {
 int n,count=0;
printf("Enter an integer: ");
scanf("%d", &n);
while(n!=0)
{
  n/=10;             /* n=n/10 */
  ++count;
 }
printf("Number of digits: %d",count);
}

我的代码似乎只找到了数字中的位数,有什么想法吗?非常感谢btw。

5 个答案:

答案 0 :(得分:6)

把它放在一个数组中并计算。

粗略地说,

int count[10] = {0};
while(n != 0)
{
  count[n % 10]++;
  n /= 10;
}

打印出结果。

答案 1 :(得分:2)

您继续递增count,但不检查数字。这只会给你一个数字位数。您需要一个数组,您可以在其中存储每个数字的计数。

int digitCounts[10];
//...
while (n != 0){
    digitCounts[n % 10]++;
    n /= 10;
}

您可以使用mod%)来简化,因为% 10会给出最后一位数字。

答案 2 :(得分:2)

创建一个存储数字计数的数组。剩余运算符将为您提供0到9之间的最后一位数。

int digit[10];
//...
while(n!=0)
{
    int d = n % 10;
    digit[d]++
//...

然后将其打印出来。

答案 3 :(得分:1)

我建议创建一个数组(或10个变量),它们保存数字的数量,然后逐个读取数字并检查它是什么数字。 您可以使用

读取单个数字
 scanf(%1d, &variableName)

 getchar()

功能

答案 4 :(得分:0)

非常感谢@ rohit89,@ this和@ Arc676

这只是输入零(0)时的修正

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