微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有人请告诉我为什么我的代码给我错误的答案,程序应该接受整数输入并给出相应的阶乘

如何解决有人请告诉我为什么我的代码给我错误的答案,程序应该接受整数输入并给出相应的阶乘

#include<stdio.h>

int factorial_calculator(int n);

void main()
{
    int n;

    printf("Enter a number to get its factorial: ");
    scanf("%d",&n);
    printf("The factorial of %d is %d\n",n,factorial_calculator(n));
}//end main

int factorial_calculator(int n)
{
    int factorial;
    int number;

    for(number=1;number<=n;number++)
    {
        factorial=factorial*number;
        return factorial;
    }
}//end factorial_Calculator

解决方法

您不应在循环正文中return

for(number=1;number<=n;number++)
{
    factorial=factorial*number;
    return factorial;
}

应该是

for(number=1;number<=n;number++)
{
    factorial=factorial*number;
}
return factorial;

否则,您将在for循环的第一次迭代中返回该值。

另外,正如@spartygw在评论中指出的那样,您还需要初始化factorial
int factorial = 1;

并为main使用正确的签名:int main(void)代替void main()

此外,由于scanf可能失败,因此请初始化n

int n = 0;

并传递n的绝对值,以避免在输入负数时出现无限循环:

printf("The factorial of %d is %d\n",n,factorial_calculator(abs(n)));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。