Является ли введенное пользователем число факториалом какого-нибудь числа - C (СИ)
Формулировка задачи:
Уже второй раз пишу, т.к. мне правильно ещё никто не помог
Нужно написать программу, которая проверяет, является ли введенное пользователем число факториалом какого-нибудь числа. И если да, то программа должна вывести это число. Т.е. если пользователь ввел "720", то программа должна вывести "6".
(Ещё, если сможете, нужна та же программа, только рекурсивным методом)
Заранее благодарю!
Решение задачи: «Является ли введенное пользователем число факториалом какого-нибудь числа»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { unsigned int n, fact = 1; int i; puts("Enter number:"); while(!scanf("%u", &n) && getchar()) puts("Error input!Try again."); for(i = 1; ; i++){ fact *= i; if(fact >= n) break; } if(fact == n) printf("%u is factorial %d\n", n, i); else puts("No"); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
n
- число, введенное пользователемfact
- факториал числаi
- счётчик цикла
- Выводится сообщение
Enter number:
для того, чтобы пользователь ввёл число. - Используется цикл while для проверки корректности ввода числа. Он будет выполняться до тех пор, пока пользователь не введет корректное число или не отправит сигнал конца файла.
- Используется цикл for для вычисления факториала числа. Он будет выполняться до тех пор, пока факториал числа
fact
меньше или равен числуn
. - Факториал числа
fact
вычисляется путем умножения всех целых чисел от 1 доi
. - Если
fact
равноn
, то выводится сообщение, содержащее числоn
и его факториалi
. - Если
fact
не равноn
, то выводится сообщениеNo
. - Код завершается возвратом 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д