C语言阶层题目,程序错哪

来源:百度知道 编辑:UC知道 时间:2024/07/06 21:48:38
#include "stdio.h"
long JC(int k)
{ long t=1,
int i;
for(i=1;i<k;i++)
t=t*i;
return t;
}
main()
{
int i=1,n,m,t;
long t1=1,t2=1,t3=1;
scanf("%d %d",&n,&m);
if(m<n)
{t=n;n=m;m=t;}
printf("%f\n",float(JC(m))/JC(n)*JC(m-n));
}
程序没有错误,但是运行结果不对,为什么
怎么改正

#include "stdio.h"
long JC(int k)
{ long t=1;
int i;
for(i=1;i<k;i++)
t+=t*i;
return t;
}
void main()
{
int i=1,n,m,t;
printf("please input m,n");
scanf("%d %d",&n,&m) ;
if(m<n)
{t=n;n=m;m=t;}
printf("%f\n",(float)(JC(m))/JC(n)*JC(m-n));
}
没有输入项是不能出来结果的,而且不知道你的long t1=1,t2=1,t3=1;有什么用~我运行过了,能出来结果

for(i=1;i<k;i++)
这句改成for(i=1;i<=k;i++)
还有类型转换格式错误
printf("%f\n",float(JC(m))/JC(n)*JC(m-n));
应该是
printf("%f\n",(float)(JC(m))/JC(n)*JC(m-n));
晕死这程序能编译通过?
long t=1,
改成long t=1;

你好:
将t=t*i 改成 t+=t*i

而且,jc(m)/jc(n)*jc(m-1) 应该是j(n)/(j(n-m)*j(m))才对吧?