初学者,可以帮忙看看为什么下面的代码运行结果是0吗?

一个求组合数的

 

# include <stdio.h>

int J(int a)
{
    int i;
    if(a==0)
        return 1;
    for(i = 1 ; i<=a ; i++)
        a = a * i;
    return a;
}

int C(int a , int b)
{
    if(b==0)
        return 1;
    return J(a) / J(b) / J(a-b);
}

int main()
{
    int a=0 , b=0 ; 
    scanf("%d%d" , &a , &b);
    if(b > a || b < 0)
        printf("Wrong");
    else 
        printf("%d" , C(a,b));
    return 0 ;
}
 

# include <stdio.h>

int J(int a)
{
    int i,n=1;
    if(a==0)
        return 1;
    for(i = 1 ; i<=a ; i++)
        n = n * i;
    return n;
}

int C(int a , int b)
{
    if(b==0)
        return 1;
    return J(a) / J(b) / J(a-b);
}

int main()
{
    int a=0 , b=0 ; 
    scanf("%d%d" , &a , &b);
    if(b > a || b < 0)
        printf("Wrong");
    else 
        printf("%d" , C(a,b));
    return 0 ;
}

 

为什么结果不是这样呢?你认为结果应该是什么?哪里的执行不符合你的预期?