有两个问题,一个是fact()函数里的p应该定义成double类型,第二个是printf()不应该用%d输出double类型的值,应该用%.0f或者%.0lf
创新互联专注骨干网络服务器租用十多年,服务更有保障!服务器租用,成都联通服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
顺便说一句,这个问题只要定义fact()一个函数就够了,输出的时候用
printf("result = %.0f\n",fact(n)/(fact(m)*fact(n-m)));
另外两个函数删掉就可以了。
#includestdio.h
int c(int n,int m){
int i,s=1;
for(i=m;i=m-n+1;i--)s*=i;
for(i=n;i=2;i--)s/=i;
return s;}
int f(int k,int m,int n){
int i,s=0;
for(i=k;i=k+n;i++)s+=c(i,m);
return s;}
int main(){
int k,m,n;
printf("输入k,m,n\n");
scanf("%d%d%d",k,m,n);
printf("%d",f(k,m,n));
return 0;}
#include stdio.h
int cc(int a[], int n, int k, int t)
{
int b[128];
int i, j, m;
if (n == k)
{
for(i=0; in; i++)
{
printf("%8d", a[i]);
}
printf("\n");
return 0;
}
for (m=0; mt; m++)
{
j = 0;
for (i=0; in; i++)
{
if (i == m)
continue;
b[j++] = a[i];
}
cc(b, n-1, k, m);
}
return 0;
}
int main ()
{
int n, k;
int i;
int s[128];
printf("请输入n:");
scanf("%d", n);
printf("请输入k:");
scanf("%d", k);
for (i=0; in; i++)
s[i] = i;
cc(s, n, k, n);
return 0;
}
你自己再改改,我是写到标准输出了,你改成写到数阻里就可以了。