#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