Мне нужно найти сумму цифр числа. Например, сумма цифр номера 1123 1 + 1 + 2 + 3 = 7Найдите сумму цифр числа (в с)
Моя идея:
1) Пользователь вводит и целое число
2) рассчитать количество цифры в цифрах (в случае выше - 4 цифры)
3) Вместо использования для цикла я делю число пользователей на 10 на мощность 1,2 ... до количества цифр (не считая последнего) и суммируем числа.
Вот мой код:
int main (void)
{
int result,sum,n;
int div = 10,counter = 0,number;
printf("Enter the integer:");
scanf("%i",&number);
while(result >0){
result = number/div;
div *= 10;
++counter;
}
printf("The number consists of %i digits\n",counter);
sum = 0;
for(n=1;n<counter;++n){
sum += number/pow(10,n);
}
printf("%i",sum);
return 0;
}
первая часть (в то время как петля) отдельно работает правильно. Но вместе со второй частью (для цикла) это дает мне неправильный результат (0 цифр из цикла while и сумма также равна нулю). Можете ли вы объяснить, почему это происходит? Как я могу исправить свое решение?
P.S Я знаю, что существуют более эффективные решения моей проблемы, но я хочу использовать свой собственный алгоритм.
не следует вводить непосредственно в междунар. ввод как строка. что делает вычисление длины тривиальным, а затем вы обрабатываете строку как char aarray и loop на отдельных цифрах, преобразуя их в int и добавляя –
. Делясь по степеням '10', вы не получите цифр. Вам нужно использовать модуль '10' вместе с ним. –
'div * = 10;' будет проблемой после ее переполнения. – chux