#include<stdio.h>
/unsigned long fact(int n)//为啥函数放在主函数下就不对了
{
int i,q=1;
for(i=1;i<=n;i++)
q=i;
return q;
}*/
int main(void)
{
int m,k;
int a,b;
scanf("%d%d",&m,&k);
a=fact(m);
b=fact(k)fact(m-k);
printf("%d\n",a/b);
return 0;
}
unsigned long fact(int n)//为啥函数放在主函数下就不对了
{
int i,q=1;
for(i=1;i<=n;i++)
q=i;
return q;
那你放在那里是对的呢?阶乘数值很大,m到13用int型就溢出了,建议你用long long或者double来存储阶乘值
#include <stdio.h>
unsigned long fact(int n); //要在主函数前面声明下
int main(void)
{
int m, k;
int a, b;
scanf("%d%d", &m, &k);
a = fact(m);
b = fact(k);
fact(m - k);
printf("%d\n", a / b);
return 0;
}
unsigned long fact(int n) //为啥函数放在主函数下就不对了
{
int i, q = 1;
for (i = 1; i <= n; i++)
q = i;
return q;
}