题目在图片中我的答案:#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()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。追问
改成这样之后还是不行,还有哪里错了?
scanf还用%d,只有printf用%.0f
追问已经解决了