C语言定义函数解决组合算法问题

问题遇到的现象和发生背景

任务描述
本关任务:编写一个用函数实现组合数的计算程序。

编程要求
组合数公式为:C(m,k)=m!/(k!(m-k)!),请实现求阶乘函数Factorial()和求组合数的函数Combination(),然后从main函数输入m,k,输出组合数。
假定输入的m和k符合条件,不需要特别处理。

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
int Factorial(int c);
int Combination(int a,int b);
int main()
{
    int m,k,p;

    printf("Input m,k(10>=m>=k>0):\n");
    scanf("%d,%d",&m,&k);//假定输入数据已经满足上述条件
    /************Begin************/
    p=Combination(m,k);
    printf("p=%d",p);
    /************End************/
    return 0;
}
//定义组合数函数
int Combination(int a,int b)
{
    int result;
    result=Factorial(a)/(Factorial(b)*Factorial(a-b));
    return result;
}
    int Factorial(int c)
{
    int i;
    for(i=1;i<=c;i++){
        i=1*i;
    }
    return i;
}

运行结果及报错内容

头歌实训输入输出结果:
数据一:8 1 预期结果:8 实际结果:0
数据二:8 2 预期结果:28 实际结果:0

电脑上Dev-C++输入输出结果:
输入任意数 输出结果:1

我的解答思路和尝试过的方法

我对程序运行顺序的理解:

img

我想要达到的结果

希望能找出是顺序问题还是编程问题

  • 阶乘错了
  • 读入错了
    #include <bits/stdc++.h>
    int Factorial(int c);
    int Combination(int a,int b);
    signed main()
    {
      int m,k,p;
      printf("Input m,k(10>=m>=k>0):\n");
      scanf("%d %d",&m,&k);//假定输入数据已经满足上述条件
      /************Begin************/
      p=Combination(m,k);
      printf("p=%d",p);
      /************End************/
      return 0;
    }
    //定义组合数函数
    int Combination(int a,int b)
    {
      int result;
      result=Factorial(a)/(Factorial(b)*Factorial(a-b));
      return result;
    }
    int Factorial(int c)
    {
      int res = 1, i;
      for(i=1;i<=c;i++){
          res *= i;
      }
      return res;
    }