C - 如何检查数字中显示的数字的时间

时间:2017-11-25 09:07:32

标签: c for-loop while-loop digit

帮助我 我在C程序中有一个代码,我需要检查一个数字在数字中显示的时间。 EX:321 总和:6(3 + 2 + 1)

EX2:3211 总和:6(3 + 2 + 1)

#include <stdio.h>

#define TEN 10
int main ()
{
    int number=0, temp=0, sum=0, remainder=0;

    do
    {
        printf("Enter number: ");
        scanf("%d", &number);

    }while (number<=0);

    temp=number;

    while(temp!=0)
    {
        remainder = temp % TEN;
        sum = sum + remainder;
        temp = temp/TEN;


    }

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

    return 0;
 }

如何继续?

2 个答案:

答案 0 :(得分:1)

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

代码:

int isvisited[TEN] = {0};
while(temp!=0)
{
    remainder = temp % TEN;

    if(!isvisited[remainder])
    {
        isvisited[remainder] = 1;
        sum = sum + remainder;
    }

    temp = temp/TEN;
}

编辑:

这里,Integer数组用于跟踪每个数字是否被覆盖。跟踪每个数字点到数组的每个元素。

它将以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

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

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

答案 1 :(得分: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;
 }