C语言中用子函数求阶乘

#include "stdio.h"
void main()
{double C;
double jc(double n);
int n,m;
scanf("%d,%d",&m,&n);
C=jc(n)/(jc(n-m)*jc(m));
printf("C=%ld\n",C);
}
double jc(int n)
{double s=1,i;
for(i=1;i<=n;i++)
s=s*i;
return(s);
}

//正确的程序如下:
#include "stdio.h"
void main()
{double C;
double jc(int n); //改过!改过!改过!改过!改过!改过!
int n,m;
scanf("%d,%d",&m,&n);
C=jc(n)/(jc(n-m)*jc(m));
printf("C=%lf\n",C); //改过!改过!改过!改过!改过!改过!
}
double jc(int n)
{double s=1,i;
for(i=1;i<=n;i++)
s=s*i;
return(s);
}

//运行情况如下,输入的两个数用逗号分隔,且大数在后。
2,5
C=10.000000
请按任意键继续. . .
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-19
#include "stdio.h"
void main()
{double C;
double jc(int n);//double改成int n
int n,m;
scanf("%d,%d",&m,&n);
C=jc(n)/(jc(n-m)*jc(m));
printf("C=%.0lf\n",C);//%ld改成%.0lf
}
double jc(int n)
{double s=1,i;
for(i=1;i<=n;i++)
s=s*i;
return(s);
}追问

还是一样的问题哦,运行的结果总是0

追答

应该是你输入有问题吧,中间那个逗号要记得输入,而且要英文状态的。
另外第一个数应该比第二个数小,否则结果为0

要不改成用空格隔开的方式吧,这样不容易出错。

#include "stdio.h"
void main()
{double C;
double jc(int n);//double改成int n
int n,m;
scanf("%d %d",&m,&n);
C=jc(n)/(jc(n-m)*jc(m));
printf("C=%.0lf\n",C);//%ld改成%.0lf
}
double jc(int n)
{double s=1,i;
for(i=1;i<=n;i++)
s=s*i;
return(s);
}