大一C语言(求阶乘用函数实现)求组合数

题目在图片中我的答案:#include<stdio.h>#include<math.h>double fact(int n);double mdzz(int m);double mdzza(int n,int m); int main(){ int m,n; scanf("%d %d",&m,&n); printf("%d",fact(n)/(mdzz(m)*mdzza(n,m)));}double fact(int n){ int i,p; i=n; p=1; for(;i>=1;i--) { p = i*p; } return p;}double mdzz(int m){ int i,p; i=m; p=1; for(;i>=1;i--) { p = i*p; } return p;}double mdzza(int n,int m){ int i,p; i=n-m; p=1; for(;i>=1;i--) { p = i*p; } return p;}结果是0,改成#include<stdio.h>#include<math.h>double fact(double n);double mdzz(double m);double mdzza(double n,double m); int main(){ double m,n; scanf("%d %d",&m,&n); printf("%d",fact(n)/(mdzz(m)*mdzza(n,m)));}double fact(double n){ int i,p; i=(int)n; p=1; for(;i>=1;i--) { p = i*p; } return p;}double mdzz(double m){ int i,p; i=(int)m; p=1; for(;i>=1;i--) { p = i*p; } return p;}double mdzza(double n,double m){ int i,p; i=(int)(n-m); p=1; for(;i>=1;i--) { p = i*p; } return p;}结果还是0哪里有错????????????

有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。追问

改成这样之后还是不行,还有哪里错了?

追答

scanf还用%d,只有printf用%.0f

追问

已经解决了

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网