第一个函数需要获取数字并将其传递回主函数,然后需要将该值传递到第二个函数,该函数计算阶乘并将该值传递回主函数,结果在第三个也是最后一个函数中打印。
程序计算输入数字的阶乘。我需要保留 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);
}
首先,您应该将呼叫
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 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 函数隐式返回。