//(1) 定义函数fact(n)计算n的阶乘:n!=1*2*……*n,函数返回值类型是double。
//(2) 定义函数cal(m,
n)计算累加和:s=Sigma(k=m,n)k=m+(m+1)+...+n ,函数返回值类型是double。
//(3) 定义函数main(),输入正整数n,计算并输出下列算式的值。该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算Sigma
k(k=m,n) ;每一项的分母是阶乘,要求调用函数fact(n)计算n!。
//y=1+(1+2)/2!+(1+2+3)/3!+...+(1+2+... ...+n)/n!
.
#include
//1
double fact(int n)
{
int i;
double f=1.0;
for(i=1;i<=n;i++)
f*=i;
return f;
}
//2
double cal(int m,int n)
{
int i;
double sum=0.0;
for(i=m;i<=n;i++)
{
sum+=i;
}
return sum;
}
//3.
void main()
{
int i,n;
double y=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
y+=cal(1,i)/fact(i);
}
printf("%.3f\n\n",y);
}
//2007年秋 浙江省C语言二级试题最后一道编程题
//从n个不同的元素中,每次取出k个不同的元素,不管其顺序合并成一组,称为组合。组合种数计算公式如下:
//Cnk=n!/((n-k)!*k!)
//(1) 定义函数fact(n)计算n的阶乘 n!,函数返回值类型是double。
//(2) 定义函数cal(k,
n)计算组合数,函数返回值类型是double,要求调用函数fact(n)计算n的阶乘。
//(3) 定义函数main(),输入正整数n,输出n的所有组合数
Cnk(1≤k≤n),要求调用函数cal(k,n)计算组合数。
#include
//(1) 定义函数fact(n)计算n的阶乘
n!,函数返回值类型是double。
double fact(int n)
{
int i;
double fac=1.0;
for(i=1;i<=n;i++)
{
fac*=i;
}
return fac;
}
//(2) 定义函数cal(k,
n)计算组合数,函数返回值类型是double,要求调用函数fact(n)计算n的阶乘。
double cal(int k,int n)
{
double com=fact(n)/(fact(n-k)*fact(k));
return com;
}
//(3) 定义函数main(),输入正整数n,输出n的所有组合数
Cnk(1≤k≤n),要求调用函数cal(k,n)计算组合数。
void main()
{
int k,n;
double Cnk;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
Cnk=cal(k,n);
printf("C%d_%d=%.3f\n",n,k,Cnk);
}
printf("\n\n");
}