yushan__
2021-09-13 23:38
采纳率: 100%
浏览 32

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的阶乘的结果?

  • 收藏

3条回答 默认 最新

  • 我秃了,但没强 2021-09-14 09:49
    已采纳

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

    1 打赏 评论
  • qzjhjxj 2021-09-14 00:05

    供参考对照,见注释:

    #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;
    }
    
    
    1 打赏 评论
  • yushan__ 2021-09-13 23:40

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

    打赏 评论

相关推荐 更多相似问题