#include <stdio.h>
int f( int x );
int main ()
{
int body,head,left,right,m,n;
scanf("%d %d",&m,&n);
int a;
head = f(n);//求出分子部分
left = f(m);//求出分母部分的左边(m!)
a = n - m;
right = f(a);//求出分母部分的右边(n - m )!
body = left * right;//分母部分
printf("result = %d",head / body );
}
int f(int x)//对x进行阶乘
{
int i;
int sum=1;
for(i=1;i<=x;i++)
{
sum *= i;
}
return sum;
}
代码没啥问题,运行结果也没问题,m=3,n=6测试结果也没问题,是不是题目有问题。。。
剩下的问题就是数据类型的问题了,题目要求范围在double范围内,所以,你的函数需要修改为double类型,代码修改如下:
#include <stdio.h>
double f( int x );
int main ()
{
double body,head,left,right;
int m,n;
scanf("%d %d",&m,&n);
int a;
head = f(n);//求出分子部分
left = f(m);//求出分母部分的左边(m!)
a = n - m;
right = f(a);//求出分母部分的右边(n - m )!
body = left * right;//分母部分
printf("result = %g",head / body );
return 0;
}
double f(int x)//对x进行阶乘
{
int i;
double sum=1;
for(i=1;i<=x;i++)
{
sum *= i;
}
return sum;
}
我前几天刚写到这个,哈哈