Нужна помощь в выполнении упражнения с циклами C

#c

#c

Вопрос:

Из книги Кэя Хорстманна «C для всех», глава 4: Циклы

Напишите программу, которая суммирует сумму всех нечетных цифр n. (Например, если n равно 32677, сумма будет равна 3 7 7 = 17)

Я не знаю, как заставить компьютер «видеть» числа, например, разделять их

Ответ №1:

n % 10 возвращает значение единицы. Вы можете разобраться с этим оттуда, верно?

Комментарии:

1. Да, я понял это. Я просто не подумал о том, чтобы потом разделить число на 10

Ответ №2:

Вот подсказка. В C есть оператор modulus % . При делении двух чисел будет получен остаток. Итак, если бы я хотел узнать последнюю цифру в числе, которое было больше 10, я бы построил по модулю 10 и получил результат

 int lastDigit = number % 10;
  

Ответ №3:

Последняя цифра целого числа с основанием 10 i равна i % 10 . (Для справки, % это оператор modulus; он в основном возвращает остаток от деления левого числа на правое.)

Итак, теперь у вас есть последняя цифра. Как только вы это сделаете, добавьте это к текущему итогу, который вы сохраняете, разделите i на 10 (фактически сдвигая цифры вниз на одну единицу) или, в вашем случае, на 100 (две единицы) и начните с начала. Повторяйте до i == 0 .

Ответ №4:

Люди здесь скорее не предоставляют вам ответ на ваше упражнение, а предоставляют вам подсказки, чтобы вы могли найти ответ самостоятельно и, что более важно, понять его.

Для начала вам помогут следующие арифметические операции:

 loop:
  right_most_digit = n % 10
  n = n / 10
end_loop