0

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

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

也感谢任何一般帮助。

#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);
}
4

2 回答 2

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你会得到垃圾。

于 2017-05-11T12:30:46.623 回答
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;的函数 return void,即使编写它也是无用且令人困惑的。

于 2017-05-11T12:37:14.347 回答