3功能加主要功能C程序计算和显示因子

时间:2017-05-11 12:27:13

标签: c++ for-loop parameter-passing factorial modular-design

第一个函数需要获取数字并将其传递回main,然后需要将此值传递给第二个函数,该函数计算阶乘并将该值传递回main,结果将在第三个和最后一个中打印出来功能

程序计算输入数字的阶乘。我需要保持for循环。我不确定出了什么问题,我得到了垃圾值,所以我觉得我在某个地方丢失了一个值,或者没有存储价值。

也欢迎任何一般帮助。

error while loading shared libraries: libboost_regex.so.1.64.0: cannot open shared object file: No such file or directory

2 个答案:

答案 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,即使编写它也没用,也很困惑。