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

问题描述

#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)));