MT1200常数e
常数e的值可以表示为无穷级数: e=1+1/1!+1/2! +1/3! +… 1/n!编写一个程序,计算e的值,其中n是用户输入的整数。输入不考虑0,负数或者其他特殊情况。
观察此题
我们想到要使用for循环
首先我们发现要实现阶乘n
这里是一个内置的嵌套for
实现代码很简单
for(j=1;j<=i;j++)
{
temp1=j*temp1;
}
第二步我们构造外部的循环
意思是每一次我们都加上一个阶乘分之一
for (i = 1; i<=ch; i++)
{
temp1 = 1;
for (j = 1; j <=i; j++)
{
temp1 = j * temp1;
}
e = e + (1.00 / temp1);
}
但是我们注意笔者之前犯了一个错误也就是temp1忘记重新赋值
否则会出现第二次大循环的时候,temp1保存了第一次大循环里的数组,导致第二次大循环里的temp1会以第一次大循环的结果进行第二次小循环计算
所以我们写出实现代码
#include<stdio.h>
int main()
{
int ch,i,j,temp1;
double e=1.0;
scanf("%d",&ch);
for(i=1;i<=ch;i++)
{
temp1=1;
for(j=1;j<=i;j++)
{
temp1=j*temp1;
}
e=e+(1.0/temp1);
}
printf("%.2f",e);
return 0;
}
本题涉及知识点有循环结构使用和基本的输出输入知识