第一个函数需要获取数字并将其传递回main,然后需要将此值传递给第二个函数,该函数计算阶乘并将该值传递回main,结果将在第三个和最后一个中打印出来功能
程序计算输入数字的阶乘。我需要保持for循环。我不确定出了什么问题,我得到了垃圾值,所以我觉得我在某个地方丢失了一个值,或者没有存储价值。
也欢迎任何一般帮助。
error while loading shared libraries: libboost_regex.so.1.64.0: cannot open shared object file: No such file or directory
答案 0 :(得分:1)
首先,您应该将对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 :(得分:0)
#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
,即使编写它也没用,也很困惑。