【问题标题】:how to find how many time a digit 0-9 appears in an integer [closed]如何找到数字0-9出现在整数中的次数[关闭]
【发布时间】:2016-08-13 09:19:40
【问题描述】:

我需要一些关于代码的帮助,因为 heahline 说我需要找出数字 0-9 在整数中出现的次数并像这样打印它: 300 以 10 为基数 0:2 1:0 2:0 3:1 4:0 5:0 6:0 7:0 8:0 9:0 我试过了

#include <stdio.h>
#include <stdlib.h>

int main()

{

int num, div=1, rem, count=0, i;
printf("Enter Number: ");
scanf("%d", &num);
div = num;
for(i=1; i<=10; i++)
{
    div = num;
    while(div!< 0)
    {
    rem = div % 10;
    div = div / 10;


    if(i == rem)
    {
        count++;
    }


    if(i == rem && count >= 2)
        {
            printf("\n%d is present %d times", i, count);
        }
    }
}
return 0;
}

它返回正确的答案,但不是我需要的方式。感谢您的帮助!

【问题讨论】:

  • 如果它确实返回了正确的答案,究竟是什么不起作用?
  • 那么你需要什么样的答案呢?你能告诉我们预期的和实际的输出吗?
  • while(div!&lt; 0) 应该怎么做?
  • 您正在遍历该数字 10 次以寻找特定数字,我可能使用了 10 个计数器,并为每个余数完成 counter[rem]++
  • while(div!&lt; 0) --> while(div &gt;= 0)

标签: c ansi-c


【解决方案1】:

此代码将为您计算每个数字的个数

#include <stdlib.h>
int main()
{
int num, div=1, rem,j,  i;
printf("Enter Number: ");
scanf("%d", &num);    //3002
div = num;
int count[10]={0,0,0,0,0,0,0,0,0,0};
while(div>0)
{

rem=div%10;
div=div/10;
printf("%d \n",rem);

for(i=0; i<=9; i++)
{

if(rem==i)
{
count[i]=count[i]+1;
}
}
}
for(j=0;j<=9;j++)
{
printf("%d",count[j]);}
return 0;
 }

如果输入数字 3002,则输出为 2011000000,表示 2 个 0,1 个 2,1 个 3。

【讨论】:

  • 你只需要格式化输出。在上面的代码中,将 printf("%d",count[j]);} 行替换为 printf("%d:%d \n",j,count[j]);}
  • 解决了,谢谢!现在如果我需要添加数字的底数 2?我的意思是在数字 300 中有 5 个 0 和 4 个 1 我该如何添加它?
  • 在 base 2 中,只有 0 和 1。因此您可以将循环从 0-9 更改为 0-1,然后 count 将再次显示系列中 0 和 1 的数量。跨度>
  • 我们不是来帮你做功课的。你在欺骗自己。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2020-05-26
  • 2017-11-20
  • 2022-10-30
  • 1970-01-01
相关资源
最近更新 更多