祖安呆木木
2021-01-14 21:01
采纳率: 100%
浏览 9

萌新求助!c语言算n的阶乘,不知道我错在哪?

如题,写完以后不管输入什么都得0,在线蹲一个大佬OvO

源代码:

#include<stdio.h>
int main()
{
    int n;
    int a=0;
    scanf("%d",&n);
    if(n=0)
    {
            printf("%d",a);
    }
    else
    {
        do
        {
            a=n*(n-1);
            n=n-1;
        }
        while(n>=2);
    }
    printf("%d",a);
}
 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • include_iostream_ 2021-01-14 21:54
    最佳回答

    修改后程序第八行if(n=0)有错。C语言中=运算符只有赋值含义,其返回值为赋值符号右端表达式的值,也就是恒为0。应修改为判断相等==运算符(两个等号)。

    在你的第二个代码中,由于n=0的值恒为0,if(n=0)永远不会执行,则else执行。此时n为0,a为输入值。else中的do一定只执行一次(n此时值为2,不符合while条件),执行时,n-1=-1乘上a,自然就是输入的相反数。

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题