5.11打卡

一、问题描述:
计算下列多项式的值:

S=1+1/1×2+1/1×2×3+...+1/1×2×3×...50

例如,从键盘输入50后,输出为1.718282

 

二、设计思路:


n的阶乘算法如下:n!=1×2×3×4×5×……×n,可用循环来实现,代码如下:for(j=1;j<=i;j++) /*i为对应的项数*/
t=t*j; /*t表示每一项的分母*/
对于每一项都是求出其分母即项数i对应的阶乘,是一个循环重复的过程,所以可用另外一层循环来控制项数,范围为1~n,代码如下:

for(i=1;i<=n;i++) /*i为每个分式对应的标记*/

)
对于存储阶乘的变量t,每一次记录新的阶乘之前都要把其值赋为1,否则下一项的阶乘值会受上一项的影响,所以在每次执行内层循环求下一项阶乘之前,要把t的值再次赋为1:t=1;。

三、程序流程图

 

 

四、代码实现

#include<stdio.h>

int main()

{

    double s=0,t;

    int i,n,j;

    printf("please input the number of n:");

    scanf("%d",&n);

    for(i=1;i<=n;i++)

    {

        t=1;

        for(j=1;j<=i;j++)

            t=t*j;

        s=s+1/t;

    }

    printf("%f",s);

}

 

posted @ 2023-05-11 19:28  恋恋恋白  阅读(20)  评论(0)    收藏  举报