编写计算组合数的程序

编写计算组合数的程序。要求输入数据要有容错功能。
**输入格式要求:"%d,%d" 提示信息:"Input m,k (m>=k>0):"
**输出格式要求:"p = %.0f\n"
程序运行示例1如下:

Input m,k (m>=k>0):3,2
p = 3
程序运行示例2如下:
Input m,k (m>=k>0):2,3
Input m,k (m>=k>0):3,3
p = 1 
Input m,k (m>=k>0):-2,-4
Input m,k (m>=k>0):4,2
p = 6

这是问题,下面是我编的程序:

#include<stdio.h>
#include<math.h>
double Combination(int a,int b);
long Fact(int n);
int main()
{
    printf("Input m,k (m>=k>0):");
    int m,k,ret;
    scanf("%d,%d",&m,&k);
    ret=Combination(m,k);
    printf("p = %.0f\n",ret);
}

double Combination(int a,int b)
{
    double result;
    a=fabs(a);
    b=fabs(b);
    if(a>=b&&b>0)
    {
        result=Fact(a)/(Fact(b)*Fact(a-b));
        return result;
    }
    else
    {
        result=Fact(b)/(Fact(a)*Fact(b-a));
        return result;
    }
}

long Fact(int n)
{
    int i;
    long result=1;
    for(i=2;i<=n;i++)
    {
        result*=i;
    }
    return result;
}

刚开始接触函数这部分,Combination为计算组合数的函数,其中还用到了Fact函数用来求阶乘,请问可以这么写吗?问题到底出在哪里呢?
烦请各位指点,不胜感激!

结果好像是对的。你为什么要用浮点数呢?

我想了想,中间还是有点缺陷,没有考虑a或者b其中有一个为0的情况,后面补上了。
不过输出一直是0,问题是不是出在用一个函数调用另一个函数上呢?

#include<stdio.h>
double conbination(int m, int k);
int jc(int n);
int main()
{
int m, k;
do
{
printf("Input m,k (m>=k>0):");
scanf(" %d, %d", &m, &k);
}
while (m < k || m <= 0 || k <= 0);
printf("p = %.0f\n", conbination(m, k));

}
double conbination(int m, int k)
{
return jc(m) / (jc(k) * jc(m - k));

}
int jc(int n)
{

int result;
if (n == 1)
{
    result = n;
    return result;
}
else
{
    result = n * jc(n - 1);
}
return result;

}
#include<stdio.h>
double conbination(int m, int k);
int jc(int n);
int main()
{
int m, k;
do
{
printf("Input m,k (m>=k>0):");
scanf(" %d, %d", &m, &k);
}
while (m < k || m <= 0 || k <= 0);
printf("p = %.0f\n", conbination(m, k));

}
double conbination(int m, int k)
{
return jc(m) / (jc(k) * jc(m - k));

}
int jc(int n)
{

int result;
if (n == 1)
{
    result = n;
    return result;
}
else
{
    result = n * jc(n - 1);
}
return result;

}