C-如何检查数字中出现数字的次数

C-如何检查数字中出现数字的次数,c,for-loop,while-loop,digit,C,For Loop,While Loop,Digit,帮帮我 我有一个C程序的代码,我需要检查数字显示多少次。 例:321 总数:6(3+2+1) 例2:3211 总数:6(3+2+1) #包括 #定义10 int main() { 整数=0,温度=0,和=0,余数=0; 做 { printf(“输入编号:”); scanf(“%d”和编号); }while(number您只需跟踪已覆盖的数字。为此,您可以保留一个大小为10的数组(每个数字一个),初始值为false。覆盖数字时,将该数字标志更改为true。并每次检查该数字是否覆盖 代码: 编辑:

帮帮我 我有一个C程序的代码,我需要检查数字显示多少次。 例:321 总数:6(3+2+1)

例2:3211 总数:6(3+2+1)

#包括
#定义10
int main()
{
整数=0,温度=0,和=0,余数=0;
做
{
printf(“输入编号:”);
scanf(“%d”和编号);

}while(number您只需跟踪已覆盖的数字。为此,您可以保留一个大小为10的数组(每个数字一个),初始值为
false
。覆盖数字时,将该数字标志更改为
true
。并每次检查该数字是否覆盖

代码:

编辑: 这里,整数数组用于跟踪是否覆盖了每个数字。要跟踪数组中每个元素的每个数字点

#include <stdio.h>
#define TEN 10
int main ()
{
    int number=0, temp=0, sum=0, remainder=0, i;
    int ifElementPresent[TEN] = {0}; //stores 1 if digit (0..9) is present else 0; initialised to zero
    do
    {
        printf("Enter number: ");
        scanf("%d", &number);

    }while (number<=0);

    temp=number;

    while(temp!=0)
    {
        remainder = temp % TEN;
        ifElementPresent[remainder] = 1; //if a digit is present in the number
        temp = temp/TEN;
    }

    for(i = 0; i<TEN; i++) // in order to calculate the sum
    {
        if(ifElementPresent[i] == 1)sum += ifElementPresent[i]; 
    }

    printf("Sum of the numbers is: %d\n", sum);

    return 0;
 }
它将以0值初始化

  digit  isvisited
      0      0
      1      0 
      2      0
      3      0
      4      0
      5      0
      6      0
      7      0
      8      0
      9      0
现在假设访问了数字1、3和6

  digit  isvisited
      0      0
      1      1 
      2      0
      3      1
      4      0
      5      0
      6      1
      7      0
      8      0
      9      0
您将检查
isvisted[digit]
是否为
0
,将
isvisted[digit]
更改为
1
,并将其添加到总和中。如果其值为
1
,则表示它已添加到
sum
,您将继续执行下一个数字


注意:在while循环中,最好的做法是像检查
(temp>0)
而不是检查
(temp!=0)

您可以简单地创建一个包含10个元素的数组,并为数字中出现的每个数字0..9存储。然后,您可以简单地使用该数组对出现的数字求和

#include <stdio.h>
#define TEN 10
int main ()
{
    int number=0, temp=0, sum=0, remainder=0, i;
    int ifElementPresent[TEN] = {0}; //stores 1 if digit (0..9) is present else 0; initialised to zero
    do
    {
        printf("Enter number: ");
        scanf("%d", &number);

    }while (number<=0);

    temp=number;

    while(temp!=0)
    {
        remainder = temp % TEN;
        ifElementPresent[remainder] = 1; //if a digit is present in the number
        temp = temp/TEN;
    }

    for(i = 0; i<TEN; i++) // in order to calculate the sum
    {
        if(ifElementPresent[i] == 1)sum += ifElementPresent[i]; 
    }

    printf("Sum of the numbers is: %d\n", sum);

    return 0;
 }
#包括
#定义10
int main()
{
整数=0,温度=0,和=0,余数=0,i;
int-ifElementPresent[TEN]={0};//如果数字(0..9)存在,则存储1,否则存储0;初始化为零
做
{
printf(“输入编号:”);
scanf(“%d”和编号);

}当(数字您的描述与您的示例不匹配。Stackoverflow不是一个代码编写服务。请阅读。这是开始,用户输入数字,他得到数字的总和,我想知道像32111这样的数字如何给出像3216这样的总和。对于开始,您不需要将用户输入解析为数字,然后从中提取十进制数字。节省一些CPU周期s、 使用字符串。我没有发现我的错误,它只是一个初始值为0的整数数组。这意味着
false
,设置为1为
true
,如果您仍然不理解解决方案,请注释掉。@Mordechaisalevi已经更新了答案,请再次检查。:)那么…如果这不是标志,那么在代码中写什么呢?[]是什么意思?我不知道这是什么意思我想你是在问
ifElementPresent[]中的
[]
。这是一种使用数组索引访问数组中元素的方法。请告诉我是否还有不清楚的地方。我猜,@MordechaiShalev,你不知道数组的概念。请在线阅读这本书或网站,获取概念或数组,以及为什么在此处使用数组很重要。这里有一个很好的链接:@MordechaiShalev I second Jay Joshi关于学习数组概念的建议。如果你不懂其他任何东西,一定要告诉别人。如果你觉得答案有用,一定要接受。
#include <stdio.h>
#define TEN 10
int main ()
{
    int number=0, temp=0, sum=0, remainder=0, i;
    int ifElementPresent[TEN] = {0}; //stores 1 if digit (0..9) is present else 0; initialised to zero
    do
    {
        printf("Enter number: ");
        scanf("%d", &number);

    }while (number<=0);

    temp=number;

    while(temp!=0)
    {
        remainder = temp % TEN;
        ifElementPresent[remainder] = 1; //if a digit is present in the number
        temp = temp/TEN;
    }

    for(i = 0; i<TEN; i++) // in order to calculate the sum
    {
        if(ifElementPresent[i] == 1)sum += ifElementPresent[i]; 
    }

    printf("Sum of the numbers is: %d\n", sum);

    return 0;
 }