重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
创新互联专注于宏伟网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供宏伟营销型网站建设,宏伟网站制作、宏伟网页设计、宏伟网站官网定制、成都微信小程序服务,打造宏伟网络公司原创品牌,更为您提供宏伟网站排名全网营销落地服务。
void main()
{
void choose(int a,int b);
int a,b,c,d;
printf("请输入两个整数,以0,0结束\n");
scanf("%d,%d",a,b);
scanf("%d,%d",c,d);
if(c==0d==0)
choose(a,b);
}
void choose(int a,int b)
{
if(ba)
{
printf("error!");
}
else
{
int fenmu=b,fenzi=a;
for(int i=a-1;ia-b;i--)
fenzi*=i;
for(int j=b-1;j1;j--)
fenmu*=j;
int temp;
temp=fenzi/fenmu;
printf("%d",temp);
}
}
#includestdio.h
int fun(int n)
{ int i=1;
for(i=1;i=n;i++)
n=n*i;
return n;
}
void main()
{
int i=5,j=8,k=3;
printf("\nThis is(5!+8!)/3!= %d ",(fun(i)+fun(j))/fun(3));
} //望采纳
有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。
double
lnchoose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
if
(m
n/2.0)
{
m
=
n-m;
}
double
s1
=
0;
for
(int
i=m+1;
i=n;
i++)
{
s1
+=
log((double)i);
}
double
s2
=
0;
int
ub
=
n-m;
for
(int
i=2;
i=ub;
i++)
{
s2
+=
log((double)i);
}
return
s1-s2;
}
double
choose(int
n,
int
m)
{
if
(m
n)
{
return
0;
}
return
exp(lnchoose(n,
m));
}
用之前调用math.h头文件,用的话直接把值赋给choose()这个函数即可,直接调用上面的函数,返回一个double数值,可追问
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;
}