Выведите все цифры числа N по одной, в обратном порядке, разделяя их пробелами или новыми строками - C (СИ)

Узнай цену своей работы

Формулировка задачи:

4.

Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.

Решение задачи: «Выведите все цифры числа N по одной, в обратном порядке, разделяя их пробелами или новыми строками»

textual
Листинг программы
#include <stdio.h>
 
void print_digits(FILE* _o, size_t n){
    if(n > 0){
        fprintf(_o, "%u ", n % 10);
        if((n /= 10) != 0)
            print_digits(_o, n);
    } else
        fprintf(_o, "%u ", n);
}
 
int main(void) {
    print_digits(stdout, 1234567);
    putchar('\n');
    print_digits(stdout, 0);
    return 0;
}

Объяснение кода листинга программы

В этом коде функция print_digits() выводит все цифры числа N по одной, в обратном порядке, разделяя их пробелами или новыми строками. Функция принимает два аргумента: файловый дескриптор, в который необходимо вывести результат (по умолчанию это stdout), и число N. Код выполняет следующие действия:

  1. Если число N больше 0, то функция выводит последнюю цифру числа N (n % 10), затем вызывает саму себя, уменьшив число N на 10 (n /= 10). Это продолжается до тех пор, пока число N не станет равным 0.
  2. Если число N равно 0, то функция просто выводит 0.
  3. В конце функции main() вызывается функция print_digits() для чисел 1234567 и 0. Список действий:
  4. Объявление функции print_digits()
  5. Проверка условия n > 0
  6. Вывод последней цифры числа n % 10
  7. Вызов функции print_digits() с аргументами n /= 10
  8. Если n != 0, то возврат к шагу 2
  9. Если n = 0, то вывод 0
  10. В конце функции main() вызов функции print_digits() для чисел 1234567 и 0
  11. Возврат 0 из функции main() Код работает корректно и выводит ожидаемый результат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы