首页 > 试题广场 >

例1】编写计算组合数的程序。 #include

[问答题]

例1】编写计算组合数的程序。

#include<stdio.h>
unsigned long Fact (unsigned int n);
int main()
{
int m,k;
unsigned long p
do{
printf ("Input m,k (m>=k>0):");
scanf ("%d,%d",&m,&k);
}while(m<kl lm<=0l lk<0);
p = Fact(m)/(Fact(k)*Fact(m-k));
printf ("p=%lu\n",p);
return 0;
}
/*函数功能:用迭代法计算无符号整型变量n的阶乘*/
unsigned long Fact(unsigned int n)
{
unsigned int i;
unsigned long result=1;
for (i=2;i<=n;i++)
result*=i;
return result;
}

程序的3次测试结果为:

Input m,k (m>=k>0): 3,2

p=3

Input m,k (m>=k>0): 2,3

Input m,k (m>=k>0): 3,3

p=1

Input m,k (m>=k>0):-2,-4

Input m,k (m>=k>0):4,2

p=6

1、参考例1,利用求阶乘函数Fact(),编程计算并输出从1n之间所有数的阶乘值。
2、参考例1,利用求阶乘函数Fact(),编程计算并输出1+2+……+n!的值。
2.
#include<stdio.h>
long Fact(int n)
{
    int result=1;
    for(int i=2;i<=n;i++)
        result*=i;
    return result;

int main()
{
    int n;
    long p;
    do{
        printf("Please input n(n>=1):");
        scanf("%d",&n);
    }while(n<0);
    for(int i=1;i<=n;i++)
    {
        p=Fact(i);
        printf("%2d! = %d\n",i,p);
    }
    return 0;
}

3.
#include<stdio.h>
long Fact(int n)
{
    int result=1;
    for(int i=2;i<=n;i++)
        result*=i;
    return result;

int main()
{
    int n;
    long p=0;
    do{
        printf("Please input n(n>=1):");
        scanf("%d",&n);
    }while(n<0);
    for(int i=1;i<=n;i++)
        p+=Fact(i);
    printf("%d\n",p);
    return 0;
}
发表于 2019-09-12 09:03:26 回复(0)
更多回答
推荐
1、
#include<stdio.h>
long Fact(int n);
int main()
{
int m,a;
printf("Inputm:");
scanf("%d",&m);
for(a=1;a<=m;a++)
{
printf("%d!=%ld\n",a,Fact(a));
}
return 0;
}
long Fact(int n)
{
int i;
long result=1;
for(i=2;i<=n;i++)
result*=i;
return result;
}
2、
#include<stdio.h>
long Fact(int n);
int main()
{
int m;
long ret;
printf("Inputm:");
scanf("%d",&m);
ret=Fact(m);
printf("ret=%d\n",ret);
return 0;
}
long Fact(int n)
{
int i;
long result=1,sum=0;
for(i=2;i<=n;i++)
{
result*=i;
sum=sum+result;
}
return sum;
}

发表于 2018-03-18 22:19:28 回复(0)