C程 定义函数fact(n)计算n!,函数返回值类型是double。 定义函数main(),输入正整数n,计算并输出下列算式

s=n+(n-1)/2!+(n-2)/3!+......+1/n!
2025-01-05 12:32:24
推荐回答(4个)
回答1:

double s=0;
int x=1;
for(int i=1;i<=n;i++)
{
x*=i;
s+=(n-i+1)/x;
}
这样应该就可以达到你要的要求了吧 ,无需特意定义 n! 函数

回答2:

#include
double fact(int n)
{
double s=1.0;
int i;
for(i=1;i<=n;i++)
s*=i;
return s;
}
void main()
{
int i,n;
double s=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=(n+1-i)/fact(i);
printf("s=%lf\n",s);
}

回答3:

#include
double fact(int n)
{
int i;
double m=1;
for(i=1;i<=n;i++)
m=m*i;
return m;
}
void main()
{
int i,n;
double sum=0;
printf(" 输入n值");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+(n-i+1)/fact(i);
printf("s=%lf",sum);
}

回答4:

我给你写了个,你看看怎么样:
#include

/********************************************************
*函数名:fact(int n)
*函数输入参数:int n
*函数返回值:double ldfac
*函数功能:求输入参数 n 的阶乘,并通过ldfac将其阶乘返回。
*********************************************************/
double fact(int n)
{
int li;
double ldfac = 1.0;

for(li=1; li {
ldfac *= li;
}
return ldfac;
}

/********************** 主函数 *******************************
*函数功能:求和 gdsum=gin+(gin-1)/2!+(gin-2)/3!+......+1/gin!
* 并将gdsum其输出
**************************************************************/
int main()
{

int gi; /* for循环中的变量 */
int gin; /* gin为要输入的参数 */
double gdsum = 0.0; /* 求和 */

printf("please inter the n:");
scanf("%d",&gin);

for (gi=1; gi {
gdsum += (gin + 1 -gi)/fact(gi);
}

printf("the gdsum is %lf",gdsum);

return 0;
}