有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
创新互联公司是一家专业提供德兴企业网站建设,专注与网站制作、成都网站设计、HTML5建站、小程序制作等业务。10年已为德兴众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。
这个题目的数学公式可以简化,n比m小
判断n和m-n谁大,业绩是n是否大于m/2
这样可以计算,如果nm/2
m*(m-1)*...*(n+1)除以(m-n)*(m-n-1)*....*2
道理你该明白
double fact(long num)
{
for (long i = 1; num 0; num--)
{
i *= num;
}
}
int main()
{
long m;
long n;
long C;
scanf("%ld %ld", m, n);
C = fact(n) / ((fact(m)) * fact(n-m));
printf("%ld",C);
return 0;
}
新闻名称:c语言求组合数函数 c语言数组合并函数
标题路径:https://www.cdcxhl.com/article4/hiidie.html
成都网站建设公司_创新互联,为您提供品牌网站建设、虚拟主机、品牌网站设计、品牌网站制作、定制开发、手机网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联