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

问题描述 投票:0回答:2

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

程序计算输入数字的阶乘。我需要保留 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);
}
c++ for-loop parameter-passing factorial modular-design
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
你将得到垃圾,正如你所说。


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 PrintResult(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(factorial); // Print that variable
    return 0;
}

我删除了 GetData 中的

return;
,因为 void 函数隐式返回。

© www.soinside.com 2019 - 2024. All rights reserved.