цифры суммирования цикла в строке C - PullRequest
0 голосов
/ 21 марта 2019

У меня есть программа, которая делает сумму цифр в строке.Но мне нужен цикл, который будет делать сумму, пока это не одно число шифров.Например, мой ввод - число 12345. Сумма - 15 (1 + 2 + 3 + 4 + 5), и это число 15 должно быть суммировано еще раз, а результат должен быть 6. (5 + 1).Надо работать на любой номер.Спасибо за помощь.

int main() {

    char string[100000];
    int i;
    int sum=0;


    scanf("%s", string);


    for(i = 0; string[i] != '\0'; i++){
        sum += (string[i] - '0');
    }

    printf("%d\n", sum);
    return 0; 
}

Ответы [ 3 ]

1 голос
/ 21 марта 2019
int n = atoi(string);
printf("Sum of digits is %d\n", (!(n%9) && n) ? 9 : n%9);

См. Сумма всех цифр для данного положительного номера для получения полной информации.

IDEOne Link

1 голос
/ 21 марта 2019

Я напишу вам фрагмент кода, ваша задача - понять, почему он работает (подсказка, что происходит по модулю 9)

#include<stdio.h>
#include<ctype.h>
#define BUFSIZE 1024
int main()
{
        char buf[BUFSIZE];
        size_t i;
        int modsum=0;
        if (fgets(buf,BUFSIZE,stdin) == NULL)
        {
                puts("Error reading the string");
                return 1;
        }
        for (i=0;i<BUFSIZE && buf[i]!=0 && buf[i]!='\n';i++)
        {
                if (!isdigit(buf[i]))
                {
                        puts("The string is invalid");
                        return 2;
                }
                modsum=(modsum+(buf[i]-'0'))%9;
        }
        printf("%d\n",modsum?modsum:9);
        return 0;
}

Этот код будет работать для любого числа, кроме 0.

1 голос
/ 21 марта 2019
int main()
{
   int n, t, sum = 0, remainder;

   t = n;
   while (t != 0)
   {
      remainder = t % 10;
      sum       = sum + remainder;
      t         = t / 10;
   }

   printf("%d\n", sum);
   return 0;
 }

Здесь n - ваша старая сумма. Это общая идея. Пожалуйста, измените код в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...