萌新求助!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);
}
 

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

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

我又修改了一下,写出了这个,不知道为啥又成了输出相反数,我哭了呀

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

感谢大佬!!学到了哈哈