3 函数加主函数 C 程序计算和显示阶乘



第一个函数需要获取数字并将其传递回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 = %dn", factorial);
    return;
}
int main()
{
    int x, factorial;
    GetData(x);
    Factorial(x);

    PrintResults(factorial);
    return(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你会得到垃圾。

#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 = %dn", 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,即使写它也是无用和混乱的。

最新更新