3 Функция плюс Основная функция C Программа расчета и отображения факториала

Первая функция должна получить число и передать его обратно в main, затем это значение нужно передать во вторую функцию, которая вычисляет факториал и передает это значение обратно в main с результатом, печатаемым в третьей и последней функции.

Программа рассчитывает факториал числа, которое вводится. Мне нужно держать цикл. Я не уверен, что происходит не так, я возвращаю значения мусора, поэтому я думаю, что теряю значение где-то или не сохраняю значение.

Также приветствуется любая общая помощь.

#include <stdio.h>

void GetData(int &x)
{
printf("Please enter a number:\n");
scanf("%d%*c", &x);

return;
}

int Factorial(int x)
{
int factorial = 1;
int i;

for(i = 1; i <= x; i++)
{
factorial = factorial * i;
}

return(x);
}

void PrintResults(int factorial)
{
printf("The factorial = %d\n", factorial);

return;
}

int main()
{
int x, factorial;

GetData(x);

Factorial(x);PrintResults(factorial);

return(0);
}

0

Решение

Прежде всего, вы должны изменить свой звонок на GetData к:

GetData(&x);

как вы хотите передать указатель. Затем его объявление должно измениться на:

void GetData(int *x)
{
printf("Please enter a number:\n");
scanf("%d%*c", x);
}

Затем вы должны вернуть переменную factorial вместо x, Изменить строку:

return(x);

к:

return(factorial);

и, следовательно, позвонить Factorial функционировать следующим образом:

factorial = Factorial(x);

как сейчас, переменная factorial неинициализирован, и, передав его Factorial вы будете получать мусор, как вы сказали.

1

Другие решения

#include <stdio.h>

void GetData(int &x)
{
printf("Please enter a number:\n");
scanf("%d%*c", &x);
}

int Factorial(int x)
{
int factorial = 1;

for(int i = 1; i <= x; i++)
{
factorial = factorial * i;
}

return(factorial);
}

void PrintResults(int factorial)
{
printf("The factorial = %d\n", factorial);
}

int main()
{
int x; // Declaring x;
getData(x); // Initializing x
int factorial = Factorial(x); // Using x to compute factorial and store result in variable
printResult(factorail); // Print that variable
}

Попробуйте, это должно сработать, но я не могу скомпилировать его в данный момент.
Я не использовал указатель, так как вы, кажется, не нуждались в них, но предпочли использовать C ++?

Я удалил твой return;как ваши функции возвращаются void, бесполезно и запутанно даже писать это.

0

По вопросам рекламы [email protected]