Выведите все цифры числа 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. Код выполняет следующие действия:
- Если число N больше 0, то функция выводит последнюю цифру числа N (n % 10), затем вызывает саму себя, уменьшив число N на 10 (n /= 10). Это продолжается до тех пор, пока число N не станет равным 0.
- Если число N равно 0, то функция просто выводит 0.
- В конце функции main() вызывается функция print_digits() для чисел 1234567 и 0. Список действий:
- Объявление функции print_digits()
- Проверка условия n > 0
- Вывод последней цифры числа n % 10
- Вызов функции print_digits() с аргументами n /= 10
- Если n != 0, то возврат к шагу 2
- Если n = 0, то вывод 0
- В конце функции main() вызов функции print_digits() для чисел 1234567 и 0
- Возврат 0 из функции main() Код работает корректно и выводит ожидаемый результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д