【发布时间】:2013-04-16 18:16:00
【问题描述】:
我编写了一个程序来对用户输入的数字进行阶乘。它是用于赋值的,必须写入,以便第一个函数读取一个值,然后将其传递给主函数,然后主函数将其传递给第二个函数,该函数计算数字的阶乘,然后将其打印给用户。问题是它一直显示“1”作为每个数字的阶乘。我做错了什么?
#include <stdio.h>
int getValue()
{
int n;
printf("Enter number: ");
scanf("%d%*c", &n);
return(n);
}
int factorial(int n)
{
int i, f;
f=1;
for(i=1; i<=n; i++)
f=f*i;
printf("The factorial is: %d", f);
return(f);
}
int main()
{
int f;
getValue();
factorial(f);
return(0);
}
【问题讨论】:
-
你不要使用
getvalue()返回的值 -
main调用的时候不是传入了吗?
-
没有。假设函数返回值
5。您的 main 函数的行为就像语句getValue();被替换为5;:该值从未使用过。 -
对了!那么现在我如何将这个值从主函数传递给我的第二个函数?
-
只需执行
f = getValue();就好像你写了f = 5;然后变量f被赋值,你可以在其他语句中使用该值。
标签: c function parameters parameter-passing