【问题标题】:cant get program to calculate correct factorial of a number无法让程序计算一个数字的正确阶乘
【发布时间】: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


【解决方案1】:

你没有设置f 这应该可以解决你的问题:

int main()
{
    int f = getValue();
    factorial(f);

    return(0);
}

我假设您的代码中有 scanf 的拼写错误,因为否则它不会编译,但应该是:

scanf("%d%*c", &n);
            ^  

【讨论】:

  • 我试过了,现在它不打印任何东西作为阶乘?是的,对不起,这是一个错字
  • @user2147550 我更新了我的答案更具体,你可以看到它在这里工作liveworkspace.org/code/2PteiA$7
猜你喜欢
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2016-06-19
  • 2023-03-22
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多