c语言入门-for语句n的阶乘

#include <stdio.h>

int main()
{
int n,i;
scanf("%d",&n);

for(i=1;i<n;i++){
    n*=i;
}
printf("%d\n",n);

}

为什么算不出n的阶乘的结果?

因为你的for循环里判断条件用了 i < n,而这个 n 又在循环体里做了运算,n 会越来越大直到溢出,i<n的条件就不会正确达成,两个地方不用同样的变量就可以了

供参考对照,见注释:

#include <stdio.h>
int main()
{
    int n,i,f=1;     //修改,增加变量 f
    scanf("%d",&n);
    for(i=1;i <= n;i++){//修改 i<=n
        f*=i;
    }
    printf("%d\n",f);
    
    return 0;
}

输入3的时候,答案是-458131456